@danielcok17/prisma-db 1.15.0 → 1.16.0
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/package.json +1 -1
- package/prisma/app.prisma +56 -0
- package/prisma/migrations/20260319220000_add_file_storage_to_ingested_documents/migration.sql +3 -0
- package/prisma/migrations/20260320120000_add_phone_verified/migration.sql +2 -0
- package/prisma/migrations/20260322170005_add_admin_grant_and_app_invite/migration.sql +100 -0
package/package.json
CHANGED
package/prisma/app.prisma
CHANGED
|
@@ -85,6 +85,7 @@ model User {
|
|
|
85
85
|
registrationUtmTerm String? // Keywords pri registrácii
|
|
86
86
|
// Profile fields
|
|
87
87
|
phone String? // Mobilný telefón
|
|
88
|
+
phoneVerified DateTime? // Kedy bol telefón overený cez OTP
|
|
88
89
|
occupation String? // Povolanie (Právnik, Účtovník, etc.)
|
|
89
90
|
preferredLanguage String? @default("sk") // Jazyk odpovedi (sk, cs, en)
|
|
90
91
|
// Relations
|
|
@@ -116,6 +117,7 @@ model User {
|
|
|
116
117
|
conversions Conversion[]
|
|
117
118
|
// Ingestion pipeline
|
|
118
119
|
ingestedDocuments IngestedDocument[]
|
|
120
|
+
adminGrants AdminGrant[]
|
|
119
121
|
|
|
120
122
|
// Multi-brand: compound unique allows same email across brands
|
|
121
123
|
@@unique([email, brand])
|
|
@@ -189,6 +191,7 @@ model Organization {
|
|
|
189
191
|
invites OrganizationInvite[]
|
|
190
192
|
stripeCustomer StripeCustomer?
|
|
191
193
|
folderShares FolderShare[]
|
|
194
|
+
adminGrants AdminGrant[]
|
|
192
195
|
|
|
193
196
|
createdAt DateTime @default(now())
|
|
194
197
|
updatedAt DateTime @updatedAt
|
|
@@ -1040,6 +1043,8 @@ model IngestedDocument {
|
|
|
1040
1043
|
embeddingCost Float? // EUR
|
|
1041
1044
|
qdrantDocId String? @unique // doc_id used in Qdrant vector payloads
|
|
1042
1045
|
folderId String? // Optional folder association
|
|
1046
|
+
storagePath String? // Local filesystem path (dev/staging)
|
|
1047
|
+
storageUrl String? // Cloud storage URL (prod — S3/DigitalOcean Spaces)
|
|
1043
1048
|
error String?
|
|
1044
1049
|
createdAt DateTime @default(now())
|
|
1045
1050
|
updatedAt DateTime @updatedAt
|
|
@@ -1252,3 +1257,54 @@ model FolderShare {
|
|
|
1252
1257
|
@@index([organizationId])
|
|
1253
1258
|
@@index([sharedById])
|
|
1254
1259
|
}
|
|
1260
|
+
|
|
1261
|
+
// ============================================
|
|
1262
|
+
// ADMIN GRANTS & INVITES
|
|
1263
|
+
// ============================================
|
|
1264
|
+
|
|
1265
|
+
model AdminGrant {
|
|
1266
|
+
id String @id @default(cuid())
|
|
1267
|
+
userId String?
|
|
1268
|
+
organizationId String?
|
|
1269
|
+
tier SubscriptionTier
|
|
1270
|
+
startsAt DateTime @default(now())
|
|
1271
|
+
expiresAt DateTime
|
|
1272
|
+
grantedBy String
|
|
1273
|
+
reason String?
|
|
1274
|
+
inviteId String?
|
|
1275
|
+
isActive Boolean @default(true)
|
|
1276
|
+
revokedAt DateTime?
|
|
1277
|
+
revokedBy String?
|
|
1278
|
+
createdAt DateTime @default(now())
|
|
1279
|
+
updatedAt DateTime @updatedAt
|
|
1280
|
+
|
|
1281
|
+
user User? @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
1282
|
+
organization Organization? @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
|
1283
|
+
|
|
1284
|
+
@@index([userId])
|
|
1285
|
+
@@index([organizationId])
|
|
1286
|
+
@@index([expiresAt])
|
|
1287
|
+
@@index([isActive])
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
model AppInvite {
|
|
1291
|
+
id String @id @default(cuid())
|
|
1292
|
+
email String
|
|
1293
|
+
token String @unique
|
|
1294
|
+
invitedByEmail String
|
|
1295
|
+
grantTier SubscriptionTier?
|
|
1296
|
+
grantDays Int?
|
|
1297
|
+
targetOrgId String?
|
|
1298
|
+
targetOrgRole MemberRole?
|
|
1299
|
+
createOrgName String?
|
|
1300
|
+
expiresAt DateTime
|
|
1301
|
+
acceptedAt DateTime?
|
|
1302
|
+
acceptedByUserId String?
|
|
1303
|
+
isActive Boolean @default(true)
|
|
1304
|
+
createdAt DateTime @default(now())
|
|
1305
|
+
updatedAt DateTime @updatedAt
|
|
1306
|
+
|
|
1307
|
+
@@index([email])
|
|
1308
|
+
@@index([token])
|
|
1309
|
+
@@index([isActive])
|
|
1310
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "PhoneOtp" (
|
|
3
|
+
"id" TEXT NOT NULL,
|
|
4
|
+
"userId" TEXT NOT NULL,
|
|
5
|
+
"phone" TEXT NOT NULL,
|
|
6
|
+
"bulkgateId" TEXT NOT NULL,
|
|
7
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
8
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
9
|
+
|
|
10
|
+
CONSTRAINT "PhoneOtp_pkey" PRIMARY KEY ("id")
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
-- CreateTable
|
|
14
|
+
CREATE TABLE "AdminGrant" (
|
|
15
|
+
"id" TEXT NOT NULL,
|
|
16
|
+
"userId" TEXT,
|
|
17
|
+
"organizationId" TEXT,
|
|
18
|
+
"tier" "SubscriptionTier" NOT NULL,
|
|
19
|
+
"startsAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
20
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
21
|
+
"grantedBy" TEXT NOT NULL,
|
|
22
|
+
"reason" TEXT,
|
|
23
|
+
"inviteId" TEXT,
|
|
24
|
+
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
25
|
+
"revokedAt" TIMESTAMP(3),
|
|
26
|
+
"revokedBy" TEXT,
|
|
27
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
28
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
29
|
+
|
|
30
|
+
CONSTRAINT "AdminGrant_pkey" PRIMARY KEY ("id")
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
-- CreateTable
|
|
34
|
+
CREATE TABLE "AppInvite" (
|
|
35
|
+
"id" TEXT NOT NULL,
|
|
36
|
+
"email" TEXT NOT NULL,
|
|
37
|
+
"token" TEXT NOT NULL,
|
|
38
|
+
"invitedByEmail" TEXT NOT NULL,
|
|
39
|
+
"grantTier" "SubscriptionTier",
|
|
40
|
+
"grantDays" INTEGER,
|
|
41
|
+
"targetOrgId" TEXT,
|
|
42
|
+
"targetOrgRole" "MemberRole",
|
|
43
|
+
"createOrgName" TEXT,
|
|
44
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
45
|
+
"acceptedAt" TIMESTAMP(3),
|
|
46
|
+
"acceptedByUserId" TEXT,
|
|
47
|
+
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
48
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
49
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
50
|
+
|
|
51
|
+
CONSTRAINT "AppInvite_pkey" PRIMARY KEY ("id")
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
-- CreateIndex
|
|
55
|
+
CREATE UNIQUE INDEX "PhoneOtp_bulkgateId_key" ON "PhoneOtp"("bulkgateId");
|
|
56
|
+
|
|
57
|
+
-- CreateIndex
|
|
58
|
+
CREATE INDEX "PhoneOtp_userId_idx" ON "PhoneOtp"("userId");
|
|
59
|
+
|
|
60
|
+
-- CreateIndex
|
|
61
|
+
CREATE INDEX "PhoneOtp_bulkgateId_idx" ON "PhoneOtp"("bulkgateId");
|
|
62
|
+
|
|
63
|
+
-- CreateIndex
|
|
64
|
+
CREATE INDEX "PhoneOtp_expiresAt_idx" ON "PhoneOtp"("expiresAt");
|
|
65
|
+
|
|
66
|
+
-- CreateIndex
|
|
67
|
+
CREATE INDEX "AdminGrant_userId_idx" ON "AdminGrant"("userId");
|
|
68
|
+
|
|
69
|
+
-- CreateIndex
|
|
70
|
+
CREATE INDEX "AdminGrant_organizationId_idx" ON "AdminGrant"("organizationId");
|
|
71
|
+
|
|
72
|
+
-- CreateIndex
|
|
73
|
+
CREATE INDEX "AdminGrant_expiresAt_idx" ON "AdminGrant"("expiresAt");
|
|
74
|
+
|
|
75
|
+
-- CreateIndex
|
|
76
|
+
CREATE INDEX "AdminGrant_isActive_idx" ON "AdminGrant"("isActive");
|
|
77
|
+
|
|
78
|
+
-- CreateIndex
|
|
79
|
+
CREATE UNIQUE INDEX "AppInvite_token_key" ON "AppInvite"("token");
|
|
80
|
+
|
|
81
|
+
-- CreateIndex
|
|
82
|
+
CREATE INDEX "AppInvite_email_idx" ON "AppInvite"("email");
|
|
83
|
+
|
|
84
|
+
-- CreateIndex
|
|
85
|
+
CREATE INDEX "AppInvite_token_idx" ON "AppInvite"("token");
|
|
86
|
+
|
|
87
|
+
-- CreateIndex
|
|
88
|
+
CREATE INDEX "AppInvite_isActive_idx" ON "AppInvite"("isActive");
|
|
89
|
+
|
|
90
|
+
-- CreateIndex
|
|
91
|
+
CREATE INDEX "User_phone_idx" ON "User"("phone");
|
|
92
|
+
|
|
93
|
+
-- AddForeignKey
|
|
94
|
+
ALTER TABLE "PhoneOtp" ADD CONSTRAINT "PhoneOtp_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
95
|
+
|
|
96
|
+
-- AddForeignKey
|
|
97
|
+
ALTER TABLE "AdminGrant" ADD CONSTRAINT "AdminGrant_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
98
|
+
|
|
99
|
+
-- AddForeignKey
|
|
100
|
+
ALTER TABLE "AdminGrant" ADD CONSTRAINT "AdminGrant_organizationId_fkey" FOREIGN KEY ("organizationId") REFERENCES "Organization"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|