launchbase 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/launchbase.js +2 -119
- package/package.json +1 -1
- package/template/frontend/src/App.tsx +6 -0
- package/template/frontend/src/components/Layout.tsx +6 -0
- package/template/frontend/src/lib/api.ts +0 -2
- package/template/frontend/src/lib/sdk.ts +1 -3
- package/template/frontend/src/pages/Deployments.tsx +332 -0
- package/template/frontend/src/pages/EdgeFunctions.tsx +478 -0
- package/template/prisma/migrations/0_init/migration.sql +262 -75
- package/template/prisma/schema.prisma +211 -147
- package/template/sdk/README.md +1 -2
- package/template/sdk/index.ts +1 -3
- package/template/src/modules/audit/audit.interceptor.ts +1 -1
- package/template/src/modules/auth/auth.service.ts +12 -7
- package/template/src/modules/billing/billing.service.ts +1 -1
- package/template/src/modules/common/filters/all-exceptions.filter.ts +15 -5
- package/template/src/modules/common/project.guard.ts +52 -0
- package/template/src/modules/common/tenant.guard.ts +3 -3
- package/template/src/modules/orgs/orgs.service.ts +18 -15
- package/template/src/modules/projects/dto/create-project.dto.ts +1 -5
- package/template/types/src/index.ts +0 -2
|
@@ -1,12 +1,28 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "Role" AS ENUM ('OWNER', 'ADMIN', 'MEMBER');
|
|
3
|
+
|
|
4
|
+
-- ============================================
|
|
5
|
+
-- Enum Types
|
|
6
|
+
-- ============================================
|
|
7
|
+
|
|
8
|
+
-- ============================================
|
|
9
|
+
-- Core Multi-Tenant Models
|
|
10
|
+
-- ============================================
|
|
11
|
+
|
|
1
12
|
-- CreateTable
|
|
2
13
|
CREATE TABLE "User" (
|
|
3
14
|
"id" TEXT NOT NULL,
|
|
4
15
|
"email" TEXT NOT NULL,
|
|
5
|
-
"
|
|
16
|
+
"name" TEXT,
|
|
17
|
+
"image" TEXT,
|
|
18
|
+
"passwordHash" TEXT,
|
|
6
19
|
"emailVerified" TIMESTAMP(3),
|
|
7
20
|
"twoFactorSecret" TEXT,
|
|
8
21
|
"twoFactorEnabled" BOOLEAN NOT NULL DEFAULT false,
|
|
22
|
+
"oauthProvider" TEXT,
|
|
23
|
+
"oauthId" TEXT,
|
|
9
24
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
25
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
10
26
|
|
|
11
27
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
12
28
|
);
|
|
@@ -16,47 +32,110 @@ CREATE TABLE "Organization" (
|
|
|
16
32
|
"id" TEXT NOT NULL,
|
|
17
33
|
"name" TEXT NOT NULL,
|
|
18
34
|
"slug" TEXT NOT NULL,
|
|
35
|
+
"ownerId" TEXT NOT NULL,
|
|
19
36
|
"plan" TEXT NOT NULL DEFAULT 'free',
|
|
20
37
|
"stripeCustomerId" TEXT,
|
|
21
38
|
"stripeSubscriptionId" TEXT,
|
|
22
39
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
40
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
23
41
|
|
|
24
42
|
CONSTRAINT "Organization_pkey" PRIMARY KEY ("id")
|
|
25
43
|
);
|
|
26
44
|
|
|
27
45
|
-- CreateTable
|
|
28
|
-
CREATE TABLE "
|
|
46
|
+
CREATE TABLE "OrganizationMember" (
|
|
29
47
|
"id" TEXT NOT NULL,
|
|
48
|
+
"organizationId" TEXT NOT NULL,
|
|
30
49
|
"userId" TEXT NOT NULL,
|
|
31
|
-
"
|
|
32
|
-
"role" TEXT NOT NULL DEFAULT 'MEMBER',
|
|
50
|
+
"role" "Role" NOT NULL DEFAULT 'MEMBER',
|
|
33
51
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
34
52
|
|
|
35
|
-
CONSTRAINT "
|
|
53
|
+
CONSTRAINT "OrganizationMember_pkey" PRIMARY KEY ("id")
|
|
36
54
|
);
|
|
37
55
|
|
|
38
56
|
-- CreateTable
|
|
39
57
|
CREATE TABLE "Project" (
|
|
40
58
|
"id" TEXT NOT NULL,
|
|
41
|
-
"
|
|
59
|
+
"organizationId" TEXT NOT NULL,
|
|
42
60
|
"name" TEXT NOT NULL,
|
|
43
|
-
"
|
|
61
|
+
"slug" TEXT NOT NULL,
|
|
44
62
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
63
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
45
64
|
|
|
46
65
|
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
|
|
47
66
|
);
|
|
48
67
|
|
|
68
|
+
-- ============================================
|
|
69
|
+
-- Project-Scoped Resources
|
|
70
|
+
-- ============================================
|
|
71
|
+
|
|
49
72
|
-- CreateTable
|
|
50
|
-
CREATE TABLE "
|
|
73
|
+
CREATE TABLE "EdgeFunction" (
|
|
51
74
|
"id" TEXT NOT NULL,
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
75
|
+
"projectId" TEXT NOT NULL,
|
|
76
|
+
"name" TEXT NOT NULL,
|
|
77
|
+
"slug" TEXT NOT NULL,
|
|
78
|
+
"runtime" TEXT NOT NULL DEFAULT 'nodejs18',
|
|
79
|
+
"sourceCode" TEXT NOT NULL,
|
|
80
|
+
"environment" JSONB,
|
|
81
|
+
"triggers" JSONB,
|
|
82
|
+
"status" TEXT NOT NULL DEFAULT 'draft',
|
|
83
|
+
"deployedAt" TIMESTAMP(3),
|
|
84
|
+
"deploymentUrl" TEXT,
|
|
55
85
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
86
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
56
87
|
|
|
57
|
-
CONSTRAINT "
|
|
88
|
+
CONSTRAINT "EdgeFunction_pkey" PRIMARY KEY ("id")
|
|
58
89
|
);
|
|
59
90
|
|
|
91
|
+
-- CreateTable
|
|
92
|
+
CREATE TABLE "EdgeFunctionLog" (
|
|
93
|
+
"id" TEXT NOT NULL,
|
|
94
|
+
"functionId" TEXT NOT NULL,
|
|
95
|
+
"status" TEXT NOT NULL,
|
|
96
|
+
"duration" INTEGER NOT NULL,
|
|
97
|
+
"input" JSONB,
|
|
98
|
+
"output" JSONB,
|
|
99
|
+
"error" TEXT,
|
|
100
|
+
"triggeredBy" TEXT,
|
|
101
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
102
|
+
|
|
103
|
+
CONSTRAINT "EdgeFunctionLog_pkey" PRIMARY KEY ("id")
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
-- CreateTable
|
|
107
|
+
CREATE TABLE "VectorCollection" (
|
|
108
|
+
"id" TEXT NOT NULL,
|
|
109
|
+
"projectId" TEXT NOT NULL,
|
|
110
|
+
"name" TEXT NOT NULL,
|
|
111
|
+
"provider" TEXT NOT NULL DEFAULT 'local',
|
|
112
|
+
"dimension" INTEGER NOT NULL DEFAULT 1536,
|
|
113
|
+
"embeddingModel" TEXT NOT NULL DEFAULT 'text-embedding-3-small',
|
|
114
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
115
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
116
|
+
|
|
117
|
+
CONSTRAINT "VectorCollection_pkey" PRIMARY KEY ("id")
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
-- CreateTable
|
|
121
|
+
CREATE TABLE "Deployment" (
|
|
122
|
+
"id" TEXT NOT NULL,
|
|
123
|
+
"projectId" TEXT NOT NULL,
|
|
124
|
+
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
125
|
+
"version" TEXT,
|
|
126
|
+
"deployedAt" TIMESTAMP(3),
|
|
127
|
+
"platform" TEXT,
|
|
128
|
+
"url" TEXT,
|
|
129
|
+
"logs" JSONB,
|
|
130
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
131
|
+
|
|
132
|
+
CONSTRAINT "Deployment_pkey" PRIMARY KEY ("id")
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
-- ============================================
|
|
136
|
+
-- Auth & Session Models
|
|
137
|
+
-- ============================================
|
|
138
|
+
|
|
60
139
|
-- CreateTable
|
|
61
140
|
CREATE TABLE "VerificationToken" (
|
|
62
141
|
"id" TEXT NOT NULL,
|
|
@@ -79,25 +158,55 @@ CREATE TABLE "PasswordResetToken" (
|
|
|
79
158
|
CONSTRAINT "PasswordResetToken_pkey" PRIMARY KEY ("id")
|
|
80
159
|
);
|
|
81
160
|
|
|
161
|
+
-- CreateTable
|
|
162
|
+
CREATE TABLE "RefreshToken" (
|
|
163
|
+
"id" TEXT NOT NULL,
|
|
164
|
+
"userId" TEXT NOT NULL,
|
|
165
|
+
"tokenHash" TEXT NOT NULL,
|
|
166
|
+
"revokedAt" TIMESTAMP(3),
|
|
167
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
168
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
169
|
+
|
|
170
|
+
CONSTRAINT "RefreshToken_pkey" PRIMARY KEY ("id")
|
|
171
|
+
);
|
|
172
|
+
|
|
82
173
|
-- CreateTable
|
|
83
174
|
CREATE TABLE "Invitation" (
|
|
84
175
|
"id" TEXT NOT NULL,
|
|
85
|
-
"orgId" TEXT NOT NULL,
|
|
86
176
|
"email" TEXT NOT NULL,
|
|
87
|
-
"
|
|
177
|
+
"orgId" TEXT NOT NULL,
|
|
178
|
+
"role" "Role" NOT NULL DEFAULT 'MEMBER',
|
|
88
179
|
"token" TEXT NOT NULL,
|
|
89
180
|
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
90
|
-
"acceptedAt" TIMESTAMP(3),
|
|
91
181
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
182
|
+
"acceptedAt" TIMESTAMP(3),
|
|
92
183
|
|
|
93
184
|
CONSTRAINT "Invitation_pkey" PRIMARY KEY ("id")
|
|
94
185
|
);
|
|
95
186
|
|
|
187
|
+
-- CreateTable
|
|
188
|
+
CREATE TABLE "OAuthAccount" (
|
|
189
|
+
"id" TEXT NOT NULL,
|
|
190
|
+
"userId" TEXT NOT NULL,
|
|
191
|
+
"provider" TEXT NOT NULL,
|
|
192
|
+
"providerId" TEXT NOT NULL,
|
|
193
|
+
"accessToken" TEXT,
|
|
194
|
+
"refreshToken" TEXT,
|
|
195
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
196
|
+
|
|
197
|
+
CONSTRAINT "OAuthAccount_pkey" PRIMARY KEY ("id")
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
-- ============================================
|
|
201
|
+
-- Other Models
|
|
202
|
+
-- ============================================
|
|
203
|
+
|
|
96
204
|
-- CreateTable
|
|
97
205
|
CREATE TABLE "AuditLog" (
|
|
98
206
|
"id" TEXT NOT NULL,
|
|
99
207
|
"orgId" TEXT,
|
|
100
208
|
"userId" TEXT,
|
|
209
|
+
"projectId" TEXT,
|
|
101
210
|
"action" TEXT NOT NULL,
|
|
102
211
|
"entity" TEXT,
|
|
103
212
|
"entityId" TEXT,
|
|
@@ -109,24 +218,12 @@ CREATE TABLE "AuditLog" (
|
|
|
109
218
|
CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
|
|
110
219
|
);
|
|
111
220
|
|
|
112
|
-
-- CreateTable
|
|
113
|
-
CREATE TABLE "OAuthAccount" (
|
|
114
|
-
"id" TEXT NOT NULL,
|
|
115
|
-
"userId" TEXT NOT NULL,
|
|
116
|
-
"provider" TEXT NOT NULL,
|
|
117
|
-
"providerId" TEXT NOT NULL,
|
|
118
|
-
"accessToken" TEXT,
|
|
119
|
-
"refreshToken" TEXT,
|
|
120
|
-
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
121
|
-
|
|
122
|
-
CONSTRAINT "OAuthAccount_pkey" PRIMARY KEY ("id")
|
|
123
|
-
);
|
|
124
|
-
|
|
125
221
|
-- CreateTable
|
|
126
222
|
CREATE TABLE "File" (
|
|
127
223
|
"id" TEXT NOT NULL,
|
|
128
224
|
"userId" TEXT NOT NULL,
|
|
129
225
|
"orgId" TEXT,
|
|
226
|
+
"projectId" TEXT,
|
|
130
227
|
"filename" TEXT NOT NULL,
|
|
131
228
|
"originalName" TEXT NOT NULL,
|
|
132
229
|
"mimeType" TEXT NOT NULL,
|
|
@@ -138,89 +235,179 @@ CREATE TABLE "File" (
|
|
|
138
235
|
CONSTRAINT "File_pkey" PRIMARY KEY ("id")
|
|
139
236
|
);
|
|
140
237
|
|
|
141
|
-
--
|
|
142
|
-
CREATE
|
|
238
|
+
-- CreateTable
|
|
239
|
+
CREATE TABLE "ScannedProject" (
|
|
240
|
+
"id" TEXT NOT NULL,
|
|
241
|
+
"userId" TEXT NOT NULL,
|
|
242
|
+
"name" TEXT NOT NULL,
|
|
243
|
+
"repositoryUrl" TEXT,
|
|
244
|
+
"framework" TEXT,
|
|
245
|
+
"detectedApis" JSONB,
|
|
246
|
+
"detectedModels" JSONB,
|
|
247
|
+
"detectedAuth" JSONB,
|
|
248
|
+
"suggestedSetup" JSONB,
|
|
249
|
+
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
250
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
251
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
252
|
+
|
|
253
|
+
CONSTRAINT "ScannedProject_pkey" PRIMARY KEY ("id")
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
-- CreateTable
|
|
257
|
+
CREATE TABLE "DBCollection" (
|
|
258
|
+
"id" TEXT NOT NULL,
|
|
259
|
+
"projectId" TEXT NOT NULL,
|
|
260
|
+
"name" TEXT NOT NULL,
|
|
261
|
+
"description" TEXT,
|
|
262
|
+
"schema" JSONB,
|
|
263
|
+
"indexes" JSONB,
|
|
264
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
265
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
266
|
+
|
|
267
|
+
CONSTRAINT "DBCollection_pkey" PRIMARY KEY ("id")
|
|
268
|
+
);
|
|
269
|
+
|
|
270
|
+
-- CreateTable
|
|
271
|
+
CREATE TABLE "DBDocument" (
|
|
272
|
+
"id" TEXT NOT NULL,
|
|
273
|
+
"collectionId" TEXT NOT NULL,
|
|
274
|
+
"data" JSONB NOT NULL,
|
|
275
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
276
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
277
|
+
|
|
278
|
+
CONSTRAINT "DBDocument_pkey" PRIMARY KEY ("id")
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
-- ============================================
|
|
282
|
+
-- Indexes
|
|
283
|
+
-- ============================================
|
|
143
284
|
|
|
144
|
-
--
|
|
285
|
+
-- User indexes
|
|
286
|
+
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
145
287
|
CREATE INDEX "User_email_idx" ON "User"("email");
|
|
288
|
+
CREATE INDEX "User_oauthProvider_oauthId_idx" ON "User"("oauthProvider", "oauthId");
|
|
146
289
|
|
|
147
|
-
--
|
|
290
|
+
-- Organization indexes
|
|
148
291
|
CREATE UNIQUE INDEX "Organization_slug_key" ON "Organization"("slug");
|
|
292
|
+
CREATE INDEX "Organization_slug_idx" ON "Organization"("slug");
|
|
293
|
+
CREATE INDEX "Organization_ownerId_idx" ON "Organization"("ownerId");
|
|
149
294
|
|
|
150
|
-
--
|
|
151
|
-
CREATE INDEX "
|
|
295
|
+
-- OrganizationMember indexes
|
|
296
|
+
CREATE INDEX "OrganizationMember_organizationId_idx" ON "OrganizationMember"("organizationId");
|
|
297
|
+
CREATE INDEX "OrganizationMember_userId_idx" ON "OrganizationMember"("userId");
|
|
298
|
+
CREATE UNIQUE INDEX "OrganizationMember_organizationId_userId_key" ON "OrganizationMember"("organizationId", "userId");
|
|
152
299
|
|
|
153
|
-
--
|
|
154
|
-
CREATE INDEX "
|
|
300
|
+
-- Project indexes
|
|
301
|
+
CREATE INDEX "Project_organizationId_idx" ON "Project"("organizationId");
|
|
302
|
+
CREATE INDEX "Project_slug_idx" ON "Project"("slug");
|
|
303
|
+
CREATE UNIQUE INDEX "Project_organizationId_slug_key" ON "Project"("organizationId", "slug");
|
|
155
304
|
|
|
156
|
-
--
|
|
157
|
-
CREATE
|
|
305
|
+
-- EdgeFunction indexes
|
|
306
|
+
CREATE INDEX "EdgeFunction_projectId_idx" ON "EdgeFunction"("projectId");
|
|
307
|
+
CREATE INDEX "EdgeFunction_status_idx" ON "EdgeFunction"("status");
|
|
308
|
+
CREATE UNIQUE INDEX "EdgeFunction_projectId_slug_key" ON "EdgeFunction"("projectId", "slug");
|
|
158
309
|
|
|
159
|
-
--
|
|
160
|
-
CREATE INDEX "
|
|
310
|
+
-- EdgeFunctionLog indexes
|
|
311
|
+
CREATE INDEX "EdgeFunctionLog_functionId_idx" ON "EdgeFunctionLog"("functionId");
|
|
312
|
+
CREATE INDEX "EdgeFunctionLog_createdAt_idx" ON "EdgeFunctionLog"("createdAt");
|
|
161
313
|
|
|
162
|
-
--
|
|
163
|
-
CREATE INDEX "
|
|
314
|
+
-- VectorCollection indexes
|
|
315
|
+
CREATE INDEX "VectorCollection_projectId_idx" ON "VectorCollection"("projectId");
|
|
316
|
+
CREATE UNIQUE INDEX "VectorCollection_projectId_name_key" ON "VectorCollection"("projectId", "name");
|
|
164
317
|
|
|
165
|
-
--
|
|
318
|
+
-- Deployment indexes
|
|
319
|
+
CREATE INDEX "Deployment_projectId_idx" ON "Deployment"("projectId");
|
|
320
|
+
CREATE INDEX "Deployment_status_idx" ON "Deployment"("status");
|
|
321
|
+
|
|
322
|
+
-- VerificationToken indexes
|
|
166
323
|
CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token");
|
|
167
324
|
|
|
168
|
-
--
|
|
325
|
+
-- PasswordResetToken indexes
|
|
169
326
|
CREATE UNIQUE INDEX "PasswordResetToken_token_key" ON "PasswordResetToken"("token");
|
|
170
327
|
|
|
171
|
-
--
|
|
172
|
-
CREATE INDEX "
|
|
328
|
+
-- RefreshToken indexes
|
|
329
|
+
CREATE INDEX "RefreshToken_userId_idx" ON "RefreshToken"("userId");
|
|
173
330
|
|
|
174
|
-
--
|
|
331
|
+
-- Invitation indexes
|
|
332
|
+
CREATE INDEX "Invitation_orgId_idx" ON "Invitation"("orgId");
|
|
333
|
+
CREATE UNIQUE INDEX "Invitation_email_orgId_key" ON "Invitation"("email", "orgId");
|
|
175
334
|
CREATE UNIQUE INDEX "Invitation_token_key" ON "Invitation"("token");
|
|
176
335
|
|
|
177
|
-
--
|
|
178
|
-
CREATE INDEX "
|
|
336
|
+
-- OAuthAccount indexes
|
|
337
|
+
CREATE UNIQUE INDEX "OAuthAccount_provider_providerId_key" ON "OAuthAccount"("provider", "providerId");
|
|
338
|
+
CREATE INDEX "OAuthAccount_userId_idx" ON "OAuthAccount"("userId");
|
|
179
339
|
|
|
180
|
-
--
|
|
340
|
+
-- AuditLog indexes
|
|
341
|
+
CREATE INDEX "AuditLog_orgId_idx" ON "AuditLog"("orgId");
|
|
181
342
|
CREATE INDEX "AuditLog_userId_idx" ON "AuditLog"("userId");
|
|
182
|
-
|
|
183
|
-
-- CreateIndex
|
|
343
|
+
CREATE INDEX "AuditLog_projectId_idx" ON "AuditLog"("projectId");
|
|
184
344
|
CREATE INDEX "AuditLog_action_idx" ON "AuditLog"("action");
|
|
185
|
-
|
|
186
|
-
-- CreateIndex
|
|
187
345
|
CREATE INDEX "AuditLog_createdAt_idx" ON "AuditLog"("createdAt");
|
|
188
346
|
|
|
189
|
-
--
|
|
190
|
-
CREATE
|
|
347
|
+
-- File indexes
|
|
348
|
+
CREATE INDEX "File_userId_idx" ON "File"("userId");
|
|
349
|
+
CREATE INDEX "File_orgId_idx" ON "File"("orgId");
|
|
350
|
+
CREATE INDEX "File_projectId_idx" ON "File"("projectId");
|
|
191
351
|
|
|
192
|
-
--
|
|
193
|
-
CREATE INDEX "
|
|
352
|
+
-- ScannedProject indexes
|
|
353
|
+
CREATE INDEX "ScannedProject_userId_idx" ON "ScannedProject"("userId");
|
|
354
|
+
CREATE INDEX "ScannedProject_status_idx" ON "ScannedProject"("status");
|
|
194
355
|
|
|
195
|
-
--
|
|
196
|
-
CREATE INDEX "
|
|
356
|
+
-- DBCollection indexes
|
|
357
|
+
CREATE INDEX "DBCollection_projectId_idx" ON "DBCollection"("projectId");
|
|
358
|
+
CREATE UNIQUE INDEX "DBCollection_projectId_name_key" ON "DBCollection"("projectId", "name");
|
|
197
359
|
|
|
198
|
-
--
|
|
199
|
-
CREATE INDEX "
|
|
360
|
+
-- DBDocument indexes
|
|
361
|
+
CREATE INDEX "DBDocument_collectionId_idx" ON "DBDocument"("collectionId");
|
|
200
362
|
|
|
201
|
-
--
|
|
202
|
-
|
|
363
|
+
-- ============================================
|
|
364
|
+
-- Foreign Keys
|
|
365
|
+
-- ============================================
|
|
203
366
|
|
|
204
|
-
--
|
|
205
|
-
ALTER TABLE "
|
|
367
|
+
-- Organization -> User (owner)
|
|
368
|
+
ALTER TABLE "Organization" ADD CONSTRAINT "Organization_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
206
369
|
|
|
207
|
-
--
|
|
208
|
-
ALTER TABLE "
|
|
370
|
+
-- OrganizationMember -> Organization
|
|
371
|
+
ALTER TABLE "OrganizationMember" ADD CONSTRAINT "OrganizationMember_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
209
372
|
|
|
210
|
-
--
|
|
211
|
-
ALTER TABLE "
|
|
373
|
+
-- OrganizationMember -> User
|
|
374
|
+
ALTER TABLE "OrganizationMember" ADD CONSTRAINT "OrganizationMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
375
|
+
|
|
376
|
+
-- Project -> Organization
|
|
377
|
+
ALTER TABLE "Project" ADD CONSTRAINT "Project_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
212
378
|
|
|
213
|
-
--
|
|
379
|
+
-- EdgeFunction -> Project
|
|
380
|
+
ALTER TABLE "EdgeFunction" ADD CONSTRAINT "EdgeFunction_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
381
|
+
|
|
382
|
+
-- EdgeFunctionLog -> EdgeFunction
|
|
383
|
+
ALTER TABLE "EdgeFunctionLog" ADD CONSTRAINT "EdgeFunctionLog_functionId_fkey" FOREIGN KEY ("functionId") REFERENCES "EdgeFunction"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
384
|
+
|
|
385
|
+
-- VectorCollection -> Project
|
|
386
|
+
ALTER TABLE "VectorCollection" ADD CONSTRAINT "VectorCollection_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
387
|
+
|
|
388
|
+
-- Deployment -> Project
|
|
389
|
+
ALTER TABLE "Deployment" ADD CONSTRAINT "Deployment_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
390
|
+
|
|
391
|
+
-- VerificationToken -> User
|
|
214
392
|
ALTER TABLE "VerificationToken" ADD CONSTRAINT "VerificationToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
215
393
|
|
|
216
|
-
--
|
|
394
|
+
-- PasswordResetToken -> User
|
|
217
395
|
ALTER TABLE "PasswordResetToken" ADD CONSTRAINT "PasswordResetToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
218
396
|
|
|
219
|
-
--
|
|
397
|
+
-- RefreshToken -> User
|
|
398
|
+
ALTER TABLE "RefreshToken" ADD CONSTRAINT "RefreshToken_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
399
|
+
|
|
400
|
+
-- Invitation -> Organization
|
|
220
401
|
ALTER TABLE "Invitation" ADD CONSTRAINT "Invitation_orgId_fkey" FOREIGN KEY ("orgId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
221
402
|
|
|
222
|
-
--
|
|
403
|
+
-- OAuthAccount -> User
|
|
223
404
|
ALTER TABLE "OAuthAccount" ADD CONSTRAINT "OAuthAccount_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
224
405
|
|
|
225
|
-
--
|
|
406
|
+
-- File -> User
|
|
226
407
|
ALTER TABLE "File" ADD CONSTRAINT "File_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
408
|
+
|
|
409
|
+
-- DBCollection -> Project
|
|
410
|
+
ALTER TABLE "DBCollection" ADD CONSTRAINT "DBCollection_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
411
|
+
|
|
412
|
+
-- DBDocument -> DBCollection
|
|
413
|
+
ALTER TABLE "DBDocument" ADD CONSTRAINT "DBDocument_collectionId_fkey" FOREIGN KEY ("collectionId") REFERENCES "DBCollection"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|