Compare commits

...

19 Commits

Author SHA1 Message Date
Henry
bd076d5efe chore: remove spacing 2025-06-16 22:50:05 +01:00
Henry
0757855451 fix: remove log 2025-06-16 22:45:48 +01:00
Henry
d65244f94d fix: copy static files 2025-06-16 22:42:58 +01:00
Henry
290b72660c fix: log contents of build 2025-06-16 22:36:06 +01:00
Henry
2dad48d223 fix: remove workdir 2025-06-16 22:30:12 +01:00
Henry
5125a735e5 fix: add logs to debug 2025-06-16 22:26:59 +01:00
Henry
aba9f972a8 fix: copy files from inside the container 2025-06-16 22:23:44 +01:00
Henry
b90defa872 fix: set workdir 2025-06-16 22:19:28 +01:00
Henry
8d5bd61474 fix: copy from root 2025-06-16 22:11:57 +01:00
Henry
eeedc77a0f fix: update Dockerfile to copy static files from apps/web directory 2025-06-16 22:07:19 +01:00
Henry
4f152e1224 fix: update Dockerfile to use /bin/sh for entrypoint execution 2025-06-16 21:43:24 +01:00
Henry
4d48bf140d fix: copy static files to standalone dir 2025-06-16 21:39:59 +01:00
Henry
1c75a948f9 feat: setup postgres with docker compose (#85)
* feat: add postgres to docker compose

* feat: run migrations via entrypoint

* chore: tidy .env.example

* fix: allow empty strings for optional envs

* fix: remove external from kan-network

* chore: update readme
2025-06-14 22:52:27 +01:00
Henry
3a48c797b7 feat: set web port with env variable 2025-06-13 22:03:57 +01:00
Henry
b838e8040a fix: remove version from docker compose (#81) 2025-06-13 21:43:05 +01:00
Henry
f0e3c4c3e2 fix: render comments inside contenteditable (#79) 2025-06-13 09:23:55 +01:00
Henry
d6b0b5cd80 Revert "chore: optimize Docker build with multi-stage process and add standalone Next.js output (#75)"s
This reverts commit 1707557bea.
2025-06-12 22:26:59 +01:00
LovelessCodes
1707557bea chore: optimize Docker build with multi-stage process and add standalone Next.js output (#75) 2025-06-12 22:12:24 +01:00
Henry
f6114a56af chore: patch migration order (#74) 2025-06-10 21:15:47 +01:00
13 changed files with 2493 additions and 707 deletions

View File

@@ -1,28 +1,39 @@
POSTGRES_URL=
# https://github.com/kanbn/kan?tab=readme-ov-file#environment-variables-)
EMAIL_FROM=
# Required environment variables
NEXT_PUBLIC_BASE_URL= # e.g. https://kan.bn
BETTER_AUTH_SECRET= # Random 32+ char string (can gen with: openssl rand -base64 24 | tr -dc 'a-zA-Z0-9' | head -c 32)
POSTGRES_URL= # e.g. postgresql://kan:your_password@your_host:5432/kan
# Only required if deploying from compose
POSTGRES_PASSWORD=
# SMTP (optional)
SMTP_HOST=
SMTP_PORT=
SMTP_PORT=465 # Port 587 will not work
SMTP_USER=
SMTP_PASSWORD=
EMAIL_FROM= # e.g. "Kan <hello@mail.kan.bn>"
NEXT_PUBLIC_BASE_URL=
NEXT_PUBLIC_STORAGE_URL=
NEXT_PUBLIC_AVATAR_BUCKET_NAME=
NEXT_PUBLIC_ALLOW_CREDENTIALS=
NEXT_PUBLIC_DISABLE_SIGN_UP=
# S3 storage (optional)
S3_REGION=
S3_ENDPOINT=
S3_ACCESS_KEY_ID=
S3_SECRET_ACCESS_KEY=
NEXT_PUBLIC_STORAGE_URL=
NEXT_PUBLIC_AVATAR_BUCKET_NAME=
NEXT_PUBLIC_STORAGE_DOMAIN=
BETTER_AUTH_SECRET=
BETTER_AUTH_TRUSTED_ORIGINS=
# Auth config (optional)
NEXT_PUBLIC_ALLOW_CREDENTIALS=
NEXT_PUBLIC_DISABLE_SIGN_UP=
# Integration providers (optional)
TRELLO_APP_API_KEY=
TRELLO_APP_SECRET=
# OAuth providers (optional)
BETTER_AUTH_TRUSTED_ORIGINS=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
DISCORD_CLIENT_ID=

View File

@@ -47,34 +47,67 @@ See our [roadmap](https://kan.bn/kan/roadmap) for upcoming features.
## Self Hosting 🐳
### PostgreSQL Database Setup
The easiest way to self-host Kan is with Docker Compose. This will set up everything for you including your postgres database.
Kan requires a PostgreSQL database. You can run one using the official PostgreSQL Docker image:
1. Create a new file called `docker-compose.yml` and paste the following configuration:
```bash
# Run PostgreSQL in a container using the official postgres image
docker run -d \
--name kan-db \
-e POSTGRES_DB=kan \
-e POSTGRES_USER=kan_user \
-e POSTGRES_PASSWORD=your_secure_password \
-p 5432:5432 \
-v kan_postgres_data:/var/lib/postgresql/data \
postgres:15
```yaml
services:
web:
image: ghcr.io/kanbn/kan:latest
container_name: kan-web
ports:
- "3000:3000"
networks:
- kan-network
environment:
NEXT_PUBLIC_BASE_URL: http://localhost:3000
BETTER_AUTH_SECRET: your_auth_secret
POSTGRES_URL: postgresql://kan:your_postgres_password@postgres:5432/kan_db
NEXT_PUBLIC_ALLOW_CREDENTIALS: true
depends_on:
- postgres
restart: unless-stopped
# Your POSTGRES_URL should be:
# postgres://kan_user:your_secure_password@your_host:5432/kan
postgres:
image: postgres:15
container_name: kan-db
environment:
POSTGRES_DB: kan_db
POSTGRES_USER: kan
POSTGRES_PASSWORD: your_postgres_password
ports:
- 5432:5432
volumes:
- kan_postgres_data:/var/lib/postgresql/data
restart: unless-stopped
networks:
- kan-network
networks:
kan-network:
volumes:
postgres_data:
```
### Kan Application Deployment
Deploy Kan with Docker using our pre-built image:
2. Start the containers in detached mode:
```bash
docker pull ghcr.io/kanbn/kan:latest && docker run -it -p 3000:3000 --env-file .env ghcr.io/kanbn/kan:latest
docker compose up -d
```
Make sure to create a `.env` file with the required environment variables (see the Environment Variables section below).
3. Access Kan at http://localhost:3000
The application will be running in the background. You can manage the containers using these commands:
- To stop the containers: `docker compose down`
- To view logs: `docker compose logs -f`
- To restart the containers: `docker compose restart`
For the complete Docker Compose configuration, see [docker-compose.yml](./docker-compose.yml) in the repository.
> **Note**: The Docker Compose configuration shown above is a minimal example. For a complete setup with all features (email, OAuth, file uploads, etc.), you'll need to create a `.env` file with the required environment variables. See the Environment Variables section below for the full list of available options.
## Local Development 🧑‍💻

View File

@@ -53,8 +53,14 @@ RUN --mount=type=cache,id=pnpm,target=~/.pnpm-store pnpm install --frozen-lockfi
# Copy source code of isolated subworkspace
COPY --from=pruner /app/out/full/ .
RUN pnpm build --filter=${PROJECT}
# Copy static files to standalone directory
RUN mkdir -p apps/web/.next/standalone/.next && \
mv apps/web/public apps/web/.next/standalone/ && \
mv apps/web/.next/static apps/web/.next/standalone/.next/
# 4. Final image - runner stage to run the application
FROM base AS runner
ARG APP_DIRNAME
@@ -75,6 +81,5 @@ ARG PORT=3000
ENV PORT=${PORT}
EXPOSE ${PORT}
# Run migration on start for now (until we have a better way to handle this)
CMD ["sh", "-c", "cd /app && pnpm db:migrate && cd /app/apps/web && pnpm start"]
CMD ["/bin/sh", "./entrypoint.sh"]

16
apps/web/entrypoint.sh Normal file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
# Run migrations from the Turborepo root context
echo "Running database migrations..."
# Navigate to the Turborepo root to run the db:migrate command
pnpm --prefix /app db:migrate
# Check if migration was successful
if [ $? -ne 0 ]; then
echo "\nDatabase migration failed! Exiting."
exit 1
fi
echo "\nStarting Next.js application..."
# Start the Next.js application from the web app's directory
exec node .next/standalone/apps/web/server.js

View File

@@ -10,6 +10,7 @@ configureRuntimeEnv();
/** @type {import("next").NextConfig} */
const config = {
output: "standalone",
reactStrictMode: true,
/** Enables hot reloading for local packages without a build step */

View File

@@ -17,8 +17,11 @@ export const env = createEnv({
BETTER_AUTH_SECRET: z.string(),
BETTER_AUTH_TRUSTED_ORIGINS: z
.string()
.refine((s) =>
s.split(",").every((l) => z.string().url().safeParse(l).success),
.transform((s) => (s === "" ? undefined : s))
.refine(
(s) =>
!s ||
s.split(",").every((l) => z.string().url().safeParse(l).success),
)
.optional(),
POSTGRES_URL: z.string().url(),
@@ -82,11 +85,17 @@ export const env = createEnv({
NEXT_PUBLIC_STORAGE_DOMAIN: z.string().optional(),
NEXT_PUBLIC_ALLOW_CREDENTIALS: z
.string()
.refine((s) => s.toLowerCase() === "true" || s.toLowerCase() === "false")
.transform((s) => (s === "" ? undefined : s))
.refine(
(s) => !s || s.toLowerCase() === "true" || s.toLowerCase() === "false",
)
.optional(),
NEXT_PUBLIC_DISABLE_SIGN_UP: z
.string()
.refine((s) => s.toLowerCase() === "true" || s.toLowerCase() === "false")
.transform((s) => (s === "" ? undefined : s))
.refine(
(s) => !s || s.toLowerCase() === "true" || s.toLowerCase() === "false",
)
.optional(),
},
/**

View File

@@ -132,7 +132,11 @@ const Comment = ({
)}
</div>
{!isEditing ? (
<p className="mt-2 text-sm">{comment}</p>
<ContentEditable
html={comment ?? ""}
disabled={true}
className="mt-2 text-sm"
/>
) : (
<form onSubmit={handleSubmit(onSubmit)}>
<ContentEditable

View File

@@ -1,31 +1,49 @@
version: "3.7"
services:
web:
image: ghcr.io/kanbn/kan:latest
container_name: kan-web
ports:
- "3001:3000"
- "${WEB_PORT:-3000}:3000"
networks:
- kan-network
- dokploy-network
build:
context: .
dockerfile: ./apps/web/Dockerfile
env_file:
- .env
command: ["pnpm", "start"]
environment:
- EMAIL_FROM=${EMAIL_FROM}
# Required environment variables
- NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL}
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
- POSTGRES_URL=${POSTGRES_URL}
# SMTP (optional)
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USER=${SMTP_USER}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET}
- BETTER_AUTH_TRUSTED_ORIGINS=${BETTER_AUTH_TRUSTED_ORIGINS}
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY}
- STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
- POSTGRES_URL=${POSTGRES_URL}
- EMAIL_FROM=${EMAIL_FROM}
# S3 storage (optional)
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
- S3_REGION=${S3_REGION}
- S3_ENDPOINT=${S3_ENDPOINT}
- NEXT_PUBLIC_STORAGE_URL=${NEXT_PUBLIC_STORAGE_URL}
- NEXT_PUBLIC_AVATAR_BUCKET_NAME=${NEXT_PUBLIC_AVATAR_BUCKET_NAME}
- NEXT_PUBLIC_STORAGE_DOMAIN=${NEXT_PUBLIC_STORAGE_DOMAIN}
# Auth config (optional)
- NEXT_PUBLIC_ALLOW_CREDENTIALS=${NEXT_PUBLIC_ALLOW_CREDENTIALS}
- NEXT_PUBLIC_DISABLE_SIGN_UP=${NEXT_PUBLIC_DISABLE_SIGN_UP}
# Integration providers (optional)
- TRELLO_APP_API_KEY=${TRELLO_APP_API_KEY}
- TRELLO_APP_SECRET=${TRELLO_APP_SECRET}
# OAuth providers (optional)
- BETTER_AUTH_TRUSTED_ORIGINS=${BETTER_AUTH_TRUSTED_ORIGINS}
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
- DISCORD_CLIENT_ID=${DISCORD_CLIENT_ID}
@@ -63,18 +81,35 @@ services:
- APPLE_CLIENT_ID=${APPLE_CLIENT_ID}
- APPLE_CLIENT_SECRET=${APPLE_CLIENT_SECRET}
- APPLE_APP_BUNDLE_IDENTIFIER=${APPLE_APP_BUNDLE_IDENTIFIER}
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
- S3_REGION=${S3_REGION}
- S3_ENDPOINT=${S3_ENDPOINT}
# Cloud (not required)
- NEXT_PUBLIC_KAN_ENV=${NEXT_PUBLIC_KAN_ENV}
- NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL}
- NEXT_PUBLIC_STORAGE_URL=${NEXT_PUBLIC_STORAGE_URL}
- NEXT_PUBLIC_AVATAR_BUCKET_NAME=${NEXT_PUBLIC_AVATAR_BUCKET_NAME}
- NEXT_PUBLIC_STORAGE_DOMAIN=${NEXT_PUBLIC_STORAGE_DOMAIN}
- NEXT_PUBLIC_UMAMI_ID=${NEXT_PUBLIC_UMAMI_ID}
- NEXT_PUBLIC_ALLOW_CREDENTIALS=${NEXT_PUBLIC_ALLOW_CREDENTIALS}
- NEXT_PUBLIC_DISABLE_SIGN_UP=${NEXT_PUBLIC_DISABLE_SIGN_UP}
- STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY}
- STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
depends_on:
- postgres
restart: unless-stopped
postgres:
image: postgres:15
container_name: kan-db
environment:
- POSTGRES_DB=kan_db
- POSTGRES_USER=kan
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
ports:
- 5432:5432
volumes:
- kan_postgres_data:/var/lib/postgresql/data
restart: unless-stopped
networks:
- kan-network
networks:
kan-network:
dokploy-network:
external: true
volumes:
kan_postgres_data:

View File

@@ -0,0 +1,17 @@
CREATE TABLE IF NOT EXISTS "integration" (
"provider" varchar(255) NOT NULL,
"userId" uuid NOT NULL,
"accessToken" varchar(255) NOT NULL,
"refreshToken" varchar(255),
"expiresAt" timestamp NOT NULL,
"createdAt" timestamp NOT NULL,
"updatedAt" timestamp,
CONSTRAINT "integration_pkey" PRIMARY KEY("userId","provider")
);
--> statement-breakpoint
ALTER TABLE "integration" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
DO $$ BEGIN
ALTER TABLE "integration" ADD CONSTRAINT "integration_userId_user_id_fk" FOREIGN KEY ("userId") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
EXCEPTION
WHEN duplicate_object THEN null;
END $$;

View File

@@ -1,6 +1,6 @@
{
"id": "d170c8e0-bf75-4c71-abd9-0ecbeeb14003",
"prevId": "1a07a776-0481-49f9-9098-02d530b37cf5",
"prevId": "058e8521-2814-46f0-a33f-1bbd86f450ce",
"version": "7",
"dialect": "postgresql",
"tables": {
@@ -93,12 +93,8 @@
"name": "account_userId_user_id_fk",
"tableFrom": "account",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -246,12 +242,8 @@
"name": "apiKey_userId_user_id_fk",
"tableFrom": "apiKey",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -321,12 +313,8 @@
"name": "session_userId_user_id_fk",
"tableFrom": "session",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -336,9 +324,7 @@
"session_token_unique": {
"name": "session_token_unique",
"nullsNotDistinct": false,
"columns": [
"token"
]
"columns": ["token"]
}
},
"policies": {},
@@ -524,12 +510,8 @@
"name": "board_createdBy_user_id_fk",
"tableFrom": "board",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -537,12 +519,8 @@
"name": "board_deletedBy_user_id_fk",
"tableFrom": "board",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -550,12 +528,8 @@
"name": "board_importId_import_id_fk",
"tableFrom": "board",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -563,12 +537,8 @@
"name": "board_workspaceId_workspace_id_fk",
"tableFrom": "board",
"tableTo": "workspace",
"columnsFrom": [
"workspaceId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -578,9 +548,7 @@
"board_publicId_unique": {
"name": "board_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -714,12 +682,8 @@
"name": "card_activity_cardId_card_id_fk",
"tableFrom": "card_activity",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -727,12 +691,8 @@
"name": "card_activity_fromListId_list_id_fk",
"tableFrom": "card_activity",
"tableTo": "list",
"columnsFrom": [
"fromListId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["fromListId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -740,12 +700,8 @@
"name": "card_activity_toListId_list_id_fk",
"tableFrom": "card_activity",
"tableTo": "list",
"columnsFrom": [
"toListId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["toListId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -753,12 +709,8 @@
"name": "card_activity_labelId_label_id_fk",
"tableFrom": "card_activity",
"tableTo": "label",
"columnsFrom": [
"labelId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["labelId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -766,12 +718,8 @@
"name": "card_activity_workspaceMemberId_workspace_members_id_fk",
"tableFrom": "card_activity",
"tableTo": "workspace_members",
"columnsFrom": [
"workspaceMemberId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceMemberId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -779,12 +727,8 @@
"name": "card_activity_createdBy_user_id_fk",
"tableFrom": "card_activity",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -792,12 +736,8 @@
"name": "card_activity_commentId_card_comments_id_fk",
"tableFrom": "card_activity",
"tableTo": "card_comments",
"columnsFrom": [
"commentId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["commentId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -807,9 +747,7 @@
"card_activity_publicId_unique": {
"name": "card_activity_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -839,12 +777,8 @@
"name": "_card_workspace_members_cardId_card_id_fk",
"tableFrom": "_card_workspace_members",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -852,12 +786,8 @@
"name": "_card_workspace_members_workspaceMemberId_workspace_members_id_fk",
"tableFrom": "_card_workspace_members",
"tableTo": "workspace_members",
"columnsFrom": [
"workspaceMemberId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceMemberId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -865,10 +795,7 @@
"compositePrimaryKeys": {
"_card_workspace_members_cardId_workspaceMemberId_pk": {
"name": "_card_workspace_members_cardId_workspaceMemberId_pk",
"columns": [
"cardId",
"workspaceMemberId"
]
"columns": ["cardId", "workspaceMemberId"]
}
},
"uniqueConstraints": {},
@@ -960,12 +887,8 @@
"name": "card_createdBy_user_id_fk",
"tableFrom": "card",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -973,12 +896,8 @@
"name": "card_deletedBy_user_id_fk",
"tableFrom": "card",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -986,12 +905,8 @@
"name": "card_listId_list_id_fk",
"tableFrom": "card",
"tableTo": "list",
"columnsFrom": [
"listId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["listId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -999,12 +914,8 @@
"name": "card_importId_import_id_fk",
"tableFrom": "card",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1014,9 +925,7 @@
"card_publicId_unique": {
"name": "card_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1046,12 +955,8 @@
"name": "_card_labels_cardId_card_id_fk",
"tableFrom": "_card_labels",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1059,12 +964,8 @@
"name": "_card_labels_labelId_label_id_fk",
"tableFrom": "_card_labels",
"tableTo": "label",
"columnsFrom": [
"labelId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["labelId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1072,10 +973,7 @@
"compositePrimaryKeys": {
"_card_labels_cardId_labelId_pk": {
"name": "_card_labels_cardId_labelId_pk",
"columns": [
"cardId",
"labelId"
]
"columns": ["cardId", "labelId"]
}
},
"uniqueConstraints": {},
@@ -1149,12 +1047,8 @@
"name": "card_comments_cardId_card_id_fk",
"tableFrom": "card_comments",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1162,12 +1056,8 @@
"name": "card_comments_createdBy_user_id_fk",
"tableFrom": "card_comments",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1175,12 +1065,8 @@
"name": "card_comments_deletedBy_user_id_fk",
"tableFrom": "card_comments",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1190,9 +1076,7 @@
"card_comments_publicId_unique": {
"name": "card_comments_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1254,12 +1138,8 @@
"name": "feedback_createdBy_user_id_fk",
"tableFrom": "feedback",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1320,12 +1200,8 @@
"name": "import_createdBy_user_id_fk",
"tableFrom": "import",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1335,9 +1211,7 @@
"import_publicId_unique": {
"name": "import_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1422,12 +1296,8 @@
"name": "label_createdBy_user_id_fk",
"tableFrom": "label",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -1435,12 +1305,8 @@
"name": "label_boardId_board_id_fk",
"tableFrom": "label",
"tableTo": "board",
"columnsFrom": [
"boardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["boardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1448,12 +1314,8 @@
"name": "label_importId_import_id_fk",
"tableFrom": "label",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -1461,12 +1323,8 @@
"name": "label_deletedBy_user_id_fk",
"tableFrom": "label",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1476,9 +1334,7 @@
"label_publicId_unique": {
"name": "label_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1563,12 +1419,8 @@
"name": "list_createdBy_user_id_fk",
"tableFrom": "list",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -1576,12 +1428,8 @@
"name": "list_deletedBy_user_id_fk",
"tableFrom": "list",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -1589,12 +1437,8 @@
"name": "list_boardId_board_id_fk",
"tableFrom": "list",
"tableTo": "board",
"columnsFrom": [
"boardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["boardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1602,12 +1446,8 @@
"name": "list_importId_import_id_fk",
"tableFrom": "list",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1617,9 +1457,7 @@
"list_publicId_unique": {
"name": "list_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1689,9 +1527,7 @@
"user_email_unique": {
"name": "user_email_unique",
"nullsNotDistinct": false,
"columns": [
"email"
]
"columns": ["email"]
}
},
"policies": {},
@@ -1751,12 +1587,8 @@
"name": "integration_userId_user_id_fk",
"tableFrom": "integration",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1764,10 +1596,7 @@
"compositePrimaryKeys": {
"integration_pkey": {
"name": "integration_pkey",
"columns": [
"userId",
"provider"
]
"columns": ["userId", "provider"]
}
},
"uniqueConstraints": {},
@@ -1800,9 +1629,7 @@
"workspace_slugs_slug_unique": {
"name": "workspace_slugs_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1896,12 +1723,8 @@
"name": "workspace_members_userId_user_id_fk",
"tableFrom": "workspace_members",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -1909,12 +1732,8 @@
"name": "workspace_members_workspaceId_workspace_id_fk",
"tableFrom": "workspace_members",
"tableTo": "workspace",
"columnsFrom": [
"workspaceId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1922,12 +1741,8 @@
"name": "workspace_members_deletedBy_user_id_fk",
"tableFrom": "workspace_members",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1937,9 +1752,7 @@
"workspace_members_publicId_unique": {
"name": "workspace_members_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -2026,12 +1839,8 @@
"name": "workspace_createdBy_user_id_fk",
"tableFrom": "workspace",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -2039,12 +1848,8 @@
"name": "workspace_deletedBy_user_id_fk",
"tableFrom": "workspace",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -2054,16 +1859,12 @@
"workspace_publicId_unique": {
"name": "workspace_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
},
"workspace_slug_unique": {
"name": "workspace_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -2075,10 +1876,7 @@
"public.board_visibility": {
"name": "board_visibility",
"schema": "public",
"values": [
"private",
"public"
]
"values": ["private", "public"]
},
"public.card_activity_type": {
"name": "card_activity_type",
@@ -2102,53 +1900,32 @@
"public.source": {
"name": "source",
"schema": "public",
"values": [
"trello"
]
"values": ["trello"]
},
"public.status": {
"name": "status",
"schema": "public",
"values": [
"started",
"success",
"failed"
]
"values": ["started", "success", "failed"]
},
"public.role": {
"name": "role",
"schema": "public",
"values": [
"admin",
"member",
"guest"
]
"values": ["admin", "member", "guest"]
},
"public.member_status": {
"name": "member_status",
"schema": "public",
"values": [
"invited",
"active",
"removed"
]
"values": ["invited", "active", "removed"]
},
"public.slug_type": {
"name": "slug_type",
"schema": "public",
"values": [
"reserved",
"premium"
]
"values": ["reserved", "premium"]
},
"public.workspace_plan": {
"name": "workspace_plan",
"schema": "public",
"values": [
"free",
"pro",
"enterprise"
]
"values": ["free", "pro", "enterprise"]
}
},
"schemas": {},
@@ -2161,4 +1938,4 @@
"schemas": {},
"tables": {}
}
}
}

View File

@@ -93,12 +93,8 @@
"name": "account_userId_user_id_fk",
"tableFrom": "account",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -246,12 +242,8 @@
"name": "apiKey_userId_user_id_fk",
"tableFrom": "apiKey",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -321,12 +313,8 @@
"name": "session_userId_user_id_fk",
"tableFrom": "session",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -336,9 +324,7 @@
"session_token_unique": {
"name": "session_token_unique",
"nullsNotDistinct": false,
"columns": [
"token"
]
"columns": ["token"]
}
},
"policies": {},
@@ -524,12 +510,8 @@
"name": "board_createdBy_user_id_fk",
"tableFrom": "board",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -537,12 +519,8 @@
"name": "board_deletedBy_user_id_fk",
"tableFrom": "board",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -550,12 +528,8 @@
"name": "board_importId_import_id_fk",
"tableFrom": "board",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -563,12 +537,8 @@
"name": "board_workspaceId_workspace_id_fk",
"tableFrom": "board",
"tableTo": "workspace",
"columnsFrom": [
"workspaceId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -578,9 +548,7 @@
"board_publicId_unique": {
"name": "board_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -714,12 +682,8 @@
"name": "card_activity_cardId_card_id_fk",
"tableFrom": "card_activity",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -727,12 +691,8 @@
"name": "card_activity_fromListId_list_id_fk",
"tableFrom": "card_activity",
"tableTo": "list",
"columnsFrom": [
"fromListId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["fromListId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -740,12 +700,8 @@
"name": "card_activity_toListId_list_id_fk",
"tableFrom": "card_activity",
"tableTo": "list",
"columnsFrom": [
"toListId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["toListId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -753,12 +709,8 @@
"name": "card_activity_labelId_label_id_fk",
"tableFrom": "card_activity",
"tableTo": "label",
"columnsFrom": [
"labelId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["labelId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -766,12 +718,8 @@
"name": "card_activity_workspaceMemberId_workspace_members_id_fk",
"tableFrom": "card_activity",
"tableTo": "workspace_members",
"columnsFrom": [
"workspaceMemberId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceMemberId"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -779,12 +727,8 @@
"name": "card_activity_createdBy_user_id_fk",
"tableFrom": "card_activity",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -792,12 +736,8 @@
"name": "card_activity_commentId_card_comments_id_fk",
"tableFrom": "card_activity",
"tableTo": "card_comments",
"columnsFrom": [
"commentId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["commentId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -807,9 +747,7 @@
"card_activity_publicId_unique": {
"name": "card_activity_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -839,12 +777,8 @@
"name": "_card_workspace_members_cardId_card_id_fk",
"tableFrom": "_card_workspace_members",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -852,12 +786,8 @@
"name": "_card_workspace_members_workspaceMemberId_workspace_members_id_fk",
"tableFrom": "_card_workspace_members",
"tableTo": "workspace_members",
"columnsFrom": [
"workspaceMemberId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceMemberId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -865,10 +795,7 @@
"compositePrimaryKeys": {
"_card_workspace_members_cardId_workspaceMemberId_pk": {
"name": "_card_workspace_members_cardId_workspaceMemberId_pk",
"columns": [
"cardId",
"workspaceMemberId"
]
"columns": ["cardId", "workspaceMemberId"]
}
},
"uniqueConstraints": {},
@@ -960,12 +887,8 @@
"name": "card_createdBy_user_id_fk",
"tableFrom": "card",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -973,12 +896,8 @@
"name": "card_deletedBy_user_id_fk",
"tableFrom": "card",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -986,12 +905,8 @@
"name": "card_listId_list_id_fk",
"tableFrom": "card",
"tableTo": "list",
"columnsFrom": [
"listId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["listId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -999,12 +914,8 @@
"name": "card_importId_import_id_fk",
"tableFrom": "card",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1014,9 +925,7 @@
"card_publicId_unique": {
"name": "card_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1046,12 +955,8 @@
"name": "_card_labels_cardId_card_id_fk",
"tableFrom": "_card_labels",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1059,12 +964,8 @@
"name": "_card_labels_labelId_label_id_fk",
"tableFrom": "_card_labels",
"tableTo": "label",
"columnsFrom": [
"labelId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["labelId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
}
@@ -1072,10 +973,7 @@
"compositePrimaryKeys": {
"_card_labels_cardId_labelId_pk": {
"name": "_card_labels_cardId_labelId_pk",
"columns": [
"cardId",
"labelId"
]
"columns": ["cardId", "labelId"]
}
},
"uniqueConstraints": {},
@@ -1149,12 +1047,8 @@
"name": "card_comments_cardId_card_id_fk",
"tableFrom": "card_comments",
"tableTo": "card",
"columnsFrom": [
"cardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["cardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1162,12 +1056,8 @@
"name": "card_comments_createdBy_user_id_fk",
"tableFrom": "card_comments",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -1175,12 +1065,8 @@
"name": "card_comments_deletedBy_user_id_fk",
"tableFrom": "card_comments",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1190,9 +1076,7 @@
"card_comments_publicId_unique": {
"name": "card_comments_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1254,12 +1138,8 @@
"name": "feedback_createdBy_user_id_fk",
"tableFrom": "feedback",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1320,12 +1200,8 @@
"name": "import_createdBy_user_id_fk",
"tableFrom": "import",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1335,9 +1211,7 @@
"import_publicId_unique": {
"name": "import_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1422,12 +1296,8 @@
"name": "label_createdBy_user_id_fk",
"tableFrom": "label",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -1435,12 +1305,8 @@
"name": "label_boardId_board_id_fk",
"tableFrom": "label",
"tableTo": "board",
"columnsFrom": [
"boardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["boardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1448,12 +1314,8 @@
"name": "label_importId_import_id_fk",
"tableFrom": "label",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
},
@@ -1461,12 +1323,8 @@
"name": "label_deletedBy_user_id_fk",
"tableFrom": "label",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1476,9 +1334,7 @@
"label_publicId_unique": {
"name": "label_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1563,12 +1419,8 @@
"name": "list_createdBy_user_id_fk",
"tableFrom": "list",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -1576,12 +1428,8 @@
"name": "list_deletedBy_user_id_fk",
"tableFrom": "list",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -1589,12 +1437,8 @@
"name": "list_boardId_board_id_fk",
"tableFrom": "list",
"tableTo": "board",
"columnsFrom": [
"boardId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["boardId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1602,12 +1446,8 @@
"name": "list_importId_import_id_fk",
"tableFrom": "list",
"tableTo": "import",
"columnsFrom": [
"importId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["importId"],
"columnsTo": ["id"],
"onDelete": "no action",
"onUpdate": "no action"
}
@@ -1617,9 +1457,7 @@
"list_publicId_unique": {
"name": "list_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1689,9 +1527,7 @@
"user_email_unique": {
"name": "user_email_unique",
"nullsNotDistinct": false,
"columns": [
"email"
]
"columns": ["email"]
}
},
"policies": {},
@@ -1723,9 +1559,7 @@
"workspace_slugs_slug_unique": {
"name": "workspace_slugs_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1819,12 +1653,8 @@
"name": "workspace_members_userId_user_id_fk",
"tableFrom": "workspace_members",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["userId"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -1832,12 +1662,8 @@
"name": "workspace_members_workspaceId_workspace_id_fk",
"tableFrom": "workspace_members",
"tableTo": "workspace",
"columnsFrom": [
"workspaceId"
],
"columnsTo": [
"id"
],
"columnsFrom": ["workspaceId"],
"columnsTo": ["id"],
"onDelete": "cascade",
"onUpdate": "no action"
},
@@ -1845,12 +1671,8 @@
"name": "workspace_members_deletedBy_user_id_fk",
"tableFrom": "workspace_members",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1860,9 +1682,7 @@
"workspace_members_publicId_unique": {
"name": "workspace_members_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
}
},
"policies": {},
@@ -1949,12 +1769,8 @@
"name": "workspace_createdBy_user_id_fk",
"tableFrom": "workspace",
"tableTo": "user",
"columnsFrom": [
"createdBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["createdBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
},
@@ -1962,12 +1778,8 @@
"name": "workspace_deletedBy_user_id_fk",
"tableFrom": "workspace",
"tableTo": "user",
"columnsFrom": [
"deletedBy"
],
"columnsTo": [
"id"
],
"columnsFrom": ["deletedBy"],
"columnsTo": ["id"],
"onDelete": "set null",
"onUpdate": "no action"
}
@@ -1977,16 +1789,12 @@
"workspace_publicId_unique": {
"name": "workspace_publicId_unique",
"nullsNotDistinct": false,
"columns": [
"publicId"
]
"columns": ["publicId"]
},
"workspace_slug_unique": {
"name": "workspace_slug_unique",
"nullsNotDistinct": false,
"columns": [
"slug"
]
"columns": ["slug"]
}
},
"policies": {},
@@ -1998,10 +1806,7 @@
"public.board_visibility": {
"name": "board_visibility",
"schema": "public",
"values": [
"private",
"public"
]
"values": ["private", "public"]
},
"public.card_activity_type": {
"name": "card_activity_type",
@@ -2025,53 +1830,32 @@
"public.source": {
"name": "source",
"schema": "public",
"values": [
"trello"
]
"values": ["trello"]
},
"public.status": {
"name": "status",
"schema": "public",
"values": [
"started",
"success",
"failed"
]
"values": ["started", "success", "failed"]
},
"public.role": {
"name": "role",
"schema": "public",
"values": [
"admin",
"member",
"guest"
]
"values": ["admin", "member", "guest"]
},
"public.member_status": {
"name": "member_status",
"schema": "public",
"values": [
"invited",
"active",
"removed"
]
"values": ["invited", "active", "removed"]
},
"public.slug_type": {
"name": "slug_type",
"schema": "public",
"values": [
"reserved",
"premium"
]
"values": ["reserved", "premium"]
},
"public.workspace_plan": {
"name": "workspace_plan",
"schema": "public",
"values": [
"free",
"pro",
"enterprise"
]
"values": ["free", "pro", "enterprise"]
}
},
"schemas": {},
@@ -2084,4 +1868,4 @@
"schemas": {},
"tables": {}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -43,6 +43,13 @@
"when": 1749377372062,
"tag": "20250608100932_AddIntegrationsTable",
"breakpoints": true
},
{
"idx": 6,
"version": "7",
"when": 1749585889984,
"tag": "20250610200449_ReaddIntegrationTable",
"breakpoints": true
}
]
}
}