History

feat(destinations): add createdAt timestamp and display creation date

Mauricio Siu committed 1 year ago

Commit 29eb4901 parent 61669637 files · +5209 −44Browse files

Unified · Split

7 files
  1. apps/dokploy/components/dashboard/settings/destination/handle-destinations.tsx +60 −39
  2. apps/dokploy/components/dashboard/settings/destination/show-destinations.tsx +11 −3
  3. apps/dokploy/drizzle/0070_useful_serpent_society.sql +1 −0
  4. apps/dokploy/drizzle/meta/0070_snapshot.json +5126 −0
  5. apps/dokploy/drizzle/meta/_journal.json +7 −0
  6. apps/dokploy/server/api/routers/destination.ts +2 −1
  7. packages/server/src/db/schema/destination.ts +2 −1
apps/dokploy/components/dashboard/settings/destination/handle-destinations.tsx+60−39
@@ -39,12 +39,12 @@ import { S3_PROVIDERS } from "./constants"; · 38 unmodified lines
3939
4040 const addDestination = z.object({
4141 name: z.string().min(1, "Name is required"),
42− provider: z.string().optional(),
43− accessKeyId: z.string(),
44− secretAccessKey: z.string(),
45− bucket: z.string(),
42+ provider: z.string().min(1, "Provider is required"),
43+ accessKeyId: z.string().min(1, "Access Key Id is required"),
44+ secretAccessKey: z.string().min(1, "Secret Access Key is required"),
45+ bucket: z.string().min(1, "Bucket is required"),
4646 region: z.string(),
47− endpoint: z.string(),
47+ endpoint: z.string().min(1, "Endpoint is required"),
4848 serverId: z.string().optional(),
4949 });
5050
@@ -129,6 +129,58 @@ export const HandleDestinations = ({ destinationId }: Props) => { · 78 unmodified lines
129129 );
130130 });
131131 };
132+
133+ const handleTestConnection = async (serverId?: string) => {
134+ const result = await form.trigger([
135+ "provider",
136+ "accessKeyId",
137+ "secretAccessKey",
138+ "bucket",
139+ "endpoint",
140+ ]);
141+
142+ if (!result) {
143+ const errors = form.formState.errors;
144+ const errorFields = Object.entries(errors)
145+ .map(([field, error]) => `${field}: ${error?.message}`)
146+ .filter(Boolean)
147+ .join("\n");
148+
149+ toast.error("Please fill all required fields", {
150+ description: errorFields,
151+ });
152+ return;
153+ }
154+
155+ const provider = form.getValues("provider");
156+ const accessKey = form.getValues("accessKeyId");
157+ const secretKey = form.getValues("secretAccessKey");
158+ const bucket = form.getValues("bucket");
159+ const endpoint = form.getValues("endpoint");
160+ const region = form.getValues("region");
161+
162+ const connectionString = `:s3,provider=${provider},access_key_id=${accessKey},secret_access_key=${secretKey},endpoint=${endpoint}${region ? `,region=${region}` : ""}:${bucket}`;
163+
164+ await testConnection({
165+ provider,
166+ accessKey,
167+ bucket,
168+ endpoint,
169+ name: "Test",
170+ region,
171+ secretAccessKey: secretKey,
172+ serverId,
173+ })
174+ .then(() => {
175+ toast.success("Connection Success");
176+ })
177+ .catch((e) => {
178+ toast.error("Error connecting to provider", {
179+ description: `${e.message}\n\nTry manually: rclone ls ${connectionString}`,
180+ });
181+ });
182+ };
183+
132184 return (
133185 <Dialog open={open} onOpenChange={setOpen}>
134186 <DialogTrigger className="" asChild>
@@ -349,26 +401,9 @@ export const HandleDestinations = ({ destinationId }: Props) => { · 214 unmodified lines
349401 <Button
350402 type="button"
351403 variant={"secondary"}
352− isLoading={isLoading}
404+ isLoading={isLoadingConnection}
353405 onClick={async () => {
354− await testConnection({
355− provider: form.getValues("provider") || "",
356− accessKey: form.getValues("accessKeyId"),
357− bucket: form.getValues("bucket"),
358− endpoint: form.getValues("endpoint"),
359− name: "Test",
360− region: form.getValues("region"),
361− secretAccessKey: form.getValues("secretAccessKey"),
362− serverId: form.getValues("serverId"),
363− })
364− .then(async () => {
365− toast.success("Connection Success");
366− })
367− .catch((e) => {
368− toast.error("Error connecting the provider", {
369− description: e.message,
370− });
371− });
406+ await handleTestConnection(form.getValues("serverId"));
372407 }}
373408 >
374409 Test Connection
@@ -380,21 +415,7 @@ export const HandleDestinations = ({ destinationId }: Props) => { · 5 unmodified lines
380415 type="button"
381416 variant="secondary"
382417 onClick={async () => {
383− await testConnection({
384− provider: form.getValues("provider") || "",
385− accessKey: form.getValues("accessKeyId"),
386− bucket: form.getValues("bucket"),
387− endpoint: form.getValues("endpoint"),
388− name: "Test",
389− region: form.getValues("region"),
390− secretAccessKey: form.getValues("secretAccessKey"),
391− })
392− .then(async () => {
393− toast.success("Connection Success");
394− })
395− .catch(() => {
396− toast.error("Error connecting the provider");
397− });
418+ await handleTestConnection();
398419 }}
399420 >
400421 Test connection
apps/dokploy/components/dashboard/settings/destination/show-destinations.tsx+11−3
@@ -56,9 +56,17 @@ export const ShowDestinations = () => { · 55 unmodified lines
5656 className="flex items-center justify-between bg-sidebar p-1 w-full rounded-lg"
5757 >
5858 <div className="flex items-center justify-between p-3.5 rounded-lg bg-background border w-full">
59− <span className="text-sm">
60− {index + 1}. {destination.name}
61− </span>
59+ <div className="flex flex-col gap-1">
60+ <span className="text-sm">
61+ {index + 1}. {destination.name}
62+ </span>
63+ <span className="text-xs text-muted-foreground">
64+ Created at:{" "}
65+ {new Date(
66+ destination.createdAt,
67+ ).toLocaleDateString()}
68+ </span>
69+ </div>
6270 <div className="flex flex-row gap-1">
6371 <HandleDestinations
6472 destinationId={destination.destinationId}
apps/dokploy/drizzle/0070_useful_serpent_society.sql+1−0
@@ -0,0 +1 @@
1+ALTER TABLE "destination" ADD COLUMN "createdAt" timestamp DEFAULT now() NOT NULL;
apps/dokploy/drizzle/meta/0070_snapshot.json+5126−0
@@ -0,0 +1,5126 @@
1+{
2+ "id": "53fc370e-731b-4bfe-874f-9ce725650082",
3+ "prevId": "6247f9c0-261c-497e-97f4-c02a80687211",
4+ "version": "7",
5+ "dialect": "postgresql",
6+ "tables": {
7+ "public.application": {
8+ "name": "application",
9+ "schema": "",
10+ "columns": {
11+ "applicationId": {
12+ "name": "applicationId",
13+ "type": "text",
14+ "primaryKey": true,
15+ "notNull": true
16+ },
17+ "name": {
18+ "name": "name",
19+ "type": "text",
20+ "primaryKey": false,
21+ "notNull": true
22+ },
23+ "appName": {
24+ "name": "appName",
25+ "type": "text",
26+ "primaryKey": false,
27+ "notNull": true
28+ },
29+ "description": {
30+ "name": "description",
31+ "type": "text",
32+ "primaryKey": false,
33+ "notNull": false
34+ },
35+ "env": {
36+ "name": "env",
37+ "type": "text",
38+ "primaryKey": false,
39+ "notNull": false
40+ },
41+ "previewEnv": {
42+ "name": "previewEnv",
43+ "type": "text",
44+ "primaryKey": false,
45+ "notNull": false
46+ },
47+ "previewBuildArgs": {
48+ "name": "previewBuildArgs",
49+ "type": "text",
50+ "primaryKey": false,
51+ "notNull": false
52+ },
53+ "previewWildcard": {
54+ "name": "previewWildcard",
55+ "type": "text",
56+ "primaryKey": false,
57+ "notNull": false
58+ },
59+ "previewPort": {
60+ "name": "previewPort",
61+ "type": "integer",
62+ "primaryKey": false,
63+ "notNull": false,
64+ "default": 3000
65+ },
66+ "previewHttps": {
67+ "name": "previewHttps",
68+ "type": "boolean",
69+ "primaryKey": false,
70+ "notNull": true,
71+ "default": false
72+ },
73+ "previewPath": {
74+ "name": "previewPath",
75+ "type": "text",
76+ "primaryKey": false,
77+ "notNull": false,
78+ "default": "'/'"
79+ },
80+ "certificateType": {
81+ "name": "certificateType",
82+ "type": "certificateType",
83+ "typeSchema": "public",
84+ "primaryKey": false,
85+ "notNull": true,
86+ "default": "'none'"
87+ },
88+ "previewLimit": {
89+ "name": "previewLimit",
90+ "type": "integer",
91+ "primaryKey": false,
92+ "notNull": false,
93+ "default": 3
94+ },
95+ "isPreviewDeploymentsActive": {
96+ "name": "isPreviewDeploymentsActive",
97+ "type": "boolean",
98+ "primaryKey": false,
99+ "notNull": false,
100+ "default": false
101+ },
102+ "buildArgs": {
103+ "name": "buildArgs",
104+ "type": "text",
105+ "primaryKey": false,
106+ "notNull": false
107+ },
108+ "memoryReservation": {
109+ "name": "memoryReservation",
110+ "type": "text",
111+ "primaryKey": false,
112+ "notNull": false
113+ },
114+ "memoryLimit": {
115+ "name": "memoryLimit",
116+ "type": "text",
117+ "primaryKey": false,
118+ "notNull": false
119+ },
120+ "cpuReservation": {
121+ "name": "cpuReservation",
122+ "type": "text",
123+ "primaryKey": false,
124+ "notNull": false
125+ },
126+ "cpuLimit": {
127+ "name": "cpuLimit",
128+ "type": "text",
129+ "primaryKey": false,
130+ "notNull": false
131+ },
132+ "title": {
133+ "name": "title",
134+ "type": "text",
135+ "primaryKey": false,
136+ "notNull": false
137+ },
138+ "enabled": {
139+ "name": "enabled",
140+ "type": "boolean",
141+ "primaryKey": false,
142+ "notNull": false
143+ },
144+ "subtitle": {
145+ "name": "subtitle",
146+ "type": "text",
147+ "primaryKey": false,
148+ "notNull": false
149+ },
150+ "command": {
151+ "name": "command",
152+ "type": "text",
153+ "primaryKey": false,
154+ "notNull": false
155+ },
156+ "refreshToken": {
157+ "name": "refreshToken",
158+ "type": "text",
159+ "primaryKey": false,
160+ "notNull": false
161+ },
162+ "sourceType": {
163+ "name": "sourceType",
164+ "type": "sourceType",
165+ "typeSchema": "public",
166+ "primaryKey": false,
167+ "notNull": true,
168+ "default": "'github'"
169+ },
170+ "repository": {
171+ "name": "repository",
172+ "type": "text",
173+ "primaryKey": false,
174+ "notNull": false
175+ },
176+ "owner": {
177+ "name": "owner",
178+ "type": "text",
179+ "primaryKey": false,
180+ "notNull": false
181+ },
182+ "branch": {
183+ "name": "branch",
184+ "type": "text",
185+ "primaryKey": false,
186+ "notNull": false
187+ },
188+ "buildPath": {
189+ "name": "buildPath",
190+ "type": "text",
191+ "primaryKey": false,
192+ "notNull": false,
193+ "default": "'/'"
194+ },
195+ "autoDeploy": {
196+ "name": "autoDeploy",
197+ "type": "boolean",
198+ "primaryKey": false,
199+ "notNull": false
200+ },
201+ "gitlabProjectId": {
202+ "name": "gitlabProjectId",
203+ "type": "integer",
204+ "primaryKey": false,
205+ "notNull": false
206+ },
207+ "gitlabRepository": {
208+ "name": "gitlabRepository",
209+ "type": "text",
210+ "primaryKey": false,
211+ "notNull": false
212+ },
213+ "gitlabOwner": {
214+ "name": "gitlabOwner",
215+ "type": "text",
216+ "primaryKey": false,
217+ "notNull": false
218+ },
219+ "gitlabBranch": {
220+ "name": "gitlabBranch",
221+ "type": "text",
222+ "primaryKey": false,
223+ "notNull": false
224+ },
225+ "gitlabBuildPath": {
226+ "name": "gitlabBuildPath",
227+ "type": "text",
228+ "primaryKey": false,
229+ "notNull": false,
230+ "default": "'/'"
231+ },
232+ "gitlabPathNamespace": {
233+ "name": "gitlabPathNamespace",
234+ "type": "text",
235+ "primaryKey": false,
236+ "notNull": false
237+ },
238+ "bitbucketRepository": {
239+ "name": "bitbucketRepository",
240+ "type": "text",
241+ "primaryKey": false,
242+ "notNull": false
243+ },
244+ "bitbucketOwner": {
245+ "name": "bitbucketOwner",
246+ "type": "text",
247+ "primaryKey": false,
248+ "notNull": false
249+ },
250+ "bitbucketBranch": {
251+ "name": "bitbucketBranch",
252+ "type": "text",
253+ "primaryKey": false,
254+ "notNull": false
255+ },
256+ "bitbucketBuildPath": {
257+ "name": "bitbucketBuildPath",
258+ "type": "text",
259+ "primaryKey": false,
260+ "notNull": false,
261+ "default": "'/'"
262+ },
263+ "username": {
264+ "name": "username",
265+ "type": "text",
266+ "primaryKey": false,
267+ "notNull": false
268+ },
269+ "password": {
270+ "name": "password",
271+ "type": "text",
272+ "primaryKey": false,
273+ "notNull": false
274+ },
275+ "dockerImage": {
276+ "name": "dockerImage",
277+ "type": "text",
278+ "primaryKey": false,
279+ "notNull": false
280+ },
281+ "registryUrl": {
282+ "name": "registryUrl",
283+ "type": "text",
284+ "primaryKey": false,
285+ "notNull": false
286+ },
287+ "customGitUrl": {
288+ "name": "customGitUrl",
289+ "type": "text",
290+ "primaryKey": false,
291+ "notNull": false
292+ },
293+ "customGitBranch": {
294+ "name": "customGitBranch",
295+ "type": "text",
296+ "primaryKey": false,
297+ "notNull": false
298+ },
299+ "customGitBuildPath": {
300+ "name": "customGitBuildPath",
301+ "type": "text",
302+ "primaryKey": false,
303+ "notNull": false
304+ },
305+ "customGitSSHKeyId": {
306+ "name": "customGitSSHKeyId",
307+ "type": "text",
308+ "primaryKey": false,
309+ "notNull": false
310+ },
311+ "dockerfile": {
312+ "name": "dockerfile",
313+ "type": "text",
314+ "primaryKey": false,
315+ "notNull": false
316+ },
317+ "dockerContextPath": {
318+ "name": "dockerContextPath",
319+ "type": "text",
320+ "primaryKey": false,
321+ "notNull": false
322+ },
323+ "dockerBuildStage": {
324+ "name": "dockerBuildStage",
325+ "type": "text",
326+ "primaryKey": false,
327+ "notNull": false
328+ },
329+ "dropBuildPath": {
330+ "name": "dropBuildPath",
331+ "type": "text",
332+ "primaryKey": false,
333+ "notNull": false
334+ },
335+ "healthCheckSwarm": {
336+ "name": "healthCheckSwarm",
337+ "type": "json",
338+ "primaryKey": false,
339+ "notNull": false
340+ },
341+ "restartPolicySwarm": {
342+ "name": "restartPolicySwarm",
343+ "type": "json",
344+ "primaryKey": false,
345+ "notNull": false
346+ },
347+ "placementSwarm": {
348+ "name": "placementSwarm",
349+ "type": "json",
350+ "primaryKey": false,
351+ "notNull": false
352+ },
353+ "updateConfigSwarm": {
354+ "name": "updateConfigSwarm",
355+ "type": "json",
356+ "primaryKey": false,
357+ "notNull": false
358+ },
359+ "rollbackConfigSwarm": {
360+ "name": "rollbackConfigSwarm",
361+ "type": "json",
362+ "primaryKey": false,
363+ "notNull": false
364+ },
365+ "modeSwarm": {
366+ "name": "modeSwarm",
367+ "type": "json",
368+ "primaryKey": false,
369+ "notNull": false
370+ },
371+ "labelsSwarm": {
372+ "name": "labelsSwarm",
373+ "type": "json",
374+ "primaryKey": false,
375+ "notNull": false
376+ },
377+ "networkSwarm": {
378+ "name": "networkSwarm",
379+ "type": "json",
380+ "primaryKey": false,
381+ "notNull": false
382+ },
383+ "replicas": {
384+ "name": "replicas",
385+ "type": "integer",
386+ "primaryKey": false,
387+ "notNull": true,
388+ "default": 1
389+ },
390+ "applicationStatus": {
391+ "name": "applicationStatus",
392+ "type": "applicationStatus",
393+ "typeSchema": "public",
394+ "primaryKey": false,
395+ "notNull": true,
396+ "default": "'idle'"
397+ },
398+ "buildType": {
399+ "name": "buildType",
400+ "type": "buildType",
401+ "typeSchema": "public",
402+ "primaryKey": false,
403+ "notNull": true,
404+ "default": "'nixpacks'"
405+ },
406+ "herokuVersion": {
407+ "name": "herokuVersion",
408+ "type": "text",
409+ "primaryKey": false,
410+ "notNull": false,
411+ "default": "'24'"
412+ },
413+ "publishDirectory": {
414+ "name": "publishDirectory",
415+ "type": "text",
416+ "primaryKey": false,
417+ "notNull": false
418+ },
419+ "createdAt": {
420+ "name": "createdAt",
421+ "type": "text",
422+ "primaryKey": false,
423+ "notNull": true
424+ },
425+ "registryId": {
426+ "name": "registryId",
427+ "type": "text",
428+ "primaryKey": false,
429+ "notNull": false
430+ },
431+ "projectId": {
432+ "name": "projectId",
433+ "type": "text",
434+ "primaryKey": false,
435+ "notNull": true
436+ },
437+ "githubId": {
438+ "name": "githubId",
439+ "type": "text",
440+ "primaryKey": false,
441+ "notNull": false
442+ },
443+ "gitlabId": {
444+ "name": "gitlabId",
445+ "type": "text",
446+ "primaryKey": false,
447+ "notNull": false
448+ },
449+ "bitbucketId": {
450+ "name": "bitbucketId",
451+ "type": "text",
452+ "primaryKey": false,
453+ "notNull": false
454+ },
455+ "serverId": {
456+ "name": "serverId",
457+ "type": "text",
458+ "primaryKey": false,
459+ "notNull": false
460+ }
461+ },
462+ "indexes": {},
463+ "foreignKeys": {
464+ "application_customGitSSHKeyId_ssh-key_sshKeyId_fk": {
465+ "name": "application_customGitSSHKeyId_ssh-key_sshKeyId_fk",
466+ "tableFrom": "application",
467+ "tableTo": "ssh-key",
468+ "columnsFrom": [
469+ "customGitSSHKeyId"
470+ ],
471+ "columnsTo": [
472+ "sshKeyId"
473+ ],
474+ "onDelete": "set null",
475+ "onUpdate": "no action"
476+ },
477+ "application_registryId_registry_registryId_fk": {
478+ "name": "application_registryId_registry_registryId_fk",
479+ "tableFrom": "application",
480+ "tableTo": "registry",
481+ "columnsFrom": [
482+ "registryId"
483+ ],
484+ "columnsTo": [
485+ "registryId"
486+ ],
487+ "onDelete": "set null",
488+ "onUpdate": "no action"
489+ },
490+ "application_projectId_project_projectId_fk": {
491+ "name": "application_projectId_project_projectId_fk",
492+ "tableFrom": "application",
493+ "tableTo": "project",
494+ "columnsFrom": [
495+ "projectId"
496+ ],
497+ "columnsTo": [
498+ "projectId"
499+ ],
500+ "onDelete": "cascade",
501+ "onUpdate": "no action"
502+ },
503+ "application_githubId_github_githubId_fk": {
504+ "name": "application_githubId_github_githubId_fk",
505+ "tableFrom": "application",
506+ "tableTo": "github",
507+ "columnsFrom": [
508+ "githubId"
509+ ],
510+ "columnsTo": [
511+ "githubId"
512+ ],
513+ "onDelete": "set null",
514+ "onUpdate": "no action"
515+ },
516+ "application_gitlabId_gitlab_gitlabId_fk": {
517+ "name": "application_gitlabId_gitlab_gitlabId_fk",
518+ "tableFrom": "application",
519+ "tableTo": "gitlab",
520+ "columnsFrom": [
521+ "gitlabId"
522+ ],
523+ "columnsTo": [
524+ "gitlabId"
525+ ],
526+ "onDelete": "set null",
527+ "onUpdate": "no action"
528+ },
529+ "application_bitbucketId_bitbucket_bitbucketId_fk": {
530+ "name": "application_bitbucketId_bitbucket_bitbucketId_fk",
531+ "tableFrom": "application",
532+ "tableTo": "bitbucket",
533+ "columnsFrom": [
534+ "bitbucketId"
535+ ],
536+ "columnsTo": [
537+ "bitbucketId"
538+ ],
539+ "onDelete": "set null",
540+ "onUpdate": "no action"
541+ },
542+ "application_serverId_server_serverId_fk": {
543+ "name": "application_serverId_server_serverId_fk",
544+ "tableFrom": "application",
545+ "tableTo": "server",
546+ "columnsFrom": [
547+ "serverId"
548+ ],
549+ "columnsTo": [
550+ "serverId"
551+ ],
552+ "onDelete": "cascade",
553+ "onUpdate": "no action"
554+ }
555+ },
556+ "compositePrimaryKeys": {},
557+ "uniqueConstraints": {
558+ "application_appName_unique": {
559+ "name": "application_appName_unique",
560+ "nullsNotDistinct": false,
561+ "columns": [
562+ "appName"
563+ ]
564+ }
565+ },
566+ "policies": {},
567+ "checkConstraints": {},
568+ "isRLSEnabled": false
569+ },
570+ "public.postgres": {
571+ "name": "postgres",
572+ "schema": "",
573+ "columns": {
574+ "postgresId": {
575+ "name": "postgresId",
576+ "type": "text",
577+ "primaryKey": true,
578+ "notNull": true
579+ },
580+ "name": {
581+ "name": "name",
582+ "type": "text",
583+ "primaryKey": false,
584+ "notNull": true
585+ },
586+ "appName": {
587+ "name": "appName",
588+ "type": "text",
589+ "primaryKey": false,
590+ "notNull": true
591+ },
592+ "databaseName": {
593+ "name": "databaseName",
594+ "type": "text",
595+ "primaryKey": false,
596+ "notNull": true
597+ },
598+ "databaseUser": {
599+ "name": "databaseUser",
600+ "type": "text",
601+ "primaryKey": false,
602+ "notNull": true
603+ },
604+ "databasePassword": {
605+ "name": "databasePassword",
606+ "type": "text",
607+ "primaryKey": false,
608+ "notNull": true
609+ },
610+ "description": {
611+ "name": "description",
612+ "type": "text",
613+ "primaryKey": false,
614+ "notNull": false
615+ },
616+ "dockerImage": {
617+ "name": "dockerImage",
618+ "type": "text",
619+ "primaryKey": false,
620+ "notNull": true
621+ },
622+ "command": {
623+ "name": "command",
624+ "type": "text",
625+ "primaryKey": false,
626+ "notNull": false
627+ },
628+ "env": {
629+ "name": "env",
630+ "type": "text",
631+ "primaryKey": false,
632+ "notNull": false
633+ },
634+ "memoryReservation": {
635+ "name": "memoryReservation",
636+ "type": "text",
637+ "primaryKey": false,
638+ "notNull": false
639+ },
640+ "externalPort": {
641+ "name": "externalPort",
642+ "type": "integer",
643+ "primaryKey": false,
644+ "notNull": false
645+ },
646+ "memoryLimit": {
647+ "name": "memoryLimit",
648+ "type": "text",
649+ "primaryKey": false,
650+ "notNull": false
651+ },
652+ "cpuReservation": {
653+ "name": "cpuReservation",
654+ "type": "text",
655+ "primaryKey": false,
656+ "notNull": false
657+ },
658+ "cpuLimit": {
659+ "name": "cpuLimit",
660+ "type": "text",
661+ "primaryKey": false,
662+ "notNull": false
663+ },
664+ "applicationStatus": {
665+ "name": "applicationStatus",
666+ "type": "applicationStatus",
667+ "typeSchema": "public",
668+ "primaryKey": false,
669+ "notNull": true,
670+ "default": "'idle'"
671+ },
672+ "createdAt": {
673+ "name": "createdAt",
674+ "type": "text",
675+ "primaryKey": false,
676+ "notNull": true
677+ },
678+ "projectId": {
679+ "name": "projectId",
680+ "type": "text",
681+ "primaryKey": false,
682+ "notNull": true
683+ },
684+ "serverId": {
685+ "name": "serverId",
686+ "type": "text",
687+ "primaryKey": false,
688+ "notNull": false
689+ }
690+ },
691+ "indexes": {},
692+ "foreignKeys": {
693+ "postgres_projectId_project_projectId_fk": {
694+ "name": "postgres_projectId_project_projectId_fk",
695+ "tableFrom": "postgres",
696+ "tableTo": "project",
697+ "columnsFrom": [
698+ "projectId"
699+ ],
700+ "columnsTo": [
701+ "projectId"
702+ ],
703+ "onDelete": "cascade",
704+ "onUpdate": "no action"
705+ },
706+ "postgres_serverId_server_serverId_fk": {
707+ "name": "postgres_serverId_server_serverId_fk",
708+ "tableFrom": "postgres",
709+ "tableTo": "server",
710+ "columnsFrom": [
711+ "serverId"
712+ ],
713+ "columnsTo": [
714+ "serverId"
715+ ],
716+ "onDelete": "cascade",
717+ "onUpdate": "no action"
718+ }
719+ },
720+ "compositePrimaryKeys": {},
721+ "uniqueConstraints": {
722+ "postgres_appName_unique": {
723+ "name": "postgres_appName_unique",
724+ "nullsNotDistinct": false,
725+ "columns": [
726+ "appName"
727+ ]
728+ }
729+ },
730+ "policies": {},
731+ "checkConstraints": {},
732+ "isRLSEnabled": false
733+ },
734+ "public.user_temp": {
735+ "name": "user_temp",
736+ "schema": "",
737+ "columns": {
738+ "id": {
739+ "name": "id",
740+ "type": "text",
741+ "primaryKey": true,
742+ "notNull": true
743+ },
744+ "name": {
745+ "name": "name",
746+ "type": "text",
747+ "primaryKey": false,
748+ "notNull": true,
749+ "default": "''"
750+ },
751+ "isRegistered": {
752+ "name": "isRegistered",
753+ "type": "boolean",
754+ "primaryKey": false,
755+ "notNull": true,
756+ "default": false
757+ },
758+ "expirationDate": {
759+ "name": "expirationDate",
760+ "type": "text",
761+ "primaryKey": false,
762+ "notNull": true
763+ },
764+ "createdAt": {
765+ "name": "createdAt",
766+ "type": "text",
767+ "primaryKey": false,
768+ "notNull": true
769+ },
770+ "created_at": {
771+ "name": "created_at",
772+ "type": "timestamp",
773+ "primaryKey": false,
774+ "notNull": false,
775+ "default": "now()"
776+ },
777+ "two_factor_enabled": {
778+ "name": "two_factor_enabled",
779+ "type": "boolean",
780+ "primaryKey": false,
781+ "notNull": false
782+ },
783+ "email": {
784+ "name": "email",
785+ "type": "text",
786+ "primaryKey": false,
787+ "notNull": true
788+ },
789+ "email_verified": {
790+ "name": "email_verified",
791+ "type": "boolean",
792+ "primaryKey": false,
793+ "notNull": true
794+ },
795+ "image": {
796+ "name": "image",
797+ "type": "text",
798+ "primaryKey": false,
799+ "notNull": false
800+ },
801+ "banned": {
802+ "name": "banned",
803+ "type": "boolean",
804+ "primaryKey": false,
805+ "notNull": false
806+ },
807+ "ban_reason": {
808+ "name": "ban_reason",
809+ "type": "text",
810+ "primaryKey": false,
811+ "notNull": false
812+ },
813+ "ban_expires": {
814+ "name": "ban_expires",
815+ "type": "timestamp",
816+ "primaryKey": false,
817+ "notNull": false
818+ },
819+ "updated_at": {
820+ "name": "updated_at",
821+ "type": "timestamp",
822+ "primaryKey": false,
823+ "notNull": true
824+ },
825+ "serverIp": {
826+ "name": "serverIp",
827+ "type": "text",
828+ "primaryKey": false,
829+ "notNull": false
830+ },
831+ "certificateType": {
832+ "name": "certificateType",
833+ "type": "certificateType",
834+ "typeSchema": "public",
835+ "primaryKey": false,
836+ "notNull": true,
837+ "default": "'none'"
838+ },
839+ "host": {
840+ "name": "host",
841+ "type": "text",
842+ "primaryKey": false,
843+ "notNull": false
844+ },
845+ "letsEncryptEmail": {
846+ "name": "letsEncryptEmail",
847+ "type": "text",
848+ "primaryKey": false,
849+ "notNull": false
850+ },
851+ "sshPrivateKey": {
852+ "name": "sshPrivateKey",
853+ "type": "text",
854+ "primaryKey": false,
855+ "notNull": false
856+ },
857+ "enableDockerCleanup": {
858+ "name": "enableDockerCleanup",
859+ "type": "boolean",
860+ "primaryKey": false,
861+ "notNull": true,
862+ "default": false
863+ },
864+ "enableLogRotation": {
865+ "name": "enableLogRotation",
866+ "type": "boolean",
867+ "primaryKey": false,
868+ "notNull": true,
869+ "default": false
870+ },
871+ "enablePaidFeatures": {
872+ "name": "enablePaidFeatures",
873+ "type": "boolean",
874+ "primaryKey": false,
875+ "notNull": true,
876+ "default": false
877+ },
878+ "metricsConfig": {
879+ "name": "metricsConfig",
880+ "type": "jsonb",
881+ "primaryKey": false,
882+ "notNull": true,
883+ "default": "'{\"server\":{\"type\":\"Dokploy\",\"refreshRate\":60,\"port\":4500,\"token\":\"\",\"retentionDays\":2,\"cronJob\":\"\",\"urlCallback\":\"\",\"thresholds\":{\"cpu\":0,\"memory\":0}},\"containers\":{\"refreshRate\":60,\"services\":{\"include\":[],\"exclude\":[]}}}'::jsonb"
884+ },
885+ "cleanupCacheApplications": {
886+ "name": "cleanupCacheApplications",
887+ "type": "boolean",
888+ "primaryKey": false,
889+ "notNull": true,
890+ "default": false
891+ },
892+ "cleanupCacheOnPreviews": {
893+ "name": "cleanupCacheOnPreviews",
894+ "type": "boolean",
895+ "primaryKey": false,
896+ "notNull": true,
897+ "default": false
898+ },
899+ "cleanupCacheOnCompose": {
900+ "name": "cleanupCacheOnCompose",
901+ "type": "boolean",
902+ "primaryKey": false,
903+ "notNull": true,
904+ "default": false
905+ },
906+ "stripeCustomerId": {
907+ "name": "stripeCustomerId",
908+ "type": "text",
909+ "primaryKey": false,
910+ "notNull": false
911+ },
912+ "stripeSubscriptionId": {
913+ "name": "stripeSubscriptionId",
914+ "type": "text",
915+ "primaryKey": false,
916+ "notNull": false
917+ },
918+ "serversQuantity": {
919+ "name": "serversQuantity",
920+ "type": "integer",
921+ "primaryKey": false,
922+ "notNull": true,
923+ "default": 0
924+ }
925+ },
926+ "indexes": {},
927+ "foreignKeys": {},
928+ "compositePrimaryKeys": {},
929+ "uniqueConstraints": {
930+ "user_temp_email_unique": {
931+ "name": "user_temp_email_unique",
932+ "nullsNotDistinct": false,
933+ "columns": [
934+ "email"
935+ ]
936+ }
937+ },
938+ "policies": {},
939+ "checkConstraints": {},
940+ "isRLSEnabled": false
941+ },
942+ "public.project": {
943+ "name": "project",
944+ "schema": "",
945+ "columns": {
946+ "projectId": {
947+ "name": "projectId",
948+ "type": "text",
949+ "primaryKey": true,
950+ "notNull": true
951+ },
952+ "name": {
953+ "name": "name",
954+ "type": "text",
955+ "primaryKey": false,
956+ "notNull": true
957+ },
958+ "description": {
959+ "name": "description",
960+ "type": "text",
961+ "primaryKey": false,
962+ "notNull": false
963+ },
964+ "createdAt": {
965+ "name": "createdAt",
966+ "type": "text",
967+ "primaryKey": false,
968+ "notNull": true
969+ },
970+ "organizationId": {
971+ "name": "organizationId",
972+ "type": "text",
973+ "primaryKey": false,
974+ "notNull": true
975+ },
976+ "env": {
977+ "name": "env",
978+ "type": "text",
979+ "primaryKey": false,
980+ "notNull": true,
981+ "default": "''"
982+ }
983+ },
984+ "indexes": {},
985+ "foreignKeys": {
986+ "project_organizationId_organization_id_fk": {
987+ "name": "project_organizationId_organization_id_fk",
988+ "tableFrom": "project",
989+ "tableTo": "organization",
990+ "columnsFrom": [
991+ "organizationId"
992+ ],
993+ "columnsTo": [
994+ "id"
995+ ],
996+ "onDelete": "cascade",
997+ "onUpdate": "no action"
998+ }
999+ },
1000+ "compositePrimaryKeys": {},
1001+ "uniqueConstraints": {},
1002+ "policies": {},
1003+ "checkConstraints": {},
1004+ "isRLSEnabled": false
1005+ },
1006+ "public.domain": {
1007+ "name": "domain",
1008+ "schema": "",
1009+ "columns": {
1010+ "domainId": {
1011+ "name": "domainId",
1012+ "type": "text",
1013+ "primaryKey": true,
1014+ "notNull": true
1015+ },
1016+ "host": {
1017+ "name": "host",
1018+ "type": "text",
1019+ "primaryKey": false,
1020+ "notNull": true
1021+ },
1022+ "https": {
1023+ "name": "https",
1024+ "type": "boolean",
1025+ "primaryKey": false,
1026+ "notNull": true,
1027+ "default": false
1028+ },
1029+ "port": {
1030+ "name": "port",
1031+ "type": "integer",
1032+ "primaryKey": false,
1033+ "notNull": false,
1034+ "default": 3000
1035+ },
1036+ "path": {
1037+ "name": "path",
1038+ "type": "text",
1039+ "primaryKey": false,
1040+ "notNull": false,
1041+ "default": "'/'"
1042+ },
1043+ "serviceName": {
1044+ "name": "serviceName",
1045+ "type": "text",
1046+ "primaryKey": false,
1047+ "notNull": false
1048+ },
1049+ "domainType": {
1050+ "name": "domainType",
1051+ "type": "domainType",
1052+ "typeSchema": "public",
1053+ "primaryKey": false,
1054+ "notNull": false,
1055+ "default": "'application'"
1056+ },
1057+ "uniqueConfigKey": {
1058+ "name": "uniqueConfigKey",
1059+ "type": "serial",
1060+ "primaryKey": false,
1061+ "notNull": true
1062+ },
1063+ "createdAt": {
1064+ "name": "createdAt",
1065+ "type": "text",
1066+ "primaryKey": false,
1067+ "notNull": true
1068+ },
1069+ "composeId": {
1070+ "name": "composeId",
1071+ "type": "text",
1072+ "primaryKey": false,
1073+ "notNull": false
1074+ },
1075+ "applicationId": {
1076+ "name": "applicationId",
1077+ "type": "text",
1078+ "primaryKey": false,
1079+ "notNull": false
1080+ },
1081+ "previewDeploymentId": {
1082+ "name": "previewDeploymentId",
1083+ "type": "text",
1084+ "primaryKey": false,
1085+ "notNull": false
1086+ },
1087+ "certificateType": {
1088+ "name": "certificateType",
1089+ "type": "certificateType",
1090+ "typeSchema": "public",
1091+ "primaryKey": false,
1092+ "notNull": true,
1093+ "default": "'none'"
1094+ }
1095+ },
1096+ "indexes": {},
1097+ "foreignKeys": {
1098+ "domain_composeId_compose_composeId_fk": {
1099+ "name": "domain_composeId_compose_composeId_fk",
1100+ "tableFrom": "domain",
1101+ "tableTo": "compose",
1102+ "columnsFrom": [
1103+ "composeId"
1104+ ],
1105+ "columnsTo": [
1106+ "composeId"
1107+ ],
1108+ "onDelete": "cascade",
1109+ "onUpdate": "no action"
1110+ },
1111+ "domain_applicationId_application_applicationId_fk": {
1112+ "name": "domain_applicationId_application_applicationId_fk",
1113+ "tableFrom": "domain",
1114+ "tableTo": "application",
1115+ "columnsFrom": [
1116+ "applicationId"
1117+ ],
1118+ "columnsTo": [
1119+ "applicationId"
1120+ ],
1121+ "onDelete": "cascade",
1122+ "onUpdate": "no action"
1123+ },
1124+ "domain_previewDeploymentId_preview_deployments_previewDeploymentId_fk": {
1125+ "name": "domain_previewDeploymentId_preview_deployments_previewDeploymentId_fk",
1126+ "tableFrom": "domain",
1127+ "tableTo": "preview_deployments",
1128+ "columnsFrom": [
1129+ "previewDeploymentId"
1130+ ],
1131+ "columnsTo": [
1132+ "previewDeploymentId"
1133+ ],
1134+ "onDelete": "cascade",
1135+ "onUpdate": "no action"
1136+ }
1137+ },
1138+ "compositePrimaryKeys": {},
1139+ "uniqueConstraints": {},
1140+ "policies": {},
1141+ "checkConstraints": {},
1142+ "isRLSEnabled": false
1143+ },
1144+ "public.mariadb": {
1145+ "name": "mariadb",
1146+ "schema": "",
1147+ "columns": {
1148+ "mariadbId": {
1149+ "name": "mariadbId",
1150+ "type": "text",
1151+ "primaryKey": true,
1152+ "notNull": true
1153+ },
1154+ "name": {
1155+ "name": "name",
1156+ "type": "text",
1157+ "primaryKey": false,
1158+ "notNull": true
1159+ },
1160+ "appName": {
1161+ "name": "appName",
1162+ "type": "text",
1163+ "primaryKey": false,
1164+ "notNull": true
1165+ },
1166+ "description": {
1167+ "name": "description",
1168+ "type": "text",
1169+ "primaryKey": false,
1170+ "notNull": false
1171+ },
1172+ "databaseName": {
1173+ "name": "databaseName",
1174+ "type": "text",
1175+ "primaryKey": false,
1176+ "notNull": true
1177+ },
1178+ "databaseUser": {
1179+ "name": "databaseUser",
1180+ "type": "text",
1181+ "primaryKey": false,
1182+ "notNull": true
1183+ },
1184+ "databasePassword": {
1185+ "name": "databasePassword",
1186+ "type": "text",
1187+ "primaryKey": false,
1188+ "notNull": true
1189+ },
1190+ "rootPassword": {
1191+ "name": "rootPassword",
1192+ "type": "text",
1193+ "primaryKey": false,
1194+ "notNull": true
1195+ },
1196+ "dockerImage": {
1197+ "name": "dockerImage",
1198+ "type": "text",
1199+ "primaryKey": false,
1200+ "notNull": true
1201+ },
1202+ "command": {
1203+ "name": "command",
1204+ "type": "text",
1205+ "primaryKey": false,
1206+ "notNull": false
1207+ },
1208+ "env": {
1209+ "name": "env",
1210+ "type": "text",
1211+ "primaryKey": false,
1212+ "notNull": false
1213+ },
1214+ "memoryReservation": {
1215+ "name": "memoryReservation",
1216+ "type": "text",
1217+ "primaryKey": false,
1218+ "notNull": false
1219+ },
1220+ "memoryLimit": {
1221+ "name": "memoryLimit",
1222+ "type": "text",
1223+ "primaryKey": false,
1224+ "notNull": false
1225+ },
1226+ "cpuReservation": {
1227+ "name": "cpuReservation",
1228+ "type": "text",
1229+ "primaryKey": false,
1230+ "notNull": false
1231+ },
1232+ "cpuLimit": {
1233+ "name": "cpuLimit",
1234+ "type": "text",
1235+ "primaryKey": false,
1236+ "notNull": false
1237+ },
1238+ "externalPort": {
1239+ "name": "externalPort",
1240+ "type": "integer",
1241+ "primaryKey": false,
1242+ "notNull": false
1243+ },
1244+ "applicationStatus": {
1245+ "name": "applicationStatus",
1246+ "type": "applicationStatus",
1247+ "typeSchema": "public",
1248+ "primaryKey": false,
1249+ "notNull": true,
1250+ "default": "'idle'"
1251+ },
1252+ "createdAt": {
1253+ "name": "createdAt",
1254+ "type": "text",
1255+ "primaryKey": false,
1256+ "notNull": true
1257+ },
1258+ "projectId": {
1259+ "name": "projectId",
1260+ "type": "text",
1261+ "primaryKey": false,
1262+ "notNull": true
1263+ },
1264+ "serverId": {
1265+ "name": "serverId",
1266+ "type": "text",
1267+ "primaryKey": false,
1268+ "notNull": false
1269+ }
1270+ },
1271+ "indexes": {},
1272+ "foreignKeys": {
1273+ "mariadb_projectId_project_projectId_fk": {
1274+ "name": "mariadb_projectId_project_projectId_fk",
1275+ "tableFrom": "mariadb",
1276+ "tableTo": "project",
1277+ "columnsFrom": [
1278+ "projectId"
1279+ ],
1280+ "columnsTo": [
1281+ "projectId"
1282+ ],
1283+ "onDelete": "cascade",
1284+ "onUpdate": "no action"
1285+ },
1286+ "mariadb_serverId_server_serverId_fk": {
1287+ "name": "mariadb_serverId_server_serverId_fk",
1288+ "tableFrom": "mariadb",
1289+ "tableTo": "server",
1290+ "columnsFrom": [
1291+ "serverId"
1292+ ],
1293+ "columnsTo": [
1294+ "serverId"
1295+ ],
1296+ "onDelete": "cascade",
1297+ "onUpdate": "no action"
1298+ }
1299+ },
1300+ "compositePrimaryKeys": {},
1301+ "uniqueConstraints": {
1302+ "mariadb_appName_unique": {
1303+ "name": "mariadb_appName_unique",
1304+ "nullsNotDistinct": false,
1305+ "columns": [
1306+ "appName"
1307+ ]
1308+ }
1309+ },
1310+ "policies": {},
1311+ "checkConstraints": {},
1312+ "isRLSEnabled": false
1313+ },
1314+ "public.mongo": {
1315+ "name": "mongo",
1316+ "schema": "",
1317+ "columns": {
1318+ "mongoId": {
1319+ "name": "mongoId",
1320+ "type": "text",
1321+ "primaryKey": true,
1322+ "notNull": true
1323+ },
1324+ "name": {
1325+ "name": "name",
1326+ "type": "text",
1327+ "primaryKey": false,
1328+ "notNull": true
1329+ },
1330+ "appName": {
1331+ "name": "appName",
1332+ "type": "text",
1333+ "primaryKey": false,
1334+ "notNull": true
1335+ },
1336+ "description": {
1337+ "name": "description",
1338+ "type": "text",
1339+ "primaryKey": false,
1340+ "notNull": false
1341+ },
1342+ "databaseUser": {
1343+ "name": "databaseUser",
1344+ "type": "text",
1345+ "primaryKey": false,
1346+ "notNull": true
1347+ },
1348+ "databasePassword": {
1349+ "name": "databasePassword",
1350+ "type": "text",
1351+ "primaryKey": false,
1352+ "notNull": true
1353+ },
1354+ "dockerImage": {
1355+ "name": "dockerImage",
1356+ "type": "text",
1357+ "primaryKey": false,
1358+ "notNull": true
1359+ },
1360+ "command": {
1361+ "name": "command",
1362+ "type": "text",
1363+ "primaryKey": false,
1364+ "notNull": false
1365+ },
1366+ "env": {
1367+ "name": "env",
1368+ "type": "text",
1369+ "primaryKey": false,
1370+ "notNull": false
1371+ },
1372+ "memoryReservation": {
1373+ "name": "memoryReservation",
1374+ "type": "text",
1375+ "primaryKey": false,
1376+ "notNull": false
1377+ },
1378+ "memoryLimit": {
1379+ "name": "memoryLimit",
1380+ "type": "text",
1381+ "primaryKey": false,
1382+ "notNull": false
1383+ },
1384+ "cpuReservation": {
1385+ "name": "cpuReservation",
1386+ "type": "text",
1387+ "primaryKey": false,
1388+ "notNull": false
1389+ },
1390+ "cpuLimit": {
1391+ "name": "cpuLimit",
1392+ "type": "text",
1393+ "primaryKey": false,
1394+ "notNull": false
1395+ },
1396+ "externalPort": {
1397+ "name": "externalPort",
1398+ "type": "integer",
1399+ "primaryKey": false,
1400+ "notNull": false
1401+ },
1402+ "applicationStatus": {
1403+ "name": "applicationStatus",
1404+ "type": "applicationStatus",
1405+ "typeSchema": "public",
1406+ "primaryKey": false,
1407+ "notNull": true,
1408+ "default": "'idle'"
1409+ },
1410+ "createdAt": {
1411+ "name": "createdAt",
1412+ "type": "text",
1413+ "primaryKey": false,
1414+ "notNull": true
1415+ },
1416+ "projectId": {
1417+ "name": "projectId",
1418+ "type": "text",
1419+ "primaryKey": false,
1420+ "notNull": true
1421+ },
1422+ "serverId": {
1423+ "name": "serverId",
1424+ "type": "text",
1425+ "primaryKey": false,
1426+ "notNull": false
1427+ },
1428+ "replicaSets": {
1429+ "name": "replicaSets",
1430+ "type": "boolean",
1431+ "primaryKey": false,
1432+ "notNull": false,
1433+ "default": false
1434+ }
1435+ },
1436+ "indexes": {},
1437+ "foreignKeys": {
1438+ "mongo_projectId_project_projectId_fk": {
1439+ "name": "mongo_projectId_project_projectId_fk",
1440+ "tableFrom": "mongo",
1441+ "tableTo": "project",
1442+ "columnsFrom": [
1443+ "projectId"
1444+ ],
1445+ "columnsTo": [
1446+ "projectId"
1447+ ],
1448+ "onDelete": "cascade",
1449+ "onUpdate": "no action"
1450+ },
1451+ "mongo_serverId_server_serverId_fk": {
1452+ "name": "mongo_serverId_server_serverId_fk",
1453+ "tableFrom": "mongo",
1454+ "tableTo": "server",
1455+ "columnsFrom": [
1456+ "serverId"
1457+ ],
1458+ "columnsTo": [
1459+ "serverId"
1460+ ],
1461+ "onDelete": "cascade",
1462+ "onUpdate": "no action"
1463+ }
1464+ },
1465+ "compositePrimaryKeys": {},
1466+ "uniqueConstraints": {
1467+ "mongo_appName_unique": {
1468+ "name": "mongo_appName_unique",
1469+ "nullsNotDistinct": false,
1470+ "columns": [
1471+ "appName"
1472+ ]
1473+ }
1474+ },
1475+ "policies": {},
1476+ "checkConstraints": {},
1477+ "isRLSEnabled": false
1478+ },
1479+ "public.mysql": {
1480+ "name": "mysql",
1481+ "schema": "",
1482+ "columns": {
1483+ "mysqlId": {
1484+ "name": "mysqlId",
1485+ "type": "text",
1486+ "primaryKey": true,
1487+ "notNull": true
1488+ },
1489+ "name": {
1490+ "name": "name",
1491+ "type": "text",
1492+ "primaryKey": false,
1493+ "notNull": true
1494+ },
1495+ "appName": {
1496+ "name": "appName",
1497+ "type": "text",
1498+ "primaryKey": false,
1499+ "notNull": true
1500+ },
1501+ "description": {
1502+ "name": "description",
1503+ "type": "text",
1504+ "primaryKey": false,
1505+ "notNull": false
1506+ },
1507+ "databaseName": {
1508+ "name": "databaseName",
1509+ "type": "text",
1510+ "primaryKey": false,
1511+ "notNull": true
1512+ },
1513+ "databaseUser": {
1514+ "name": "databaseUser",
1515+ "type": "text",
1516+ "primaryKey": false,
1517+ "notNull": true
1518+ },
1519+ "databasePassword": {
1520+ "name": "databasePassword",
1521+ "type": "text",
1522+ "primaryKey": false,
1523+ "notNull": true
1524+ },
1525+ "rootPassword": {
1526+ "name": "rootPassword",
1527+ "type": "text",
1528+ "primaryKey": false,
1529+ "notNull": true
1530+ },
1531+ "dockerImage": {
1532+ "name": "dockerImage",
1533+ "type": "text",
1534+ "primaryKey": false,
1535+ "notNull": true
1536+ },
1537+ "command": {
1538+ "name": "command",
1539+ "type": "text",
1540+ "primaryKey": false,
1541+ "notNull": false
1542+ },
1543+ "env": {
1544+ "name": "env",
1545+ "type": "text",
1546+ "primaryKey": false,
1547+ "notNull": false
1548+ },
1549+ "memoryReservation": {
1550+ "name": "memoryReservation",
1551+ "type": "text",
1552+ "primaryKey": false,
1553+ "notNull": false
1554+ },
1555+ "memoryLimit": {
1556+ "name": "memoryLimit",
1557+ "type": "text",
1558+ "primaryKey": false,
1559+ "notNull": false
1560+ },
1561+ "cpuReservation": {
1562+ "name": "cpuReservation",
1563+ "type": "text",
1564+ "primaryKey": false,
1565+ "notNull": false
1566+ },
1567+ "cpuLimit": {
1568+ "name": "cpuLimit",
1569+ "type": "text",
1570+ "primaryKey": false,
1571+ "notNull": false
1572+ },
1573+ "externalPort": {
1574+ "name": "externalPort",
1575+ "type": "integer",
1576+ "primaryKey": false,
1577+ "notNull": false
1578+ },
1579+ "applicationStatus": {
1580+ "name": "applicationStatus",
1581+ "type": "applicationStatus",
1582+ "typeSchema": "public",
1583+ "primaryKey": false,
1584+ "notNull": true,
1585+ "default": "'idle'"
1586+ },
1587+ "createdAt": {
1588+ "name": "createdAt",
1589+ "type": "text",
1590+ "primaryKey": false,
1591+ "notNull": true
1592+ },
1593+ "projectId": {
1594+ "name": "projectId",
1595+ "type": "text",
1596+ "primaryKey": false,
1597+ "notNull": true
1598+ },
1599+ "serverId": {
1600+ "name": "serverId",
1601+ "type": "text",
1602+ "primaryKey": false,
1603+ "notNull": false
1604+ }
1605+ },
1606+ "indexes": {},
1607+ "foreignKeys": {
1608+ "mysql_projectId_project_projectId_fk": {
1609+ "name": "mysql_projectId_project_projectId_fk",
1610+ "tableFrom": "mysql",
1611+ "tableTo": "project",
1612+ "columnsFrom": [
1613+ "projectId"
1614+ ],
1615+ "columnsTo": [
1616+ "projectId"
1617+ ],
1618+ "onDelete": "cascade",
1619+ "onUpdate": "no action"
1620+ },
1621+ "mysql_serverId_server_serverId_fk": {
1622+ "name": "mysql_serverId_server_serverId_fk",
1623+ "tableFrom": "mysql",
1624+ "tableTo": "server",
1625+ "columnsFrom": [
1626+ "serverId"
1627+ ],
1628+ "columnsTo": [
1629+ "serverId"
1630+ ],
1631+ "onDelete": "cascade",
1632+ "onUpdate": "no action"
1633+ }
1634+ },
1635+ "compositePrimaryKeys": {},
1636+ "uniqueConstraints": {
1637+ "mysql_appName_unique": {
1638+ "name": "mysql_appName_unique",
1639+ "nullsNotDistinct": false,
1640+ "columns": [
1641+ "appName"
1642+ ]
1643+ }
1644+ },
1645+ "policies": {},
1646+ "checkConstraints": {},
1647+ "isRLSEnabled": false
1648+ },
1649+ "public.backup": {
1650+ "name": "backup",
1651+ "schema": "",
1652+ "columns": {
1653+ "backupId": {
1654+ "name": "backupId",
1655+ "type": "text",
1656+ "primaryKey": true,
1657+ "notNull": true
1658+ },
1659+ "schedule": {
1660+ "name": "schedule",
1661+ "type": "text",
1662+ "primaryKey": false,
1663+ "notNull": true
1664+ },
1665+ "enabled": {
1666+ "name": "enabled",
1667+ "type": "boolean",
1668+ "primaryKey": false,
1669+ "notNull": false
1670+ },
1671+ "database": {
1672+ "name": "database",
1673+ "type": "text",
1674+ "primaryKey": false,
1675+ "notNull": true
1676+ },
1677+ "prefix": {
1678+ "name": "prefix",
1679+ "type": "text",
1680+ "primaryKey": false,
1681+ "notNull": true
1682+ },
1683+ "destinationId": {
1684+ "name": "destinationId",
1685+ "type": "text",
1686+ "primaryKey": false,
1687+ "notNull": true
1688+ },
1689+ "databaseType": {
1690+ "name": "databaseType",
1691+ "type": "databaseType",
1692+ "typeSchema": "public",
1693+ "primaryKey": false,
1694+ "notNull": true
1695+ },
1696+ "postgresId": {
1697+ "name": "postgresId",
1698+ "type": "text",
1699+ "primaryKey": false,
1700+ "notNull": false
1701+ },
1702+ "mariadbId": {
1703+ "name": "mariadbId",
1704+ "type": "text",
1705+ "primaryKey": false,
1706+ "notNull": false
1707+ },
1708+ "mysqlId": {
1709+ "name": "mysqlId",
1710+ "type": "text",
1711+ "primaryKey": false,
1712+ "notNull": false
1713+ },
1714+ "mongoId": {
1715+ "name": "mongoId",
1716+ "type": "text",
1717+ "primaryKey": false,
1718+ "notNull": false
1719+ }
1720+ },
1721+ "indexes": {},
1722+ "foreignKeys": {
1723+ "backup_destinationId_destination_destinationId_fk": {
1724+ "name": "backup_destinationId_destination_destinationId_fk",
1725+ "tableFrom": "backup",
1726+ "tableTo": "destination",
1727+ "columnsFrom": [
1728+ "destinationId"
1729+ ],
1730+ "columnsTo": [
1731+ "destinationId"
1732+ ],
1733+ "onDelete": "cascade",
1734+ "onUpdate": "no action"
1735+ },
1736+ "backup_postgresId_postgres_postgresId_fk": {
1737+ "name": "backup_postgresId_postgres_postgresId_fk",
1738+ "tableFrom": "backup",
1739+ "tableTo": "postgres",
1740+ "columnsFrom": [
1741+ "postgresId"
1742+ ],
1743+ "columnsTo": [
1744+ "postgresId"
1745+ ],
1746+ "onDelete": "cascade",
1747+ "onUpdate": "no action"
1748+ },
1749+ "backup_mariadbId_mariadb_mariadbId_fk": {
1750+ "name": "backup_mariadbId_mariadb_mariadbId_fk",
1751+ "tableFrom": "backup",
1752+ "tableTo": "mariadb",
1753+ "columnsFrom": [
1754+ "mariadbId"
1755+ ],
1756+ "columnsTo": [
1757+ "mariadbId"
1758+ ],
1759+ "onDelete": "cascade",
1760+ "onUpdate": "no action"
1761+ },
1762+ "backup_mysqlId_mysql_mysqlId_fk": {
1763+ "name": "backup_mysqlId_mysql_mysqlId_fk",
1764+ "tableFrom": "backup",
1765+ "tableTo": "mysql",
1766+ "columnsFrom": [
1767+ "mysqlId"
1768+ ],
1769+ "columnsTo": [
1770+ "mysqlId"
1771+ ],
1772+ "onDelete": "cascade",
1773+ "onUpdate": "no action"
1774+ },
1775+ "backup_mongoId_mongo_mongoId_fk": {
1776+ "name": "backup_mongoId_mongo_mongoId_fk",
1777+ "tableFrom": "backup",
1778+ "tableTo": "mongo",
1779+ "columnsFrom": [
1780+ "mongoId"
1781+ ],
1782+ "columnsTo": [
1783+ "mongoId"
1784+ ],
1785+ "onDelete": "cascade",
1786+ "onUpdate": "no action"
1787+ }
1788+ },
1789+ "compositePrimaryKeys": {},
1790+ "uniqueConstraints": {},
1791+ "policies": {},
1792+ "checkConstraints": {},
1793+ "isRLSEnabled": false
1794+ },
1795+ "public.destination": {
1796+ "name": "destination",
1797+ "schema": "",
1798+ "columns": {
1799+ "destinationId": {
1800+ "name": "destinationId",
1801+ "type": "text",
1802+ "primaryKey": true,
1803+ "notNull": true
1804+ },
1805+ "name": {
1806+ "name": "name",
1807+ "type": "text",
1808+ "primaryKey": false,
1809+ "notNull": true
1810+ },
1811+ "provider": {
1812+ "name": "provider",
1813+ "type": "text",
1814+ "primaryKey": false,
1815+ "notNull": false
1816+ },
1817+ "accessKey": {
1818+ "name": "accessKey",
1819+ "type": "text",
1820+ "primaryKey": false,
1821+ "notNull": true
1822+ },
1823+ "secretAccessKey": {
1824+ "name": "secretAccessKey",
1825+ "type": "text",
1826+ "primaryKey": false,
1827+ "notNull": true
1828+ },
1829+ "bucket": {
1830+ "name": "bucket",
1831+ "type": "text",
1832+ "primaryKey": false,
1833+ "notNull": true
1834+ },
1835+ "region": {
1836+ "name": "region",
1837+ "type": "text",
1838+ "primaryKey": false,
1839+ "notNull": true
1840+ },
1841+ "endpoint": {
1842+ "name": "endpoint",
1843+ "type": "text",
1844+ "primaryKey": false,
1845+ "notNull": true
1846+ },
1847+ "organizationId": {
1848+ "name": "organizationId",
1849+ "type": "text",
1850+ "primaryKey": false,
1851+ "notNull": true
1852+ },
1853+ "createdAt": {
1854+ "name": "createdAt",
1855+ "type": "timestamp",
1856+ "primaryKey": false,
1857+ "notNull": true,
1858+ "default": "now()"
1859+ }
1860+ },
1861+ "indexes": {},
1862+ "foreignKeys": {
1863+ "destination_organizationId_organization_id_fk": {
1864+ "name": "destination_organizationId_organization_id_fk",
1865+ "tableFrom": "destination",
1866+ "tableTo": "organization",
1867+ "columnsFrom": [
1868+ "organizationId"
1869+ ],
1870+ "columnsTo": [
1871+ "id"
1872+ ],
1873+ "onDelete": "cascade",
1874+ "onUpdate": "no action"
1875+ }
1876+ },
1877+ "compositePrimaryKeys": {},
1878+ "uniqueConstraints": {},
1879+ "policies": {},
1880+ "checkConstraints": {},
1881+ "isRLSEnabled": false
1882+ },
1883+ "public.deployment": {
1884+ "name": "deployment",
1885+ "schema": "",
1886+ "columns": {
1887+ "deploymentId": {
1888+ "name": "deploymentId",
1889+ "type": "text",
1890+ "primaryKey": true,
1891+ "notNull": true
1892+ },
1893+ "title": {
1894+ "name": "title",
1895+ "type": "text",
1896+ "primaryKey": false,
1897+ "notNull": true
1898+ },
1899+ "description": {
1900+ "name": "description",
1901+ "type": "text",
1902+ "primaryKey": false,
1903+ "notNull": false
1904+ },
1905+ "status": {
1906+ "name": "status",
1907+ "type": "deploymentStatus",
1908+ "typeSchema": "public",
1909+ "primaryKey": false,
1910+ "notNull": false,
1911+ "default": "'running'"
1912+ },
1913+ "logPath": {
1914+ "name": "logPath",
1915+ "type": "text",
1916+ "primaryKey": false,
1917+ "notNull": true
1918+ },
1919+ "applicationId": {
1920+ "name": "applicationId",
1921+ "type": "text",
1922+ "primaryKey": false,
1923+ "notNull": false
1924+ },
1925+ "composeId": {
1926+ "name": "composeId",
1927+ "type": "text",
1928+ "primaryKey": false,
1929+ "notNull": false
1930+ },
1931+ "serverId": {
1932+ "name": "serverId",
1933+ "type": "text",
1934+ "primaryKey": false,
1935+ "notNull": false
1936+ },
1937+ "isPreviewDeployment": {
1938+ "name": "isPreviewDeployment",
1939+ "type": "boolean",
1940+ "primaryKey": false,
1941+ "notNull": false,
1942+ "default": false
1943+ },
1944+ "previewDeploymentId": {
1945+ "name": "previewDeploymentId",
1946+ "type": "text",
1947+ "primaryKey": false,
1948+ "notNull": false
1949+ },
1950+ "createdAt": {
1951+ "name": "createdAt",
1952+ "type": "text",
1953+ "primaryKey": false,
1954+ "notNull": true
1955+ },
1956+ "errorMessage": {
1957+ "name": "errorMessage",
1958+ "type": "text",
1959+ "primaryKey": false,
1960+ "notNull": false
1961+ }
1962+ },
1963+ "indexes": {},
1964+ "foreignKeys": {
1965+ "deployment_applicationId_application_applicationId_fk": {
1966+ "name": "deployment_applicationId_application_applicationId_fk",
1967+ "tableFrom": "deployment",
1968+ "tableTo": "application",
1969+ "columnsFrom": [
1970+ "applicationId"
1971+ ],
1972+ "columnsTo": [
1973+ "applicationId"
1974+ ],
1975+ "onDelete": "cascade",
1976+ "onUpdate": "no action"
1977+ },
1978+ "deployment_composeId_compose_composeId_fk": {
1979+ "name": "deployment_composeId_compose_composeId_fk",
1980+ "tableFrom": "deployment",
1981+ "tableTo": "compose",
1982+ "columnsFrom": [
1983+ "composeId"
1984+ ],
1985+ "columnsTo": [
1986+ "composeId"
1987+ ],
1988+ "onDelete": "cascade",
1989+ "onUpdate": "no action"
1990+ },
1991+ "deployment_serverId_server_serverId_fk": {
1992+ "name": "deployment_serverId_server_serverId_fk",
1993+ "tableFrom": "deployment",
1994+ "tableTo": "server",
1995+ "columnsFrom": [
1996+ "serverId"
1997+ ],
1998+ "columnsTo": [
1999+ "serverId"
2000+ ],
2001+ "onDelete": "cascade",
2002+ "onUpdate": "no action"
2003+ },
2004+ "deployment_previewDeploymentId_preview_deployments_previewDeploymentId_fk": {
2005+ "name": "deployment_previewDeploymentId_preview_deployments_previewDeploymentId_fk",
2006+ "tableFrom": "deployment",
2007+ "tableTo": "preview_deployments",
2008+ "columnsFrom": [
2009+ "previewDeploymentId"
2010+ ],
2011+ "columnsTo": [
2012+ "previewDeploymentId"
2013+ ],
2014+ "onDelete": "cascade",
2015+ "onUpdate": "no action"
2016+ }
2017+ },
2018+ "compositePrimaryKeys": {},
2019+ "uniqueConstraints": {},
2020+ "policies": {},
2021+ "checkConstraints": {},
2022+ "isRLSEnabled": false
2023+ },
2024+ "public.mount": {
2025+ "name": "mount",
2026+ "schema": "",
2027+ "columns": {
2028+ "mountId": {
2029+ "name": "mountId",
2030+ "type": "text",
2031+ "primaryKey": true,
2032+ "notNull": true
2033+ },
2034+ "type": {
2035+ "name": "type",
2036+ "type": "mountType",
2037+ "typeSchema": "public",
2038+ "primaryKey": false,
2039+ "notNull": true
2040+ },
2041+ "hostPath": {
2042+ "name": "hostPath",
2043+ "type": "text",
2044+ "primaryKey": false,
2045+ "notNull": false
2046+ },
2047+ "volumeName": {
2048+ "name": "volumeName",
2049+ "type": "text",
2050+ "primaryKey": false,
2051+ "notNull": false
2052+ },
2053+ "filePath": {
2054+ "name": "filePath",
2055+ "type": "text",
2056+ "primaryKey": false,
2057+ "notNull": false
2058+ },
2059+ "content": {
2060+ "name": "content",
2061+ "type": "text",
2062+ "primaryKey": false,
2063+ "notNull": false
2064+ },
2065+ "serviceType": {
2066+ "name": "serviceType",
2067+ "type": "serviceType",
2068+ "typeSchema": "public",
2069+ "primaryKey": false,
2070+ "notNull": true,
2071+ "default": "'application'"
2072+ },
2073+ "mountPath": {
2074+ "name": "mountPath",
2075+ "type": "text",
2076+ "primaryKey": false,
2077+ "notNull": true
2078+ },
2079+ "applicationId": {
2080+ "name": "applicationId",
2081+ "type": "text",
2082+ "primaryKey": false,
2083+ "notNull": false
2084+ },
2085+ "postgresId": {
2086+ "name": "postgresId",
2087+ "type": "text",
2088+ "primaryKey": false,
2089+ "notNull": false
2090+ },
2091+ "mariadbId": {
2092+ "name": "mariadbId",
2093+ "type": "text",
2094+ "primaryKey": false,
2095+ "notNull": false
2096+ },
2097+ "mongoId": {
2098+ "name": "mongoId",
2099+ "type": "text",
2100+ "primaryKey": false,
2101+ "notNull": false
2102+ },
2103+ "mysqlId": {
2104+ "name": "mysqlId",
2105+ "type": "text",
2106+ "primaryKey": false,
2107+ "notNull": false
2108+ },
2109+ "redisId": {
2110+ "name": "redisId",
2111+ "type": "text",
2112+ "primaryKey": false,
2113+ "notNull": false
2114+ },
2115+ "composeId": {
2116+ "name": "composeId",
2117+ "type": "text",
2118+ "primaryKey": false,
2119+ "notNull": false
2120+ }
2121+ },
2122+ "indexes": {},
2123+ "foreignKeys": {
2124+ "mount_applicationId_application_applicationId_fk": {
2125+ "name": "mount_applicationId_application_applicationId_fk",
2126+ "tableFrom": "mount",
2127+ "tableTo": "application",
2128+ "columnsFrom": [
2129+ "applicationId"
2130+ ],
2131+ "columnsTo": [
2132+ "applicationId"
2133+ ],
2134+ "onDelete": "cascade",
2135+ "onUpdate": "no action"
2136+ },
2137+ "mount_postgresId_postgres_postgresId_fk": {
2138+ "name": "mount_postgresId_postgres_postgresId_fk",
2139+ "tableFrom": "mount",
2140+ "tableTo": "postgres",
2141+ "columnsFrom": [
2142+ "postgresId"
2143+ ],
2144+ "columnsTo": [
2145+ "postgresId"
2146+ ],
2147+ "onDelete": "cascade",
2148+ "onUpdate": "no action"
2149+ },
2150+ "mount_mariadbId_mariadb_mariadbId_fk": {
2151+ "name": "mount_mariadbId_mariadb_mariadbId_fk",
2152+ "tableFrom": "mount",
2153+ "tableTo": "mariadb",
2154+ "columnsFrom": [
2155+ "mariadbId"
2156+ ],
2157+ "columnsTo": [
2158+ "mariadbId"
2159+ ],
2160+ "onDelete": "cascade",
2161+ "onUpdate": "no action"
2162+ },
2163+ "mount_mongoId_mongo_mongoId_fk": {
2164+ "name": "mount_mongoId_mongo_mongoId_fk",
2165+ "tableFrom": "mount",
2166+ "tableTo": "mongo",
2167+ "columnsFrom": [
2168+ "mongoId"
2169+ ],
2170+ "columnsTo": [
2171+ "mongoId"
2172+ ],
2173+ "onDelete": "cascade",
2174+ "onUpdate": "no action"
2175+ },
2176+ "mount_mysqlId_mysql_mysqlId_fk": {
2177+ "name": "mount_mysqlId_mysql_mysqlId_fk",
2178+ "tableFrom": "mount",
2179+ "tableTo": "mysql",
2180+ "columnsFrom": [
2181+ "mysqlId"
2182+ ],
2183+ "columnsTo": [
2184+ "mysqlId"
2185+ ],
2186+ "onDelete": "cascade",
2187+ "onUpdate": "no action"
2188+ },
2189+ "mount_redisId_redis_redisId_fk": {
2190+ "name": "mount_redisId_redis_redisId_fk",
2191+ "tableFrom": "mount",
2192+ "tableTo": "redis",
2193+ "columnsFrom": [
2194+ "redisId"
2195+ ],
2196+ "columnsTo": [
2197+ "redisId"
2198+ ],
2199+ "onDelete": "cascade",
2200+ "onUpdate": "no action"
2201+ },
2202+ "mount_composeId_compose_composeId_fk": {
2203+ "name": "mount_composeId_compose_composeId_fk",
2204+ "tableFrom": "mount",
2205+ "tableTo": "compose",
2206+ "columnsFrom": [
2207+ "composeId"
2208+ ],
2209+ "columnsTo": [
2210+ "composeId"
2211+ ],
2212+ "onDelete": "cascade",
2213+ "onUpdate": "no action"
2214+ }
2215+ },
2216+ "compositePrimaryKeys": {},
2217+ "uniqueConstraints": {},
2218+ "policies": {},
2219+ "checkConstraints": {},
2220+ "isRLSEnabled": false
2221+ },
2222+ "public.certificate": {
2223+ "name": "certificate",
2224+ "schema": "",
2225+ "columns": {
2226+ "certificateId": {
2227+ "name": "certificateId",
2228+ "type": "text",
2229+ "primaryKey": true,
2230+ "notNull": true
2231+ },
2232+ "name": {
2233+ "name": "name",
2234+ "type": "text",
2235+ "primaryKey": false,
2236+ "notNull": true
2237+ },
2238+ "certificateData": {
2239+ "name": "certificateData",
2240+ "type": "text",
2241+ "primaryKey": false,
2242+ "notNull": true
2243+ },
2244+ "privateKey": {
2245+ "name": "privateKey",
2246+ "type": "text",
2247+ "primaryKey": false,
2248+ "notNull": true
2249+ },
2250+ "certificatePath": {
2251+ "name": "certificatePath",
2252+ "type": "text",
2253+ "primaryKey": false,
2254+ "notNull": true
2255+ },
2256+ "autoRenew": {
2257+ "name": "autoRenew",
2258+ "type": "boolean",
2259+ "primaryKey": false,
2260+ "notNull": false
2261+ },
2262+ "organizationId": {
2263+ "name": "organizationId",
2264+ "type": "text",
2265+ "primaryKey": false,
2266+ "notNull": true
2267+ },
2268+ "serverId": {
2269+ "name": "serverId",
2270+ "type": "text",
2271+ "primaryKey": false,
2272+ "notNull": false
2273+ }
2274+ },
2275+ "indexes": {},
2276+ "foreignKeys": {
2277+ "certificate_organizationId_organization_id_fk": {
2278+ "name": "certificate_organizationId_organization_id_fk",
2279+ "tableFrom": "certificate",
2280+ "tableTo": "organization",
2281+ "columnsFrom": [
2282+ "organizationId"
2283+ ],
2284+ "columnsTo": [
2285+ "id"
2286+ ],
2287+ "onDelete": "cascade",
2288+ "onUpdate": "no action"
2289+ },
2290+ "certificate_serverId_server_serverId_fk": {
2291+ "name": "certificate_serverId_server_serverId_fk",
2292+ "tableFrom": "certificate",
2293+ "tableTo": "server",
2294+ "columnsFrom": [
2295+ "serverId"
2296+ ],
2297+ "columnsTo": [
2298+ "serverId"
2299+ ],
2300+ "onDelete": "cascade",
2301+ "onUpdate": "no action"
2302+ }
2303+ },
2304+ "compositePrimaryKeys": {},
2305+ "uniqueConstraints": {
2306+ "certificate_certificatePath_unique": {
2307+ "name": "certificate_certificatePath_unique",
2308+ "nullsNotDistinct": false,
2309+ "columns": [
2310+ "certificatePath"
2311+ ]
2312+ }
2313+ },
2314+ "policies": {},
2315+ "checkConstraints": {},
2316+ "isRLSEnabled": false
2317+ },
2318+ "public.session_temp": {
2319+ "name": "session_temp",
2320+ "schema": "",
2321+ "columns": {
2322+ "id": {
2323+ "name": "id",
2324+ "type": "text",
2325+ "primaryKey": true,
2326+ "notNull": true
2327+ },
2328+ "expires_at": {
2329+ "name": "expires_at",
2330+ "type": "timestamp",
2331+ "primaryKey": false,
2332+ "notNull": true
2333+ },
2334+ "token": {
2335+ "name": "token",
2336+ "type": "text",
2337+ "primaryKey": false,
2338+ "notNull": true
2339+ },
2340+ "created_at": {
2341+ "name": "created_at",
2342+ "type": "timestamp",
2343+ "primaryKey": false,
2344+ "notNull": true
2345+ },
2346+ "updated_at": {
2347+ "name": "updated_at",
2348+ "type": "timestamp",
2349+ "primaryKey": false,
2350+ "notNull": true
2351+ },
2352+ "ip_address": {
2353+ "name": "ip_address",
2354+ "type": "text",
2355+ "primaryKey": false,
2356+ "notNull": false
2357+ },
2358+ "user_agent": {
2359+ "name": "user_agent",
2360+ "type": "text",
2361+ "primaryKey": false,
2362+ "notNull": false
2363+ },
2364+ "user_id": {
2365+ "name": "user_id",
2366+ "type": "text",
2367+ "primaryKey": false,
2368+ "notNull": true
2369+ },
2370+ "impersonated_by": {
2371+ "name": "impersonated_by",
2372+ "type": "text",
2373+ "primaryKey": false,
2374+ "notNull": false
2375+ },
2376+ "active_organization_id": {
2377+ "name": "active_organization_id",
2378+ "type": "text",
2379+ "primaryKey": false,
2380+ "notNull": false
2381+ }
2382+ },
2383+ "indexes": {},
2384+ "foreignKeys": {
2385+ "session_temp_user_id_user_temp_id_fk": {
2386+ "name": "session_temp_user_id_user_temp_id_fk",
2387+ "tableFrom": "session_temp",
2388+ "tableTo": "user_temp",
2389+ "columnsFrom": [
2390+ "user_id"
2391+ ],
2392+ "columnsTo": [
2393+ "id"
2394+ ],
2395+ "onDelete": "cascade",
2396+ "onUpdate": "no action"
2397+ }
2398+ },
2399+ "compositePrimaryKeys": {},
2400+ "uniqueConstraints": {
2401+ "session_temp_token_unique": {
2402+ "name": "session_temp_token_unique",
2403+ "nullsNotDistinct": false,
2404+ "columns": [
2405+ "token"
2406+ ]
2407+ }
2408+ },
2409+ "policies": {},
2410+ "checkConstraints": {},
2411+ "isRLSEnabled": false
2412+ },
2413+ "public.redirect": {
2414+ "name": "redirect",
2415+ "schema": "",
2416+ "columns": {
2417+ "redirectId": {
2418+ "name": "redirectId",
2419+ "type": "text",
2420+ "primaryKey": true,
2421+ "notNull": true
2422+ },
2423+ "regex": {
2424+ "name": "regex",
2425+ "type": "text",
2426+ "primaryKey": false,
2427+ "notNull": true
2428+ },
2429+ "replacement": {
2430+ "name": "replacement",
2431+ "type": "text",
2432+ "primaryKey": false,
2433+ "notNull": true
2434+ },
2435+ "permanent": {
2436+ "name": "permanent",
2437+ "type": "boolean",
2438+ "primaryKey": false,
2439+ "notNull": true,
2440+ "default": false
2441+ },
2442+ "uniqueConfigKey": {
2443+ "name": "uniqueConfigKey",
2444+ "type": "serial",
2445+ "primaryKey": false,
2446+ "notNull": true
2447+ },
2448+ "createdAt": {
2449+ "name": "createdAt",
2450+ "type": "text",
2451+ "primaryKey": false,
2452+ "notNull": true
2453+ },
2454+ "applicationId": {
2455+ "name": "applicationId",
2456+ "type": "text",
2457+ "primaryKey": false,
2458+ "notNull": true
2459+ }
2460+ },
2461+ "indexes": {},
2462+ "foreignKeys": {
2463+ "redirect_applicationId_application_applicationId_fk": {
2464+ "name": "redirect_applicationId_application_applicationId_fk",
2465+ "tableFrom": "redirect",
2466+ "tableTo": "application",
2467+ "columnsFrom": [
2468+ "applicationId"
2469+ ],
2470+ "columnsTo": [
2471+ "applicationId"
2472+ ],
2473+ "onDelete": "cascade",
2474+ "onUpdate": "no action"
2475+ }
2476+ },
2477+ "compositePrimaryKeys": {},
2478+ "uniqueConstraints": {},
2479+ "policies": {},
2480+ "checkConstraints": {},
2481+ "isRLSEnabled": false
2482+ },
2483+ "public.security": {
2484+ "name": "security",
2485+ "schema": "",
2486+ "columns": {
2487+ "securityId": {
2488+ "name": "securityId",
2489+ "type": "text",
2490+ "primaryKey": true,
2491+ "notNull": true
2492+ },
2493+ "username": {
2494+ "name": "username",
2495+ "type": "text",
2496+ "primaryKey": false,
2497+ "notNull": true
2498+ },
2499+ "password": {
2500+ "name": "password",
2501+ "type": "text",
2502+ "primaryKey": false,
2503+ "notNull": true
2504+ },
2505+ "createdAt": {
2506+ "name": "createdAt",
2507+ "type": "text",
2508+ "primaryKey": false,
2509+ "notNull": true
2510+ },
2511+ "applicationId": {
2512+ "name": "applicationId",
2513+ "type": "text",
2514+ "primaryKey": false,
2515+ "notNull": true
2516+ }
2517+ },
2518+ "indexes": {},
2519+ "foreignKeys": {
2520+ "security_applicationId_application_applicationId_fk": {
2521+ "name": "security_applicationId_application_applicationId_fk",
2522+ "tableFrom": "security",
2523+ "tableTo": "application",
2524+ "columnsFrom": [
2525+ "applicationId"
2526+ ],
2527+ "columnsTo": [
2528+ "applicationId"
2529+ ],
2530+ "onDelete": "cascade",
2531+ "onUpdate": "no action"
2532+ }
2533+ },
2534+ "compositePrimaryKeys": {},
2535+ "uniqueConstraints": {
2536+ "security_username_applicationId_unique": {
2537+ "name": "security_username_applicationId_unique",
2538+ "nullsNotDistinct": false,
2539+ "columns": [
2540+ "username",
2541+ "applicationId"
2542+ ]
2543+ }
2544+ },
2545+ "policies": {},
2546+ "checkConstraints": {},
2547+ "isRLSEnabled": false
2548+ },
2549+ "public.port": {
2550+ "name": "port",
2551+ "schema": "",
2552+ "columns": {
2553+ "portId": {
2554+ "name": "portId",
2555+ "type": "text",
2556+ "primaryKey": true,
2557+ "notNull": true
2558+ },
2559+ "publishedPort": {
2560+ "name": "publishedPort",
2561+ "type": "integer",
2562+ "primaryKey": false,
2563+ "notNull": true
2564+ },
2565+ "targetPort": {
2566+ "name": "targetPort",
2567+ "type": "integer",
2568+ "primaryKey": false,
2569+ "notNull": true
2570+ },
2571+ "protocol": {
2572+ "name": "protocol",
2573+ "type": "protocolType",
2574+ "typeSchema": "public",
2575+ "primaryKey": false,
2576+ "notNull": true
2577+ },
2578+ "applicationId": {
2579+ "name": "applicationId",
2580+ "type": "text",
2581+ "primaryKey": false,
2582+ "notNull": true
2583+ }
2584+ },
2585+ "indexes": {},
2586+ "foreignKeys": {
2587+ "port_applicationId_application_applicationId_fk": {
2588+ "name": "port_applicationId_application_applicationId_fk",
2589+ "tableFrom": "port",
2590+ "tableTo": "application",
2591+ "columnsFrom": [
2592+ "applicationId"
2593+ ],
2594+ "columnsTo": [
2595+ "applicationId"
2596+ ],
2597+ "onDelete": "cascade",
2598+ "onUpdate": "no action"
2599+ }
2600+ },
2601+ "compositePrimaryKeys": {},
2602+ "uniqueConstraints": {},
2603+ "policies": {},
2604+ "checkConstraints": {},
2605+ "isRLSEnabled": false
2606+ },
2607+ "public.redis": {
2608+ "name": "redis",
2609+ "schema": "",
2610+ "columns": {
2611+ "redisId": {
2612+ "name": "redisId",
2613+ "type": "text",
2614+ "primaryKey": true,
2615+ "notNull": true
2616+ },
2617+ "name": {
2618+ "name": "name",
2619+ "type": "text",
2620+ "primaryKey": false,
2621+ "notNull": true
2622+ },
2623+ "appName": {
2624+ "name": "appName",
2625+ "type": "text",
2626+ "primaryKey": false,
2627+ "notNull": true
2628+ },
2629+ "description": {
2630+ "name": "description",
2631+ "type": "text",
2632+ "primaryKey": false,
2633+ "notNull": false
2634+ },
2635+ "password": {
2636+ "name": "password",
2637+ "type": "text",
2638+ "primaryKey": false,
2639+ "notNull": true
2640+ },
2641+ "dockerImage": {
2642+ "name": "dockerImage",
2643+ "type": "text",
2644+ "primaryKey": false,
2645+ "notNull": true
2646+ },
2647+ "command": {
2648+ "name": "command",
2649+ "type": "text",
2650+ "primaryKey": false,
2651+ "notNull": false
2652+ },
2653+ "env": {
2654+ "name": "env",
2655+ "type": "text",
2656+ "primaryKey": false,
2657+ "notNull": false
2658+ },
2659+ "memoryReservation": {
2660+ "name": "memoryReservation",
2661+ "type": "text",
2662+ "primaryKey": false,
2663+ "notNull": false
2664+ },
2665+ "memoryLimit": {
2666+ "name": "memoryLimit",
2667+ "type": "text",
2668+ "primaryKey": false,
2669+ "notNull": false
2670+ },
2671+ "cpuReservation": {
2672+ "name": "cpuReservation",
2673+ "type": "text",
2674+ "primaryKey": false,
2675+ "notNull": false
2676+ },
2677+ "cpuLimit": {
2678+ "name": "cpuLimit",
2679+ "type": "text",
2680+ "primaryKey": false,
2681+ "notNull": false
2682+ },
2683+ "externalPort": {
2684+ "name": "externalPort",
2685+ "type": "integer",
2686+ "primaryKey": false,
2687+ "notNull": false
2688+ },
2689+ "createdAt": {
2690+ "name": "createdAt",
2691+ "type": "text",
2692+ "primaryKey": false,
2693+ "notNull": true
2694+ },
2695+ "applicationStatus": {
2696+ "name": "applicationStatus",
2697+ "type": "applicationStatus",
2698+ "typeSchema": "public",
2699+ "primaryKey": false,
2700+ "notNull": true,
2701+ "default": "'idle'"
2702+ },
2703+ "projectId": {
2704+ "name": "projectId",
2705+ "type": "text",
2706+ "primaryKey": false,
2707+ "notNull": true
2708+ },
2709+ "serverId": {
2710+ "name": "serverId",
2711+ "type": "text",
2712+ "primaryKey": false,
2713+ "notNull": false
2714+ }
2715+ },
2716+ "indexes": {},
2717+ "foreignKeys": {
2718+ "redis_projectId_project_projectId_fk": {
2719+ "name": "redis_projectId_project_projectId_fk",
2720+ "tableFrom": "redis",
2721+ "tableTo": "project",
2722+ "columnsFrom": [
2723+ "projectId"
2724+ ],
2725+ "columnsTo": [
2726+ "projectId"
2727+ ],
2728+ "onDelete": "cascade",
2729+ "onUpdate": "no action"
2730+ },
2731+ "redis_serverId_server_serverId_fk": {
2732+ "name": "redis_serverId_server_serverId_fk",
2733+ "tableFrom": "redis",
2734+ "tableTo": "server",
2735+ "columnsFrom": [
2736+ "serverId"
2737+ ],
2738+ "columnsTo": [
2739+ "serverId"
2740+ ],
2741+ "onDelete": "cascade",
2742+ "onUpdate": "no action"
2743+ }
2744+ },
2745+ "compositePrimaryKeys": {},
2746+ "uniqueConstraints": {
2747+ "redis_appName_unique": {
2748+ "name": "redis_appName_unique",
2749+ "nullsNotDistinct": false,
2750+ "columns": [
2751+ "appName"
2752+ ]
2753+ }
2754+ },
2755+ "policies": {},
2756+ "checkConstraints": {},
2757+ "isRLSEnabled": false
2758+ },
2759+ "public.compose": {
2760+ "name": "compose",
2761+ "schema": "",
2762+ "columns": {
2763+ "composeId": {
2764+ "name": "composeId",
2765+ "type": "text",
2766+ "primaryKey": true,
2767+ "notNull": true
2768+ },
2769+ "name": {
2770+ "name": "name",
2771+ "type": "text",
2772+ "primaryKey": false,
2773+ "notNull": true
2774+ },
2775+ "appName": {
2776+ "name": "appName",
2777+ "type": "text",
2778+ "primaryKey": false,
2779+ "notNull": true
2780+ },
2781+ "description": {
2782+ "name": "description",
2783+ "type": "text",
2784+ "primaryKey": false,
2785+ "notNull": false
2786+ },
2787+ "env": {
2788+ "name": "env",
2789+ "type": "text",
2790+ "primaryKey": false,
2791+ "notNull": false
2792+ },
2793+ "composeFile": {
2794+ "name": "composeFile",
2795+ "type": "text",
2796+ "primaryKey": false,
2797+ "notNull": true,
2798+ "default": "''"
2799+ },
2800+ "refreshToken": {
2801+ "name": "refreshToken",
2802+ "type": "text",
2803+ "primaryKey": false,
2804+ "notNull": false
2805+ },
2806+ "sourceType": {
2807+ "name": "sourceType",
2808+ "type": "sourceTypeCompose",
2809+ "typeSchema": "public",
2810+ "primaryKey": false,
2811+ "notNull": true,
2812+ "default": "'github'"
2813+ },
2814+ "composeType": {
2815+ "name": "composeType",
2816+ "type": "composeType",
2817+ "typeSchema": "public",
2818+ "primaryKey": false,
2819+ "notNull": true,
2820+ "default": "'docker-compose'"
2821+ },
2822+ "repository": {
2823+ "name": "repository",
2824+ "type": "text",
2825+ "primaryKey": false,
2826+ "notNull": false
2827+ },
2828+ "owner": {
2829+ "name": "owner",
2830+ "type": "text",
2831+ "primaryKey": false,
2832+ "notNull": false
2833+ },
2834+ "branch": {
2835+ "name": "branch",
2836+ "type": "text",
2837+ "primaryKey": false,
2838+ "notNull": false
2839+ },
2840+ "autoDeploy": {
2841+ "name": "autoDeploy",
2842+ "type": "boolean",
2843+ "primaryKey": false,
2844+ "notNull": false
2845+ },
2846+ "gitlabProjectId": {
2847+ "name": "gitlabProjectId",
2848+ "type": "integer",
2849+ "primaryKey": false,
2850+ "notNull": false
2851+ },
2852+ "gitlabRepository": {
2853+ "name": "gitlabRepository",
2854+ "type": "text",
2855+ "primaryKey": false,
2856+ "notNull": false
2857+ },
2858+ "gitlabOwner": {
2859+ "name": "gitlabOwner",
2860+ "type": "text",
2861+ "primaryKey": false,
2862+ "notNull": false
2863+ },
2864+ "gitlabBranch": {
2865+ "name": "gitlabBranch",
2866+ "type": "text",
2867+ "primaryKey": false,
2868+ "notNull": false
2869+ },
2870+ "gitlabPathNamespace": {
2871+ "name": "gitlabPathNamespace",
2872+ "type": "text",
2873+ "primaryKey": false,
2874+ "notNull": false
2875+ },
2876+ "bitbucketRepository": {
2877+ "name": "bitbucketRepository",
2878+ "type": "text",
2879+ "primaryKey": false,
2880+ "notNull": false
2881+ },
2882+ "bitbucketOwner": {
2883+ "name": "bitbucketOwner",
2884+ "type": "text",
2885+ "primaryKey": false,
2886+ "notNull": false
2887+ },
2888+ "bitbucketBranch": {
2889+ "name": "bitbucketBranch",
2890+ "type": "text",
2891+ "primaryKey": false,
2892+ "notNull": false
2893+ },
2894+ "customGitUrl": {
2895+ "name": "customGitUrl",
2896+ "type": "text",
2897+ "primaryKey": false,
2898+ "notNull": false
2899+ },
2900+ "customGitBranch": {
2901+ "name": "customGitBranch",
2902+ "type": "text",
2903+ "primaryKey": false,
2904+ "notNull": false
2905+ },
2906+ "customGitSSHKeyId": {
2907+ "name": "customGitSSHKeyId",
2908+ "type": "text",
2909+ "primaryKey": false,
2910+ "notNull": false
2911+ },
2912+ "command": {
2913+ "name": "command",
2914+ "type": "text",
2915+ "primaryKey": false,
2916+ "notNull": true,
2917+ "default": "''"
2918+ },
2919+ "composePath": {
2920+ "name": "composePath",
2921+ "type": "text",
2922+ "primaryKey": false,
2923+ "notNull": true,
2924+ "default": "'./docker-compose.yml'"
2925+ },
2926+ "suffix": {
2927+ "name": "suffix",
2928+ "type": "text",
2929+ "primaryKey": false,
2930+ "notNull": true,
2931+ "default": "''"
2932+ },
2933+ "randomize": {
2934+ "name": "randomize",
2935+ "type": "boolean",
2936+ "primaryKey": false,
2937+ "notNull": true,
2938+ "default": false
2939+ },
2940+ "isolatedDeployment": {
2941+ "name": "isolatedDeployment",
2942+ "type": "boolean",
2943+ "primaryKey": false,
2944+ "notNull": true,
2945+ "default": false
2946+ },
2947+ "composeStatus": {
2948+ "name": "composeStatus",
2949+ "type": "applicationStatus",
2950+ "typeSchema": "public",
2951+ "primaryKey": false,
2952+ "notNull": true,
2953+ "default": "'idle'"
2954+ },
2955+ "projectId": {
2956+ "name": "projectId",
2957+ "type": "text",
2958+ "primaryKey": false,
2959+ "notNull": true
2960+ },
2961+ "createdAt": {
2962+ "name": "createdAt",
2963+ "type": "text",
2964+ "primaryKey": false,
2965+ "notNull": true
2966+ },
2967+ "githubId": {
2968+ "name": "githubId",
2969+ "type": "text",
2970+ "primaryKey": false,
2971+ "notNull": false
2972+ },
2973+ "gitlabId": {
2974+ "name": "gitlabId",
2975+ "type": "text",
2976+ "primaryKey": false,
2977+ "notNull": false
2978+ },
2979+ "bitbucketId": {
2980+ "name": "bitbucketId",
2981+ "type": "text",
2982+ "primaryKey": false,
2983+ "notNull": false
2984+ },
2985+ "serverId": {
2986+ "name": "serverId",
2987+ "type": "text",
2988+ "primaryKey": false,
2989+ "notNull": false
2990+ }
2991+ },
2992+ "indexes": {},
2993+ "foreignKeys": {
2994+ "compose_customGitSSHKeyId_ssh-key_sshKeyId_fk": {
2995+ "name": "compose_customGitSSHKeyId_ssh-key_sshKeyId_fk",
2996+ "tableFrom": "compose",
2997+ "tableTo": "ssh-key",
2998+ "columnsFrom": [
2999+ "customGitSSHKeyId"
3000+ ],
3001+ "columnsTo": [
3002+ "sshKeyId"
3003+ ],
3004+ "onDelete": "set null",
3005+ "onUpdate": "no action"
3006+ },
3007+ "compose_projectId_project_projectId_fk": {
3008+ "name": "compose_projectId_project_projectId_fk",
3009+ "tableFrom": "compose",
3010+ "tableTo": "project",
3011+ "columnsFrom": [
3012+ "projectId"
3013+ ],
3014+ "columnsTo": [
3015+ "projectId"
3016+ ],
3017+ "onDelete": "cascade",
3018+ "onUpdate": "no action"
3019+ },
3020+ "compose_githubId_github_githubId_fk": {
3021+ "name": "compose_githubId_github_githubId_fk",
3022+ "tableFrom": "compose",
3023+ "tableTo": "github",
3024+ "columnsFrom": [
3025+ "githubId"
3026+ ],
3027+ "columnsTo": [
3028+ "githubId"
3029+ ],
3030+ "onDelete": "set null",
3031+ "onUpdate": "no action"
3032+ },
3033+ "compose_gitlabId_gitlab_gitlabId_fk": {
3034+ "name": "compose_gitlabId_gitlab_gitlabId_fk",
3035+ "tableFrom": "compose",
3036+ "tableTo": "gitlab",
3037+ "columnsFrom": [
3038+ "gitlabId"
3039+ ],
3040+ "columnsTo": [
3041+ "gitlabId"
3042+ ],
3043+ "onDelete": "set null",
3044+ "onUpdate": "no action"
3045+ },
3046+ "compose_bitbucketId_bitbucket_bitbucketId_fk": {
3047+ "name": "compose_bitbucketId_bitbucket_bitbucketId_fk",
3048+ "tableFrom": "compose",
3049+ "tableTo": "bitbucket",
3050+ "columnsFrom": [
3051+ "bitbucketId"
3052+ ],
3053+ "columnsTo": [
3054+ "bitbucketId"
3055+ ],
3056+ "onDelete": "set null",
3057+ "onUpdate": "no action"
3058+ },
3059+ "compose_serverId_server_serverId_fk": {
3060+ "name": "compose_serverId_server_serverId_fk",
3061+ "tableFrom": "compose",
3062+ "tableTo": "server",
3063+ "columnsFrom": [
3064+ "serverId"
3065+ ],
3066+ "columnsTo": [
3067+ "serverId"
3068+ ],
3069+ "onDelete": "cascade",
3070+ "onUpdate": "no action"
3071+ }
3072+ },
3073+ "compositePrimaryKeys": {},
3074+ "uniqueConstraints": {},
3075+ "policies": {},
3076+ "checkConstraints": {},
3077+ "isRLSEnabled": false
3078+ },
3079+ "public.registry": {
3080+ "name": "registry",
3081+ "schema": "",
3082+ "columns": {
3083+ "registryId": {
3084+ "name": "registryId",
3085+ "type": "text",
3086+ "primaryKey": true,
3087+ "notNull": true
3088+ },
3089+ "registryName": {
3090+ "name": "registryName",
3091+ "type": "text",
3092+ "primaryKey": false,
3093+ "notNull": true
3094+ },
3095+ "imagePrefix": {
3096+ "name": "imagePrefix",
3097+ "type": "text",
3098+ "primaryKey": false,
3099+ "notNull": false
3100+ },
3101+ "username": {
3102+ "name": "username",
3103+ "type": "text",
3104+ "primaryKey": false,
3105+ "notNull": true
3106+ },
3107+ "password": {
3108+ "name": "password",
3109+ "type": "text",
3110+ "primaryKey": false,
3111+ "notNull": true
3112+ },
3113+ "registryUrl": {
3114+ "name": "registryUrl",
3115+ "type": "text",
3116+ "primaryKey": false,
3117+ "notNull": true,
3118+ "default": "''"
3119+ },
3120+ "createdAt": {
3121+ "name": "createdAt",
3122+ "type": "text",
3123+ "primaryKey": false,
3124+ "notNull": true
3125+ },
3126+ "selfHosted": {
3127+ "name": "selfHosted",
3128+ "type": "RegistryType",
3129+ "typeSchema": "public",
3130+ "primaryKey": false,
3131+ "notNull": true,
3132+ "default": "'cloud'"
3133+ },
3134+ "organizationId": {
3135+ "name": "organizationId",
3136+ "type": "text",
3137+ "primaryKey": false,
3138+ "notNull": true
3139+ }
3140+ },
3141+ "indexes": {},
3142+ "foreignKeys": {
3143+ "registry_organizationId_organization_id_fk": {
3144+ "name": "registry_organizationId_organization_id_fk",
3145+ "tableFrom": "registry",
3146+ "tableTo": "organization",
3147+ "columnsFrom": [
3148+ "organizationId"
3149+ ],
3150+ "columnsTo": [
3151+ "id"
3152+ ],
3153+ "onDelete": "cascade",
3154+ "onUpdate": "no action"
3155+ }
3156+ },
3157+ "compositePrimaryKeys": {},
3158+ "uniqueConstraints": {},
3159+ "policies": {},
3160+ "checkConstraints": {},
3161+ "isRLSEnabled": false
3162+ },
3163+ "public.discord": {
3164+ "name": "discord",
3165+ "schema": "",
3166+ "columns": {
3167+ "discordId": {
3168+ "name": "discordId",
3169+ "type": "text",
3170+ "primaryKey": true,
3171+ "notNull": true
3172+ },
3173+ "webhookUrl": {
3174+ "name": "webhookUrl",
3175+ "type": "text",
3176+ "primaryKey": false,
3177+ "notNull": true
3178+ },
3179+ "decoration": {
3180+ "name": "decoration",
3181+ "type": "boolean",
3182+ "primaryKey": false,
3183+ "notNull": false
3184+ }
3185+ },
3186+ "indexes": {},
3187+ "foreignKeys": {},
3188+ "compositePrimaryKeys": {},
3189+ "uniqueConstraints": {},
3190+ "policies": {},
3191+ "checkConstraints": {},
3192+ "isRLSEnabled": false
3193+ },
3194+ "public.email": {
3195+ "name": "email",
3196+ "schema": "",
3197+ "columns": {
3198+ "emailId": {
3199+ "name": "emailId",
3200+ "type": "text",
3201+ "primaryKey": true,
3202+ "notNull": true
3203+ },
3204+ "smtpServer": {
3205+ "name": "smtpServer",
3206+ "type": "text",
3207+ "primaryKey": false,
3208+ "notNull": true
3209+ },
3210+ "smtpPort": {
3211+ "name": "smtpPort",
3212+ "type": "integer",
3213+ "primaryKey": false,
3214+ "notNull": true
3215+ },
3216+ "username": {
3217+ "name": "username",
3218+ "type": "text",
3219+ "primaryKey": false,
3220+ "notNull": true
3221+ },
3222+ "password": {
3223+ "name": "password",
3224+ "type": "text",
3225+ "primaryKey": false,
3226+ "notNull": true
3227+ },
3228+ "fromAddress": {
3229+ "name": "fromAddress",
3230+ "type": "text",
3231+ "primaryKey": false,
3232+ "notNull": true
3233+ },
3234+ "toAddress": {
3235+ "name": "toAddress",
3236+ "type": "text[]",
3237+ "primaryKey": false,
3238+ "notNull": true
3239+ }
3240+ },
3241+ "indexes": {},
3242+ "foreignKeys": {},
3243+ "compositePrimaryKeys": {},
3244+ "uniqueConstraints": {},
3245+ "policies": {},
3246+ "checkConstraints": {},
3247+ "isRLSEnabled": false
3248+ },
3249+ "public.gotify": {
3250+ "name": "gotify",
3251+ "schema": "",
3252+ "columns": {
3253+ "gotifyId": {
3254+ "name": "gotifyId",
3255+ "type": "text",
3256+ "primaryKey": true,
3257+ "notNull": true
3258+ },
3259+ "serverUrl": {
3260+ "name": "serverUrl",
3261+ "type": "text",
3262+ "primaryKey": false,
3263+ "notNull": true
3264+ },
3265+ "appToken": {
3266+ "name": "appToken",
3267+ "type": "text",
3268+ "primaryKey": false,
3269+ "notNull": true
3270+ },
3271+ "priority": {
3272+ "name": "priority",
3273+ "type": "integer",
3274+ "primaryKey": false,
3275+ "notNull": true,
3276+ "default": 5
3277+ },
3278+ "decoration": {
3279+ "name": "decoration",
3280+ "type": "boolean",
3281+ "primaryKey": false,
3282+ "notNull": false
3283+ }
3284+ },
3285+ "indexes": {},
3286+ "foreignKeys": {},
3287+ "compositePrimaryKeys": {},
3288+ "uniqueConstraints": {},
3289+ "policies": {},
3290+ "checkConstraints": {},
3291+ "isRLSEnabled": false
3292+ },
3293+ "public.notification": {
3294+ "name": "notification",
3295+ "schema": "",
3296+ "columns": {
3297+ "notificationId": {
3298+ "name": "notificationId",
3299+ "type": "text",
3300+ "primaryKey": true,
3301+ "notNull": true
3302+ },
3303+ "name": {
3304+ "name": "name",
3305+ "type": "text",
3306+ "primaryKey": false,
3307+ "notNull": true
3308+ },
3309+ "appDeploy": {
3310+ "name": "appDeploy",
3311+ "type": "boolean",
3312+ "primaryKey": false,
3313+ "notNull": true,
3314+ "default": false
3315+ },
3316+ "appBuildError": {
3317+ "name": "appBuildError",
3318+ "type": "boolean",
3319+ "primaryKey": false,
3320+ "notNull": true,
3321+ "default": false
3322+ },
3323+ "databaseBackup": {
3324+ "name": "databaseBackup",
3325+ "type": "boolean",
3326+ "primaryKey": false,
3327+ "notNull": true,
3328+ "default": false
3329+ },
3330+ "dokployRestart": {
3331+ "name": "dokployRestart",
3332+ "type": "boolean",
3333+ "primaryKey": false,
3334+ "notNull": true,
3335+ "default": false
3336+ },
3337+ "dockerCleanup": {
3338+ "name": "dockerCleanup",
3339+ "type": "boolean",
3340+ "primaryKey": false,
3341+ "notNull": true,
3342+ "default": false
3343+ },
3344+ "serverThreshold": {
3345+ "name": "serverThreshold",
3346+ "type": "boolean",
3347+ "primaryKey": false,
3348+ "notNull": true,
3349+ "default": false
3350+ },
3351+ "notificationType": {
3352+ "name": "notificationType",
3353+ "type": "notificationType",
3354+ "typeSchema": "public",
3355+ "primaryKey": false,
3356+ "notNull": true
3357+ },
3358+ "createdAt": {
3359+ "name": "createdAt",
3360+ "type": "text",
3361+ "primaryKey": false,
3362+ "notNull": true
3363+ },
3364+ "slackId": {
3365+ "name": "slackId",
3366+ "type": "text",
3367+ "primaryKey": false,
3368+ "notNull": false
3369+ },
3370+ "telegramId": {
3371+ "name": "telegramId",
3372+ "type": "text",
3373+ "primaryKey": false,
3374+ "notNull": false
3375+ },
3376+ "discordId": {
3377+ "name": "discordId",
3378+ "type": "text",
3379+ "primaryKey": false,
3380+ "notNull": false
3381+ },
3382+ "emailId": {
3383+ "name": "emailId",
3384+ "type": "text",
3385+ "primaryKey": false,
3386+ "notNull": false
3387+ },
3388+ "gotifyId": {
3389+ "name": "gotifyId",
3390+ "type": "text",
3391+ "primaryKey": false,
3392+ "notNull": false
3393+ },
3394+ "organizationId": {
3395+ "name": "organizationId",
3396+ "type": "text",
3397+ "primaryKey": false,
3398+ "notNull": true
3399+ }
3400+ },
3401+ "indexes": {},
3402+ "foreignKeys": {
3403+ "notification_slackId_slack_slackId_fk": {
3404+ "name": "notification_slackId_slack_slackId_fk",
3405+ "tableFrom": "notification",
3406+ "tableTo": "slack",
3407+ "columnsFrom": [
3408+ "slackId"
3409+ ],
3410+ "columnsTo": [
3411+ "slackId"
3412+ ],
3413+ "onDelete": "cascade",
3414+ "onUpdate": "no action"
3415+ },
3416+ "notification_telegramId_telegram_telegramId_fk": {
3417+ "name": "notification_telegramId_telegram_telegramId_fk",
3418+ "tableFrom": "notification",
3419+ "tableTo": "telegram",
3420+ "columnsFrom": [
3421+ "telegramId"
3422+ ],
3423+ "columnsTo": [
3424+ "telegramId"
3425+ ],
3426+ "onDelete": "cascade",
3427+ "onUpdate": "no action"
3428+ },
3429+ "notification_discordId_discord_discordId_fk": {
3430+ "name": "notification_discordId_discord_discordId_fk",
3431+ "tableFrom": "notification",
3432+ "tableTo": "discord",
3433+ "columnsFrom": [
3434+ "discordId"
3435+ ],
3436+ "columnsTo": [
3437+ "discordId"
3438+ ],
3439+ "onDelete": "cascade",
3440+ "onUpdate": "no action"
3441+ },
3442+ "notification_emailId_email_emailId_fk": {
3443+ "name": "notification_emailId_email_emailId_fk",
3444+ "tableFrom": "notification",
3445+ "tableTo": "email",
3446+ "columnsFrom": [
3447+ "emailId"
3448+ ],
3449+ "columnsTo": [
3450+ "emailId"
3451+ ],
3452+ "onDelete": "cascade",
3453+ "onUpdate": "no action"
3454+ },
3455+ "notification_gotifyId_gotify_gotifyId_fk": {
3456+ "name": "notification_gotifyId_gotify_gotifyId_fk",
3457+ "tableFrom": "notification",
3458+ "tableTo": "gotify",
3459+ "columnsFrom": [
3460+ "gotifyId"
3461+ ],
3462+ "columnsTo": [
3463+ "gotifyId"
3464+ ],
3465+ "onDelete": "cascade",
3466+ "onUpdate": "no action"
3467+ },
3468+ "notification_organizationId_organization_id_fk": {
3469+ "name": "notification_organizationId_organization_id_fk",
3470+ "tableFrom": "notification",
3471+ "tableTo": "organization",
3472+ "columnsFrom": [
3473+ "organizationId"
3474+ ],
3475+ "columnsTo": [
3476+ "id"
3477+ ],
3478+ "onDelete": "cascade",
3479+ "onUpdate": "no action"
3480+ }
3481+ },
3482+ "compositePrimaryKeys": {},
3483+ "uniqueConstraints": {},
3484+ "policies": {},
3485+ "checkConstraints": {},
3486+ "isRLSEnabled": false
3487+ },
3488+ "public.slack": {
3489+ "name": "slack",
3490+ "schema": "",
3491+ "columns": {
3492+ "slackId": {
3493+ "name": "slackId",
3494+ "type": "text",
3495+ "primaryKey": true,
3496+ "notNull": true
3497+ },
3498+ "webhookUrl": {
3499+ "name": "webhookUrl",
3500+ "type": "text",
3501+ "primaryKey": false,
3502+ "notNull": true
3503+ },
3504+ "channel": {
3505+ "name": "channel",
3506+ "type": "text",
3507+ "primaryKey": false,
3508+ "notNull": false
3509+ }
3510+ },
3511+ "indexes": {},
3512+ "foreignKeys": {},
3513+ "compositePrimaryKeys": {},
3514+ "uniqueConstraints": {},
3515+ "policies": {},
3516+ "checkConstraints": {},
3517+ "isRLSEnabled": false
3518+ },
3519+ "public.telegram": {
3520+ "name": "telegram",
3521+ "schema": "",
3522+ "columns": {
3523+ "telegramId": {
3524+ "name": "telegramId",
3525+ "type": "text",
3526+ "primaryKey": true,
3527+ "notNull": true
3528+ },
3529+ "botToken": {
3530+ "name": "botToken",
3531+ "type": "text",
3532+ "primaryKey": false,
3533+ "notNull": true
3534+ },
3535+ "chatId": {
3536+ "name": "chatId",
3537+ "type": "text",
3538+ "primaryKey": false,
3539+ "notNull": true
3540+ },
3541+ "messageThreadId": {
3542+ "name": "messageThreadId",
3543+ "type": "text",
3544+ "primaryKey": false,
3545+ "notNull": false
3546+ }
3547+ },
3548+ "indexes": {},
3549+ "foreignKeys": {},
3550+ "compositePrimaryKeys": {},
3551+ "uniqueConstraints": {},
3552+ "policies": {},
3553+ "checkConstraints": {},
3554+ "isRLSEnabled": false
3555+ },
3556+ "public.ssh-key": {
3557+ "name": "ssh-key",
3558+ "schema": "",
3559+ "columns": {
3560+ "sshKeyId": {
3561+ "name": "sshKeyId",
3562+ "type": "text",
3563+ "primaryKey": true,
3564+ "notNull": true
3565+ },
3566+ "privateKey": {
3567+ "name": "privateKey",
3568+ "type": "text",
3569+ "primaryKey": false,
3570+ "notNull": true,
3571+ "default": "''"
3572+ },
3573+ "publicKey": {
3574+ "name": "publicKey",
3575+ "type": "text",
3576+ "primaryKey": false,
3577+ "notNull": true
3578+ },
3579+ "name": {
3580+ "name": "name",
3581+ "type": "text",
3582+ "primaryKey": false,
3583+ "notNull": true
3584+ },
3585+ "description": {
3586+ "name": "description",
3587+ "type": "text",
3588+ "primaryKey": false,
3589+ "notNull": false
3590+ },
3591+ "createdAt": {
3592+ "name": "createdAt",
3593+ "type": "text",
3594+ "primaryKey": false,
3595+ "notNull": true
3596+ },
3597+ "lastUsedAt": {
3598+ "name": "lastUsedAt",
3599+ "type": "text",
3600+ "primaryKey": false,
3601+ "notNull": false
3602+ },
3603+ "organizationId": {
3604+ "name": "organizationId",
3605+ "type": "text",
3606+ "primaryKey": false,
3607+ "notNull": true
3608+ }
3609+ },
3610+ "indexes": {},
3611+ "foreignKeys": {
3612+ "ssh-key_organizationId_organization_id_fk": {
3613+ "name": "ssh-key_organizationId_organization_id_fk",
3614+ "tableFrom": "ssh-key",
3615+ "tableTo": "organization",
3616+ "columnsFrom": [
3617+ "organizationId"
3618+ ],
3619+ "columnsTo": [
3620+ "id"
3621+ ],
3622+ "onDelete": "cascade",
3623+ "onUpdate": "no action"
3624+ }
3625+ },
3626+ "compositePrimaryKeys": {},
3627+ "uniqueConstraints": {},
3628+ "policies": {},
3629+ "checkConstraints": {},
3630+ "isRLSEnabled": false
3631+ },
3632+ "public.git_provider": {
3633+ "name": "git_provider",
3634+ "schema": "",
3635+ "columns": {
3636+ "gitProviderId": {
3637+ "name": "gitProviderId",
3638+ "type": "text",
3639+ "primaryKey": true,
3640+ "notNull": true
3641+ },
3642+ "name": {
3643+ "name": "name",
3644+ "type": "text",
3645+ "primaryKey": false,
3646+ "notNull": true
3647+ },
3648+ "providerType": {
3649+ "name": "providerType",
3650+ "type": "gitProviderType",
3651+ "typeSchema": "public",
3652+ "primaryKey": false,
3653+ "notNull": true,
3654+ "default": "'github'"
3655+ },
3656+ "createdAt": {
3657+ "name": "createdAt",
3658+ "type": "text",
3659+ "primaryKey": false,
3660+ "notNull": true
3661+ },
3662+ "organizationId": {
3663+ "name": "organizationId",
3664+ "type": "text",
3665+ "primaryKey": false,
3666+ "notNull": true
3667+ }
3668+ },
3669+ "indexes": {},
3670+ "foreignKeys": {
3671+ "git_provider_organizationId_organization_id_fk": {
3672+ "name": "git_provider_organizationId_organization_id_fk",
3673+ "tableFrom": "git_provider",
3674+ "tableTo": "organization",
3675+ "columnsFrom": [
3676+ "organizationId"
3677+ ],
3678+ "columnsTo": [
3679+ "id"
3680+ ],
3681+ "onDelete": "cascade",
3682+ "onUpdate": "no action"
3683+ }
3684+ },
3685+ "compositePrimaryKeys": {},
3686+ "uniqueConstraints": {},
3687+ "policies": {},
3688+ "checkConstraints": {},
3689+ "isRLSEnabled": false
3690+ },
3691+ "public.bitbucket": {
3692+ "name": "bitbucket",
3693+ "schema": "",
3694+ "columns": {
3695+ "bitbucketId": {
3696+ "name": "bitbucketId",
3697+ "type": "text",
3698+ "primaryKey": true,
3699+ "notNull": true
3700+ },
3701+ "bitbucketUsername": {
3702+ "name": "bitbucketUsername",
3703+ "type": "text",
3704+ "primaryKey": false,
3705+ "notNull": false
3706+ },
3707+ "appPassword": {
3708+ "name": "appPassword",
3709+ "type": "text",
3710+ "primaryKey": false,
3711+ "notNull": false
3712+ },
3713+ "bitbucketWorkspaceName": {
3714+ "name": "bitbucketWorkspaceName",
3715+ "type": "text",
3716+ "primaryKey": false,
3717+ "notNull": false
3718+ },
3719+ "gitProviderId": {
3720+ "name": "gitProviderId",
3721+ "type": "text",
3722+ "primaryKey": false,
3723+ "notNull": true
3724+ }
3725+ },
3726+ "indexes": {},
3727+ "foreignKeys": {
3728+ "bitbucket_gitProviderId_git_provider_gitProviderId_fk": {
3729+ "name": "bitbucket_gitProviderId_git_provider_gitProviderId_fk",
3730+ "tableFrom": "bitbucket",
3731+ "tableTo": "git_provider",
3732+ "columnsFrom": [
3733+ "gitProviderId"
3734+ ],
3735+ "columnsTo": [
3736+ "gitProviderId"
3737+ ],
3738+ "onDelete": "cascade",
3739+ "onUpdate": "no action"
3740+ }
3741+ },
3742+ "compositePrimaryKeys": {},
3743+ "uniqueConstraints": {},
3744+ "policies": {},
3745+ "checkConstraints": {},
3746+ "isRLSEnabled": false
3747+ },
3748+ "public.github": {
3749+ "name": "github",
3750+ "schema": "",
3751+ "columns": {
3752+ "githubId": {
3753+ "name": "githubId",
3754+ "type": "text",
3755+ "primaryKey": true,
3756+ "notNull": true
3757+ },
3758+ "githubAppName": {
3759+ "name": "githubAppName",
3760+ "type": "text",
3761+ "primaryKey": false,
3762+ "notNull": false
3763+ },
3764+ "githubAppId": {
3765+ "name": "githubAppId",
3766+ "type": "integer",
3767+ "primaryKey": false,
3768+ "notNull": false
3769+ },
3770+ "githubClientId": {
3771+ "name": "githubClientId",
3772+ "type": "text",
3773+ "primaryKey": false,
3774+ "notNull": false
3775+ },
3776+ "githubClientSecret": {
3777+ "name": "githubClientSecret",
3778+ "type": "text",
3779+ "primaryKey": false,
3780+ "notNull": false
3781+ },
3782+ "githubInstallationId": {
3783+ "name": "githubInstallationId",
3784+ "type": "text",
3785+ "primaryKey": false,
3786+ "notNull": false
3787+ },
3788+ "githubPrivateKey": {
3789+ "name": "githubPrivateKey",
3790+ "type": "text",
3791+ "primaryKey": false,
3792+ "notNull": false
3793+ },
3794+ "githubWebhookSecret": {
3795+ "name": "githubWebhookSecret",
3796+ "type": "text",
3797+ "primaryKey": false,
3798+ "notNull": false
3799+ },
3800+ "gitProviderId": {
3801+ "name": "gitProviderId",
3802+ "type": "text",
3803+ "primaryKey": false,
3804+ "notNull": true
3805+ }
3806+ },
3807+ "indexes": {},
3808+ "foreignKeys": {
3809+ "github_gitProviderId_git_provider_gitProviderId_fk": {
3810+ "name": "github_gitProviderId_git_provider_gitProviderId_fk",
3811+ "tableFrom": "github",
3812+ "tableTo": "git_provider",
3813+ "columnsFrom": [
3814+ "gitProviderId"
3815+ ],
3816+ "columnsTo": [
3817+ "gitProviderId"
3818+ ],
3819+ "onDelete": "cascade",
3820+ "onUpdate": "no action"
3821+ }
3822+ },
3823+ "compositePrimaryKeys": {},
3824+ "uniqueConstraints": {},
3825+ "policies": {},
3826+ "checkConstraints": {},
3827+ "isRLSEnabled": false
3828+ },
3829+ "public.gitlab": {
3830+ "name": "gitlab",
3831+ "schema": "",
3832+ "columns": {
3833+ "gitlabId": {
3834+ "name": "gitlabId",
3835+ "type": "text",
3836+ "primaryKey": true,
3837+ "notNull": true
3838+ },
3839+ "gitlabUrl": {
3840+ "name": "gitlabUrl",
3841+ "type": "text",
3842+ "primaryKey": false,
3843+ "notNull": true,
3844+ "default": "'https://gitlab.com'"
3845+ },
3846+ "application_id": {
3847+ "name": "application_id",
3848+ "type": "text",
3849+ "primaryKey": false,
3850+ "notNull": false
3851+ },
3852+ "redirect_uri": {
3853+ "name": "redirect_uri",
3854+ "type": "text",
3855+ "primaryKey": false,
3856+ "notNull": false
3857+ },
3858+ "secret": {
3859+ "name": "secret",
3860+ "type": "text",
3861+ "primaryKey": false,
3862+ "notNull": false
3863+ },
3864+ "access_token": {
3865+ "name": "access_token",
3866+ "type": "text",
3867+ "primaryKey": false,
3868+ "notNull": false
3869+ },
3870+ "refresh_token": {
3871+ "name": "refresh_token",
3872+ "type": "text",
3873+ "primaryKey": false,
3874+ "notNull": false
3875+ },
3876+ "group_name": {
3877+ "name": "group_name",
3878+ "type": "text",
3879+ "primaryKey": false,
3880+ "notNull": false
3881+ },
3882+ "expires_at": {
3883+ "name": "expires_at",
3884+ "type": "integer",
3885+ "primaryKey": false,
3886+ "notNull": false
3887+ },
3888+ "gitProviderId": {
3889+ "name": "gitProviderId",
3890+ "type": "text",
3891+ "primaryKey": false,
3892+ "notNull": true
3893+ }
3894+ },
3895+ "indexes": {},
3896+ "foreignKeys": {
3897+ "gitlab_gitProviderId_git_provider_gitProviderId_fk": {
3898+ "name": "gitlab_gitProviderId_git_provider_gitProviderId_fk",
3899+ "tableFrom": "gitlab",
3900+ "tableTo": "git_provider",
3901+ "columnsFrom": [
3902+ "gitProviderId"
3903+ ],
3904+ "columnsTo": [
3905+ "gitProviderId"
3906+ ],
3907+ "onDelete": "cascade",
3908+ "onUpdate": "no action"
3909+ }
3910+ },
3911+ "compositePrimaryKeys": {},
3912+ "uniqueConstraints": {},
3913+ "policies": {},
3914+ "checkConstraints": {},
3915+ "isRLSEnabled": false
3916+ },
3917+ "public.server": {
3918+ "name": "server",
3919+ "schema": "",
3920+ "columns": {
3921+ "serverId": {
3922+ "name": "serverId",
3923+ "type": "text",
3924+ "primaryKey": true,
3925+ "notNull": true
3926+ },
3927+ "name": {
3928+ "name": "name",
3929+ "type": "text",
3930+ "primaryKey": false,
3931+ "notNull": true
3932+ },
3933+ "description": {
3934+ "name": "description",
3935+ "type": "text",
3936+ "primaryKey": false,
3937+ "notNull": false
3938+ },
3939+ "ipAddress": {
3940+ "name": "ipAddress",
3941+ "type": "text",
3942+ "primaryKey": false,
3943+ "notNull": true
3944+ },
3945+ "port": {
3946+ "name": "port",
3947+ "type": "integer",
3948+ "primaryKey": false,
3949+ "notNull": true
3950+ },
3951+ "username": {
3952+ "name": "username",
3953+ "type": "text",
3954+ "primaryKey": false,
3955+ "notNull": true,
3956+ "default": "'root'"
3957+ },
3958+ "appName": {
3959+ "name": "appName",
3960+ "type": "text",
3961+ "primaryKey": false,
3962+ "notNull": true
3963+ },
3964+ "enableDockerCleanup": {
3965+ "name": "enableDockerCleanup",
3966+ "type": "boolean",
3967+ "primaryKey": false,
3968+ "notNull": true,
3969+ "default": false
3970+ },
3971+ "createdAt": {
3972+ "name": "createdAt",
3973+ "type": "text",
3974+ "primaryKey": false,
3975+ "notNull": true
3976+ },
3977+ "organizationId": {
3978+ "name": "organizationId",
3979+ "type": "text",
3980+ "primaryKey": false,
3981+ "notNull": true
3982+ },
3983+ "serverStatus": {
3984+ "name": "serverStatus",
3985+ "type": "serverStatus",
3986+ "typeSchema": "public",
3987+ "primaryKey": false,
3988+ "notNull": true,
3989+ "default": "'active'"
3990+ },
3991+ "command": {
3992+ "name": "command",
3993+ "type": "text",
3994+ "primaryKey": false,
3995+ "notNull": true,
3996+ "default": "''"
3997+ },
3998+ "sshKeyId": {
3999+ "name": "sshKeyId",
4000+ "type": "text",
4001+ "primaryKey": false,
4002+ "notNull": false
4003+ },
4004+ "metricsConfig": {
4005+ "name": "metricsConfig",
4006+ "type": "jsonb",
4007+ "primaryKey": false,
4008+ "notNull": true,
4009+ "default": "'{\"server\":{\"type\":\"Remote\",\"refreshRate\":60,\"port\":4500,\"token\":\"\",\"urlCallback\":\"\",\"cronJob\":\"\",\"retentionDays\":2,\"thresholds\":{\"cpu\":0,\"memory\":0}},\"containers\":{\"refreshRate\":60,\"services\":{\"include\":[],\"exclude\":[]}}}'::jsonb"
4010+ }
4011+ },
4012+ "indexes": {},
4013+ "foreignKeys": {
4014+ "server_organizationId_organization_id_fk": {
4015+ "name": "server_organizationId_organization_id_fk",
4016+ "tableFrom": "server",
4017+ "tableTo": "organization",
4018+ "columnsFrom": [
4019+ "organizationId"
4020+ ],
4021+ "columnsTo": [
4022+ "id"
4023+ ],
4024+ "onDelete": "cascade",
4025+ "onUpdate": "no action"
4026+ },
4027+ "server_sshKeyId_ssh-key_sshKeyId_fk": {
4028+ "name": "server_sshKeyId_ssh-key_sshKeyId_fk",
4029+ "tableFrom": "server",
4030+ "tableTo": "ssh-key",
4031+ "columnsFrom": [
4032+ "sshKeyId"
4033+ ],
4034+ "columnsTo": [
4035+ "sshKeyId"
4036+ ],
4037+ "onDelete": "set null",
4038+ "onUpdate": "no action"
4039+ }
4040+ },
4041+ "compositePrimaryKeys": {},
4042+ "uniqueConstraints": {},
4043+ "policies": {},
4044+ "checkConstraints": {},
4045+ "isRLSEnabled": false
4046+ },
4047+ "public.preview_deployments": {
4048+ "name": "preview_deployments",
4049+ "schema": "",
4050+ "columns": {
4051+ "previewDeploymentId": {
4052+ "name": "previewDeploymentId",
4053+ "type": "text",
4054+ "primaryKey": true,
4055+ "notNull": true
4056+ },
4057+ "branch": {
4058+ "name": "branch",
4059+ "type": "text",
4060+ "primaryKey": false,
4061+ "notNull": true
4062+ },
4063+ "pullRequestId": {
4064+ "name": "pullRequestId",
4065+ "type": "text",
4066+ "primaryKey": false,
4067+ "notNull": true
4068+ },
4069+ "pullRequestNumber": {
4070+ "name": "pullRequestNumber",
4071+ "type": "text",
4072+ "primaryKey": false,
4073+ "notNull": true
4074+ },
4075+ "pullRequestURL": {
4076+ "name": "pullRequestURL",
4077+ "type": "text",
4078+ "primaryKey": false,
4079+ "notNull": true
4080+ },
4081+ "pullRequestTitle": {
4082+ "name": "pullRequestTitle",
4083+ "type": "text",
4084+ "primaryKey": false,
4085+ "notNull": true
4086+ },
4087+ "pullRequestCommentId": {
4088+ "name": "pullRequestCommentId",
4089+ "type": "text",
4090+ "primaryKey": false,
4091+ "notNull": true
4092+ },
4093+ "previewStatus": {
4094+ "name": "previewStatus",
4095+ "type": "applicationStatus",
4096+ "typeSchema": "public",
4097+ "primaryKey": false,
4098+ "notNull": true,
4099+ "default": "'idle'"
4100+ },
4101+ "appName": {
4102+ "name": "appName",
4103+ "type": "text",
4104+ "primaryKey": false,
4105+ "notNull": true
4106+ },
4107+ "applicationId": {
4108+ "name": "applicationId",
4109+ "type": "text",
4110+ "primaryKey": false,
4111+ "notNull": true
4112+ },
4113+ "domainId": {
4114+ "name": "domainId",
4115+ "type": "text",
4116+ "primaryKey": false,
4117+ "notNull": false
4118+ },
4119+ "createdAt": {
4120+ "name": "createdAt",
4121+ "type": "text",
4122+ "primaryKey": false,
4123+ "notNull": true
4124+ },
4125+ "expiresAt": {
4126+ "name": "expiresAt",
4127+ "type": "text",
4128+ "primaryKey": false,
4129+ "notNull": false
4130+ }
4131+ },
4132+ "indexes": {},
4133+ "foreignKeys": {
4134+ "preview_deployments_applicationId_application_applicationId_fk": {
4135+ "name": "preview_deployments_applicationId_application_applicationId_fk",
4136+ "tableFrom": "preview_deployments",
4137+ "tableTo": "application",
4138+ "columnsFrom": [
4139+ "applicationId"
4140+ ],
4141+ "columnsTo": [
4142+ "applicationId"
4143+ ],
4144+ "onDelete": "cascade",
4145+ "onUpdate": "no action"
4146+ },
4147+ "preview_deployments_domainId_domain_domainId_fk": {
4148+ "name": "preview_deployments_domainId_domain_domainId_fk",
4149+ "tableFrom": "preview_deployments",
4150+ "tableTo": "domain",
4151+ "columnsFrom": [
4152+ "domainId"
4153+ ],
4154+ "columnsTo": [
4155+ "domainId"
4156+ ],
4157+ "onDelete": "cascade",
4158+ "onUpdate": "no action"
4159+ }
4160+ },
4161+ "compositePrimaryKeys": {},
4162+ "uniqueConstraints": {
4163+ "preview_deployments_appName_unique": {
4164+ "name": "preview_deployments_appName_unique",
4165+ "nullsNotDistinct": false,
4166+ "columns": [
4167+ "appName"
4168+ ]
4169+ }
4170+ },
4171+ "policies": {},
4172+ "checkConstraints": {},
4173+ "isRLSEnabled": false
4174+ },
4175+ "public.ai": {
4176+ "name": "ai",
4177+ "schema": "",
4178+ "columns": {
4179+ "aiId": {
4180+ "name": "aiId",
4181+ "type": "text",
4182+ "primaryKey": true,
4183+ "notNull": true
4184+ },
4185+ "name": {
4186+ "name": "name",
4187+ "type": "text",
4188+ "primaryKey": false,
4189+ "notNull": true
4190+ },
4191+ "apiUrl": {
4192+ "name": "apiUrl",
4193+ "type": "text",
4194+ "primaryKey": false,
4195+ "notNull": true
4196+ },
4197+ "apiKey": {
4198+ "name": "apiKey",
4199+ "type": "text",
4200+ "primaryKey": false,
4201+ "notNull": true
4202+ },
4203+ "model": {
4204+ "name": "model",
4205+ "type": "text",
4206+ "primaryKey": false,
4207+ "notNull": true
4208+ },
4209+ "isEnabled": {
4210+ "name": "isEnabled",
4211+ "type": "boolean",
4212+ "primaryKey": false,
4213+ "notNull": true,
4214+ "default": true
4215+ },
4216+ "organizationId": {
4217+ "name": "organizationId",
4218+ "type": "text",
4219+ "primaryKey": false,
4220+ "notNull": true
4221+ },
4222+ "createdAt": {
4223+ "name": "createdAt",
4224+ "type": "text",
4225+ "primaryKey": false,
4226+ "notNull": true
4227+ }
4228+ },
4229+ "indexes": {},
4230+ "foreignKeys": {
4231+ "ai_organizationId_organization_id_fk": {
4232+ "name": "ai_organizationId_organization_id_fk",
4233+ "tableFrom": "ai",
4234+ "tableTo": "organization",
4235+ "columnsFrom": [
4236+ "organizationId"
4237+ ],
4238+ "columnsTo": [
4239+ "id"
4240+ ],
4241+ "onDelete": "cascade",
4242+ "onUpdate": "no action"
4243+ }
4244+ },
4245+ "compositePrimaryKeys": {},
4246+ "uniqueConstraints": {},
4247+ "policies": {},
4248+ "checkConstraints": {},
4249+ "isRLSEnabled": false
4250+ },
4251+ "public.account": {
4252+ "name": "account",
4253+ "schema": "",
4254+ "columns": {
4255+ "id": {
4256+ "name": "id",
4257+ "type": "text",
4258+ "primaryKey": true,
4259+ "notNull": true
4260+ },
4261+ "account_id": {
4262+ "name": "account_id",
4263+ "type": "text",
4264+ "primaryKey": false,
4265+ "notNull": true
4266+ },
4267+ "provider_id": {
4268+ "name": "provider_id",
4269+ "type": "text",
4270+ "primaryKey": false,
4271+ "notNull": true
4272+ },
4273+ "user_id": {
4274+ "name": "user_id",
4275+ "type": "text",
4276+ "primaryKey": false,
4277+ "notNull": true
4278+ },
4279+ "access_token": {
4280+ "name": "access_token",
4281+ "type": "text",
4282+ "primaryKey": false,
4283+ "notNull": false
4284+ },
4285+ "refresh_token": {
4286+ "name": "refresh_token",
4287+ "type": "text",
4288+ "primaryKey": false,
4289+ "notNull": false
4290+ },
4291+ "id_token": {
4292+ "name": "id_token",
4293+ "type": "text",
4294+ "primaryKey": false,
4295+ "notNull": false
4296+ },
4297+ "access_token_expires_at": {
4298+ "name": "access_token_expires_at",
4299+ "type": "timestamp",
4300+ "primaryKey": false,
4301+ "notNull": false
4302+ },
4303+ "refresh_token_expires_at": {
4304+ "name": "refresh_token_expires_at",
4305+ "type": "timestamp",
4306+ "primaryKey": false,
4307+ "notNull": false
4308+ },
4309+ "scope": {
4310+ "name": "scope",
4311+ "type": "text",
4312+ "primaryKey": false,
4313+ "notNull": false
4314+ },
4315+ "password": {
4316+ "name": "password",
4317+ "type": "text",
4318+ "primaryKey": false,
4319+ "notNull": false
4320+ },
4321+ "is2FAEnabled": {
4322+ "name": "is2FAEnabled",
4323+ "type": "boolean",
4324+ "primaryKey": false,
4325+ "notNull": true,
4326+ "default": false
4327+ },
4328+ "created_at": {
4329+ "name": "created_at",
4330+ "type": "timestamp",
4331+ "primaryKey": false,
4332+ "notNull": true
4333+ },
4334+ "updated_at": {
4335+ "name": "updated_at",
4336+ "type": "timestamp",
4337+ "primaryKey": false,
4338+ "notNull": true
4339+ },
4340+ "resetPasswordToken": {
4341+ "name": "resetPasswordToken",
4342+ "type": "text",
4343+ "primaryKey": false,
4344+ "notNull": false
4345+ },
4346+ "resetPasswordExpiresAt": {
4347+ "name": "resetPasswordExpiresAt",
4348+ "type": "text",
4349+ "primaryKey": false,
4350+ "notNull": false
4351+ },
4352+ "confirmationToken": {
4353+ "name": "confirmationToken",
4354+ "type": "text",
4355+ "primaryKey": false,
4356+ "notNull": false
4357+ },
4358+ "confirmationExpiresAt": {
4359+ "name": "confirmationExpiresAt",
4360+ "type": "text",
4361+ "primaryKey": false,
4362+ "notNull": false
4363+ }
4364+ },
4365+ "indexes": {},
4366+ "foreignKeys": {
4367+ "account_user_id_user_temp_id_fk": {
4368+ "name": "account_user_id_user_temp_id_fk",
4369+ "tableFrom": "account",
4370+ "tableTo": "user_temp",
4371+ "columnsFrom": [
4372+ "user_id"
4373+ ],
4374+ "columnsTo": [
4375+ "id"
4376+ ],
4377+ "onDelete": "cascade",
4378+ "onUpdate": "no action"
4379+ }
4380+ },
4381+ "compositePrimaryKeys": {},
4382+ "uniqueConstraints": {},
4383+ "policies": {},
4384+ "checkConstraints": {},
4385+ "isRLSEnabled": false
4386+ },
4387+ "public.apikey": {
4388+ "name": "apikey",
4389+ "schema": "",
4390+ "columns": {
4391+ "id": {
4392+ "name": "id",
4393+ "type": "text",
4394+ "primaryKey": true,
4395+ "notNull": true
4396+ },
4397+ "name": {
4398+ "name": "name",
4399+ "type": "text",
4400+ "primaryKey": false,
4401+ "notNull": false
4402+ },
4403+ "start": {
4404+ "name": "start",
4405+ "type": "text",
4406+ "primaryKey": false,
4407+ "notNull": false
4408+ },
4409+ "prefix": {
4410+ "name": "prefix",
4411+ "type": "text",
4412+ "primaryKey": false,
4413+ "notNull": false
4414+ },
4415+ "key": {
4416+ "name": "key",
4417+ "type": "text",
4418+ "primaryKey": false,
4419+ "notNull": true
4420+ },
4421+ "user_id": {
4422+ "name": "user_id",
4423+ "type": "text",
4424+ "primaryKey": false,
4425+ "notNull": true
4426+ },
4427+ "refill_interval": {
4428+ "name": "refill_interval",
4429+ "type": "integer",
4430+ "primaryKey": false,
4431+ "notNull": false
4432+ },
4433+ "refill_amount": {
4434+ "name": "refill_amount",
4435+ "type": "integer",
4436+ "primaryKey": false,
4437+ "notNull": false
4438+ },
4439+ "last_refill_at": {
4440+ "name": "last_refill_at",
4441+ "type": "timestamp",
4442+ "primaryKey": false,
4443+ "notNull": false
4444+ },
4445+ "enabled": {
4446+ "name": "enabled",
4447+ "type": "boolean",
4448+ "primaryKey": false,
4449+ "notNull": false
4450+ },
4451+ "rate_limit_enabled": {
4452+ "name": "rate_limit_enabled",
4453+ "type": "boolean",
4454+ "primaryKey": false,
4455+ "notNull": false
4456+ },
4457+ "rate_limit_time_window": {
4458+ "name": "rate_limit_time_window",
4459+ "type": "integer",
4460+ "primaryKey": false,
4461+ "notNull": false
4462+ },
4463+ "rate_limit_max": {
4464+ "name": "rate_limit_max",
4465+ "type": "integer",
4466+ "primaryKey": false,
4467+ "notNull": false
4468+ },
4469+ "request_count": {
4470+ "name": "request_count",
4471+ "type": "integer",
4472+ "primaryKey": false,
4473+ "notNull": false
4474+ },
4475+ "remaining": {
4476+ "name": "remaining",
4477+ "type": "integer",
4478+ "primaryKey": false,
4479+ "notNull": false
4480+ },
4481+ "last_request": {
4482+ "name": "last_request",
4483+ "type": "timestamp",
4484+ "primaryKey": false,
4485+ "notNull": false
4486+ },
4487+ "expires_at": {
4488+ "name": "expires_at",
4489+ "type": "timestamp",
4490+ "primaryKey": false,
4491+ "notNull": false
4492+ },
4493+ "created_at": {
4494+ "name": "created_at",
4495+ "type": "timestamp",
4496+ "primaryKey": false,
4497+ "notNull": true
4498+ },
4499+ "updated_at": {
4500+ "name": "updated_at",
4501+ "type": "timestamp",
4502+ "primaryKey": false,
4503+ "notNull": true
4504+ },
4505+ "permissions": {
4506+ "name": "permissions",
4507+ "type": "text",
4508+ "primaryKey": false,
4509+ "notNull": false
4510+ },
4511+ "metadata": {
4512+ "name": "metadata",
4513+ "type": "text",
4514+ "primaryKey": false,
4515+ "notNull": false
4516+ }
4517+ },
4518+ "indexes": {},
4519+ "foreignKeys": {
4520+ "apikey_user_id_user_temp_id_fk": {
4521+ "name": "apikey_user_id_user_temp_id_fk",
4522+ "tableFrom": "apikey",
4523+ "tableTo": "user_temp",
4524+ "columnsFrom": [
4525+ "user_id"
4526+ ],
4527+ "columnsTo": [
4528+ "id"
4529+ ],
4530+ "onDelete": "cascade",
4531+ "onUpdate": "no action"
4532+ }
4533+ },
4534+ "compositePrimaryKeys": {},
4535+ "uniqueConstraints": {},
4536+ "policies": {},
4537+ "checkConstraints": {},
4538+ "isRLSEnabled": false
4539+ },
4540+ "public.invitation": {
4541+ "name": "invitation",
4542+ "schema": "",
4543+ "columns": {
4544+ "id": {
4545+ "name": "id",
4546+ "type": "text",
4547+ "primaryKey": true,
4548+ "notNull": true
4549+ },
4550+ "organization_id": {
4551+ "name": "organization_id",
4552+ "type": "text",
4553+ "primaryKey": false,
4554+ "notNull": true
4555+ },
4556+ "email": {
4557+ "name": "email",
4558+ "type": "text",
4559+ "primaryKey": false,
4560+ "notNull": true
4561+ },
4562+ "role": {
4563+ "name": "role",
4564+ "type": "text",
4565+ "primaryKey": false,
4566+ "notNull": false
4567+ },
4568+ "status": {
4569+ "name": "status",
4570+ "type": "text",
4571+ "primaryKey": false,
4572+ "notNull": true
4573+ },
4574+ "expires_at": {
4575+ "name": "expires_at",
4576+ "type": "timestamp",
4577+ "primaryKey": false,
4578+ "notNull": true
4579+ },
4580+ "inviter_id": {
4581+ "name": "inviter_id",
4582+ "type": "text",
4583+ "primaryKey": false,
4584+ "notNull": true
4585+ },
4586+ "team_id": {
4587+ "name": "team_id",
4588+ "type": "text",
4589+ "primaryKey": false,
4590+ "notNull": false
4591+ }
4592+ },
4593+ "indexes": {},
4594+ "foreignKeys": {
4595+ "invitation_organization_id_organization_id_fk": {
4596+ "name": "invitation_organization_id_organization_id_fk",
4597+ "tableFrom": "invitation",
4598+ "tableTo": "organization",
4599+ "columnsFrom": [
4600+ "organization_id"
4601+ ],
4602+ "columnsTo": [
4603+ "id"
4604+ ],
4605+ "onDelete": "cascade",
4606+ "onUpdate": "no action"
4607+ },
4608+ "invitation_inviter_id_user_temp_id_fk": {
4609+ "name": "invitation_inviter_id_user_temp_id_fk",
4610+ "tableFrom": "invitation",
4611+ "tableTo": "user_temp",
4612+ "columnsFrom": [
4613+ "inviter_id"
4614+ ],
4615+ "columnsTo": [
4616+ "id"
4617+ ],
4618+ "onDelete": "cascade",
4619+ "onUpdate": "no action"
4620+ }
4621+ },
4622+ "compositePrimaryKeys": {},
4623+ "uniqueConstraints": {},
4624+ "policies": {},
4625+ "checkConstraints": {},
4626+ "isRLSEnabled": false
4627+ },
4628+ "public.member": {
4629+ "name": "member",
4630+ "schema": "",
4631+ "columns": {
4632+ "id": {
4633+ "name": "id",
4634+ "type": "text",
4635+ "primaryKey": true,
4636+ "notNull": true
4637+ },
4638+ "organization_id": {
4639+ "name": "organization_id",
4640+ "type": "text",
4641+ "primaryKey": false,
4642+ "notNull": true
4643+ },
4644+ "user_id": {
4645+ "name": "user_id",
4646+ "type": "text",
4647+ "primaryKey": false,
4648+ "notNull": true
4649+ },
4650+ "role": {
4651+ "name": "role",
4652+ "type": "text",
4653+ "primaryKey": false,
4654+ "notNull": true
4655+ },
4656+ "created_at": {
4657+ "name": "created_at",
4658+ "type": "timestamp",
4659+ "primaryKey": false,
4660+ "notNull": true
4661+ },
4662+ "team_id": {
4663+ "name": "team_id",
4664+ "type": "text",
4665+ "primaryKey": false,
4666+ "notNull": false
4667+ },
4668+ "canCreateProjects": {
4669+ "name": "canCreateProjects",
4670+ "type": "boolean",
4671+ "primaryKey": false,
4672+ "notNull": true,
4673+ "default": false
4674+ },
4675+ "canAccessToSSHKeys": {
4676+ "name": "canAccessToSSHKeys",
4677+ "type": "boolean",
4678+ "primaryKey": false,
4679+ "notNull": true,
4680+ "default": false
4681+ },
4682+ "canCreateServices": {
4683+ "name": "canCreateServices",
4684+ "type": "boolean",
4685+ "primaryKey": false,
4686+ "notNull": true,
4687+ "default": false
4688+ },
4689+ "canDeleteProjects": {
4690+ "name": "canDeleteProjects",
4691+ "type": "boolean",
4692+ "primaryKey": false,
4693+ "notNull": true,
4694+ "default": false
4695+ },
4696+ "canDeleteServices": {
4697+ "name": "canDeleteServices",
4698+ "type": "boolean",
4699+ "primaryKey": false,
4700+ "notNull": true,
4701+ "default": false
4702+ },
4703+ "canAccessToDocker": {
4704+ "name": "canAccessToDocker",
4705+ "type": "boolean",
4706+ "primaryKey": false,
4707+ "notNull": true,
4708+ "default": false
4709+ },
4710+ "canAccessToAPI": {
4711+ "name": "canAccessToAPI",
4712+ "type": "boolean",
4713+ "primaryKey": false,
4714+ "notNull": true,
4715+ "default": false
4716+ },
4717+ "canAccessToGitProviders": {
4718+ "name": "canAccessToGitProviders",
4719+ "type": "boolean",
4720+ "primaryKey": false,
4721+ "notNull": true,
4722+ "default": false
4723+ },
4724+ "canAccessToTraefikFiles": {
4725+ "name": "canAccessToTraefikFiles",
4726+ "type": "boolean",
4727+ "primaryKey": false,
4728+ "notNull": true,
4729+ "default": false
4730+ },
4731+ "accesedProjects": {
4732+ "name": "accesedProjects",
4733+ "type": "text[]",
4734+ "primaryKey": false,
4735+ "notNull": true,
4736+ "default": "ARRAY[]::text[]"
4737+ },
4738+ "accesedServices": {
4739+ "name": "accesedServices",
4740+ "type": "text[]",
4741+ "primaryKey": false,
4742+ "notNull": true,
4743+ "default": "ARRAY[]::text[]"
4744+ }
4745+ },
4746+ "indexes": {},
4747+ "foreignKeys": {
4748+ "member_organization_id_organization_id_fk": {
4749+ "name": "member_organization_id_organization_id_fk",
4750+ "tableFrom": "member",
4751+ "tableTo": "organization",
4752+ "columnsFrom": [
4753+ "organization_id"
4754+ ],
4755+ "columnsTo": [
4756+ "id"
4757+ ],
4758+ "onDelete": "cascade",
4759+ "onUpdate": "no action"
4760+ },
4761+ "member_user_id_user_temp_id_fk": {
4762+ "name": "member_user_id_user_temp_id_fk",
4763+ "tableFrom": "member",
4764+ "tableTo": "user_temp",
4765+ "columnsFrom": [
4766+ "user_id"
4767+ ],
4768+ "columnsTo": [
4769+ "id"
4770+ ],
4771+ "onDelete": "cascade",
4772+ "onUpdate": "no action"
4773+ }
4774+ },
4775+ "compositePrimaryKeys": {},
4776+ "uniqueConstraints": {},
4777+ "policies": {},
4778+ "checkConstraints": {},
4779+ "isRLSEnabled": false
4780+ },
4781+ "public.organization": {
4782+ "name": "organization",
4783+ "schema": "",
4784+ "columns": {
4785+ "id": {
4786+ "name": "id",
4787+ "type": "text",
4788+ "primaryKey": true,
4789+ "notNull": true
4790+ },
4791+ "name": {
4792+ "name": "name",
4793+ "type": "text",
4794+ "primaryKey": false,
4795+ "notNull": true
4796+ },
4797+ "slug": {
4798+ "name": "slug",
4799+ "type": "text",
4800+ "primaryKey": false,
4801+ "notNull": false
4802+ },
4803+ "logo": {
4804+ "name": "logo",
4805+ "type": "text",
4806+ "primaryKey": false,
4807+ "notNull": false
4808+ },
4809+ "created_at": {
4810+ "name": "created_at",
4811+ "type": "timestamp",
4812+ "primaryKey": false,
4813+ "notNull": true
4814+ },
4815+ "metadata": {
4816+ "name": "metadata",
4817+ "type": "text",
4818+ "primaryKey": false,
4819+ "notNull": false
4820+ },
4821+ "owner_id": {
4822+ "name": "owner_id",
4823+ "type": "text",
4824+ "primaryKey": false,
4825+ "notNull": true
4826+ }
4827+ },
4828+ "indexes": {},
4829+ "foreignKeys": {
4830+ "organization_owner_id_user_temp_id_fk": {
4831+ "name": "organization_owner_id_user_temp_id_fk",
4832+ "tableFrom": "organization",
4833+ "tableTo": "user_temp",
4834+ "columnsFrom": [
4835+ "owner_id"
4836+ ],
4837+ "columnsTo": [
4838+ "id"
4839+ ],
4840+ "onDelete": "cascade",
4841+ "onUpdate": "no action"
4842+ }
4843+ },
4844+ "compositePrimaryKeys": {},
4845+ "uniqueConstraints": {
4846+ "organization_slug_unique": {
4847+ "name": "organization_slug_unique",
4848+ "nullsNotDistinct": false,
4849+ "columns": [
4850+ "slug"
4851+ ]
4852+ }
4853+ },
4854+ "policies": {},
4855+ "checkConstraints": {},
4856+ "isRLSEnabled": false
4857+ },
4858+ "public.two_factor": {
4859+ "name": "two_factor",
4860+ "schema": "",
4861+ "columns": {
4862+ "id": {
4863+ "name": "id",
4864+ "type": "text",
4865+ "primaryKey": true,
4866+ "notNull": true
4867+ },
4868+ "secret": {
4869+ "name": "secret",
4870+ "type": "text",
4871+ "primaryKey": false,
4872+ "notNull": true
4873+ },
4874+ "backup_codes": {
4875+ "name": "backup_codes",
4876+ "type": "text",
4877+ "primaryKey": false,
4878+ "notNull": true
4879+ },
4880+ "user_id": {
4881+ "name": "user_id",
4882+ "type": "text",
4883+ "primaryKey": false,
4884+ "notNull": true
4885+ }
4886+ },
4887+ "indexes": {},
4888+ "foreignKeys": {
4889+ "two_factor_user_id_user_temp_id_fk": {
4890+ "name": "two_factor_user_id_user_temp_id_fk",
4891+ "tableFrom": "two_factor",
4892+ "tableTo": "user_temp",
4893+ "columnsFrom": [
4894+ "user_id"
4895+ ],
4896+ "columnsTo": [
4897+ "id"
4898+ ],
4899+ "onDelete": "cascade",
4900+ "onUpdate": "no action"
4901+ }
4902+ },
4903+ "compositePrimaryKeys": {},
4904+ "uniqueConstraints": {},
4905+ "policies": {},
4906+ "checkConstraints": {},
4907+ "isRLSEnabled": false
4908+ },
4909+ "public.verification": {
4910+ "name": "verification",
4911+ "schema": "",
4912+ "columns": {
4913+ "id": {
4914+ "name": "id",
4915+ "type": "text",
4916+ "primaryKey": true,
4917+ "notNull": true
4918+ },
4919+ "identifier": {
4920+ "name": "identifier",
4921+ "type": "text",
4922+ "primaryKey": false,
4923+ "notNull": true
4924+ },
4925+ "value": {
4926+ "name": "value",
4927+ "type": "text",
4928+ "primaryKey": false,
4929+ "notNull": true
4930+ },
4931+ "expires_at": {
4932+ "name": "expires_at",
4933+ "type": "timestamp",
4934+ "primaryKey": false,
4935+ "notNull": true
4936+ },
4937+ "created_at": {
4938+ "name": "created_at",
4939+ "type": "timestamp",
4940+ "primaryKey": false,
4941+ "notNull": false
4942+ },
4943+ "updated_at": {
4944+ "name": "updated_at",
4945+ "type": "timestamp",
4946+ "primaryKey": false,
4947+ "notNull": false
4948+ }
4949+ },
4950+ "indexes": {},
4951+ "foreignKeys": {},
4952+ "compositePrimaryKeys": {},
4953+ "uniqueConstraints": {},
4954+ "policies": {},
4955+ "checkConstraints": {},
4956+ "isRLSEnabled": false
4957+ }
4958+ },
4959+ "enums": {
4960+ "public.buildType": {
4961+ "name": "buildType",
4962+ "schema": "public",
4963+ "values": [
4964+ "dockerfile",
4965+ "heroku_buildpacks",
4966+ "paketo_buildpacks",
4967+ "nixpacks",
4968+ "static",
4969+ "railpack"
4970+ ]
4971+ },
4972+ "public.sourceType": {
4973+ "name": "sourceType",
4974+ "schema": "public",
4975+ "values": [
4976+ "docker",
4977+ "git",
4978+ "github",
4979+ "gitlab",
4980+ "bitbucket",
4981+ "drop"
4982+ ]
4983+ },
4984+ "public.domainType": {
4985+ "name": "domainType",
4986+ "schema": "public",
4987+ "values": [
4988+ "compose",
4989+ "application",
4990+ "preview"
4991+ ]
4992+ },
4993+ "public.databaseType": {
4994+ "name": "databaseType",
4995+ "schema": "public",
4996+ "values": [
4997+ "postgres",
4998+ "mariadb",
4999+ "mysql",

127 more lines aren’t shown here.

apps/dokploy/drizzle/meta/_journal.json+7−0
@@ -491,6 +491,13 @@ · 490 unmodified lines
491491 "when": 1741152916611,
492492 "tag": "0069_legal_bill_hollister",
493493 "breakpoints": true
494+ },
495+ {
496+ "idx": 70,
497+ "version": "7",
498+ "when": 1741322697251,
499+ "tag": "0070_useful_serpent_society",
500+ "breakpoints": true
494501 }
495502 ]
496503 }
apps/dokploy/server/api/routers/destination.ts+2−1
@@ -21,7 +21,7 @@ import { · 20 unmodified lines
2121 updateDestinationById,
2222 } from "@dokploy/server";
2323 import { TRPCError } from "@trpc/server";
24−import { eq } from "drizzle-orm";
24+import { eq, desc } from "drizzle-orm";
2525
2626 export const destinationRouter = createTRPCRouter({
2727 create: adminProcedure
@@ -98,6 +98,7 @@ export const destinationRouter = createTRPCRouter({ · 70 unmodified lines
9898 all: protectedProcedure.query(async ({ ctx }) => {
9999 return await db.query.destinations.findMany({
100100 where: eq(destinations.organizationId, ctx.session.activeOrganizationId),
101+ orderBy: [desc(destinations.createdAt)],
101102 });
102103 }),
103104 remove: adminProcedure
packages/server/src/db/schema/destination.ts+2−1
@@ -1,5 +1,5 @@
11 import { relations } from "drizzle-orm";
2−import { pgTable, text } from "drizzle-orm/pg-core";
2+import { pgTable, text, timestamp } from "drizzle-orm/pg-core";
33 import { createInsertSchema } from "drizzle-zod";
44 import { nanoid } from "nanoid";
55 import { z } from "zod";
@@ -21,6 +21,7 @@ export const destinations = pgTable("destination", { · 15 unmodified lines
2121 organizationId: text("organizationId")
2222 .notNull()
2323 .references(() => organization.id, { onDelete: "cascade" }),
24+ createdAt: timestamp("createdAt").notNull().defaultNow(),
2425 });
2526
2627 export const destinationsRelations = relations(