@varaos/db 1.1.14 → 1.1.15
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
CHANGED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "public"."AuthType" AS ENUM ('credentials', 'oauth', 'hybrid');
|
|
3
|
+
|
|
4
|
+
-- AlterEnum
|
|
5
|
+
-- This migration adds more than one value to an enum.
|
|
6
|
+
-- With PostgreSQL versions 11 and earlier, this is not possible
|
|
7
|
+
-- in a single migration. This can be worked around by creating
|
|
8
|
+
-- multiple migrations, each migration adding only one value to
|
|
9
|
+
-- the enum.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
ALTER TYPE "public"."Plan" ADD VALUE 'starter';
|
|
13
|
+
ALTER TYPE "public"."Plan" ADD VALUE 'business';
|
|
14
|
+
|
|
15
|
+
-- AlterTable
|
|
16
|
+
ALTER TABLE "public"."Subscription" ADD COLUMN "razorpayCustomerId" TEXT,
|
|
17
|
+
ADD COLUMN "razorpayPlanId" TEXT,
|
|
18
|
+
ADD COLUMN "razorpaySubscriptionId" TEXT;
|
|
19
|
+
|
|
20
|
+
-- AlterTable
|
|
21
|
+
ALTER TABLE "public"."TokenTransaction" ADD COLUMN "billingPeriod" TEXT,
|
|
22
|
+
ADD COLUMN "integration" TEXT,
|
|
23
|
+
ADD COLUMN "source" TEXT,
|
|
24
|
+
ADD COLUMN "workspaceId" TEXT;
|
|
25
|
+
|
|
26
|
+
-- AlterTable
|
|
27
|
+
ALTER TABLE "public"."User" ADD COLUMN "authType" "public"."AuthType" NOT NULL DEFAULT 'oauth',
|
|
28
|
+
ADD COLUMN "avatarOverrideUrl" TEXT,
|
|
29
|
+
ADD COLUMN "passwordStrength" TEXT;
|
|
30
|
+
|
|
31
|
+
-- CreateTable
|
|
32
|
+
CREATE TABLE "public"."UserSession" (
|
|
33
|
+
"id" TEXT NOT NULL,
|
|
34
|
+
"userId" TEXT NOT NULL,
|
|
35
|
+
"ip" TEXT,
|
|
36
|
+
"userAgent" TEXT,
|
|
37
|
+
"lastUsed" TIMESTAMP(3) NOT NULL,
|
|
38
|
+
"revoked" BOOLEAN NOT NULL DEFAULT false,
|
|
39
|
+
"revokedAt" TIMESTAMP(3),
|
|
40
|
+
"expiresAt" TIMESTAMP(3) NOT NULL,
|
|
41
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
42
|
+
|
|
43
|
+
CONSTRAINT "UserSession_pkey" PRIMARY KEY ("id")
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
-- CreateTable
|
|
47
|
+
CREATE TABLE "public"."UserEmail" (
|
|
48
|
+
"id" TEXT NOT NULL,
|
|
49
|
+
"userId" TEXT NOT NULL,
|
|
50
|
+
"email" TEXT NOT NULL,
|
|
51
|
+
"verified" BOOLEAN NOT NULL DEFAULT false,
|
|
52
|
+
"primary" BOOLEAN NOT NULL DEFAULT false,
|
|
53
|
+
"type" TEXT,
|
|
54
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
55
|
+
|
|
56
|
+
CONSTRAINT "UserEmail_pkey" PRIMARY KEY ("id")
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
-- CreateTable
|
|
60
|
+
CREATE TABLE "public"."UsageAggregate" (
|
|
61
|
+
"id" TEXT NOT NULL,
|
|
62
|
+
"userId" TEXT NOT NULL,
|
|
63
|
+
"workspaceId" TEXT,
|
|
64
|
+
"billingPeriod" TEXT NOT NULL,
|
|
65
|
+
"source" TEXT NOT NULL,
|
|
66
|
+
"tokensUsed" INTEGER NOT NULL,
|
|
67
|
+
"requestCount" INTEGER NOT NULL,
|
|
68
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
69
|
+
|
|
70
|
+
CONSTRAINT "UsageAggregate_pkey" PRIMARY KEY ("id")
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
-- CreateTable
|
|
74
|
+
CREATE TABLE "public"."SecurityEvent" (
|
|
75
|
+
"id" TEXT NOT NULL,
|
|
76
|
+
"userId" TEXT,
|
|
77
|
+
"type" TEXT NOT NULL,
|
|
78
|
+
"ip" TEXT,
|
|
79
|
+
"userAgent" TEXT,
|
|
80
|
+
"success" BOOLEAN NOT NULL,
|
|
81
|
+
"metadata" JSONB,
|
|
82
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
83
|
+
|
|
84
|
+
CONSTRAINT "SecurityEvent_pkey" PRIMARY KEY ("id")
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
-- CreateTable
|
|
88
|
+
CREATE TABLE "public"."Invoice" (
|
|
89
|
+
"id" TEXT NOT NULL,
|
|
90
|
+
"userId" TEXT NOT NULL,
|
|
91
|
+
"subscriptionId" TEXT,
|
|
92
|
+
"razorpayInvoiceId" TEXT NOT NULL,
|
|
93
|
+
"amount" INTEGER NOT NULL,
|
|
94
|
+
"currency" TEXT NOT NULL,
|
|
95
|
+
"status" TEXT NOT NULL,
|
|
96
|
+
"periodStart" TIMESTAMP(3) NOT NULL,
|
|
97
|
+
"periodEnd" TIMESTAMP(3) NOT NULL,
|
|
98
|
+
"pdfUrl" TEXT,
|
|
99
|
+
"metadata" JSONB,
|
|
100
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
101
|
+
|
|
102
|
+
CONSTRAINT "Invoice_pkey" PRIMARY KEY ("id")
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
-- CreateTable
|
|
106
|
+
CREATE TABLE "public"."BillingEvent" (
|
|
107
|
+
"id" TEXT NOT NULL,
|
|
108
|
+
"provider" TEXT NOT NULL,
|
|
109
|
+
"eventType" TEXT NOT NULL,
|
|
110
|
+
"eventId" TEXT NOT NULL,
|
|
111
|
+
"payload" JSONB NOT NULL,
|
|
112
|
+
"processed" BOOLEAN NOT NULL DEFAULT false,
|
|
113
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
114
|
+
|
|
115
|
+
CONSTRAINT "BillingEvent_pkey" PRIMARY KEY ("id")
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
-- CreateTable
|
|
119
|
+
CREATE TABLE "public"."PaymentMethod" (
|
|
120
|
+
"id" TEXT NOT NULL,
|
|
121
|
+
"userId" TEXT NOT NULL,
|
|
122
|
+
"provider" TEXT NOT NULL,
|
|
123
|
+
"type" TEXT NOT NULL,
|
|
124
|
+
"brand" TEXT,
|
|
125
|
+
"last4" TEXT,
|
|
126
|
+
"expMonth" INTEGER,
|
|
127
|
+
"expYear" INTEGER,
|
|
128
|
+
"isDefault" BOOLEAN NOT NULL DEFAULT true,
|
|
129
|
+
"metadata" JSONB,
|
|
130
|
+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
131
|
+
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
132
|
+
|
|
133
|
+
CONSTRAINT "PaymentMethod_pkey" PRIMARY KEY ("id")
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
-- CreateIndex
|
|
137
|
+
CREATE INDEX "UserSession_userId_idx" ON "public"."UserSession"("userId");
|
|
138
|
+
|
|
139
|
+
-- CreateIndex
|
|
140
|
+
CREATE UNIQUE INDEX "UserEmail_email_key" ON "public"."UserEmail"("email");
|
|
141
|
+
|
|
142
|
+
-- CreateIndex
|
|
143
|
+
CREATE UNIQUE INDEX "UsageAggregate_userId_workspaceId_billingPeriod_source_key" ON "public"."UsageAggregate"("userId", "workspaceId", "billingPeriod", "source");
|
|
144
|
+
|
|
145
|
+
-- CreateIndex
|
|
146
|
+
CREATE INDEX "SecurityEvent_userId_createdAt_idx" ON "public"."SecurityEvent"("userId", "createdAt");
|
|
147
|
+
|
|
148
|
+
-- CreateIndex
|
|
149
|
+
CREATE UNIQUE INDEX "BillingEvent_eventId_key" ON "public"."BillingEvent"("eventId");
|
|
150
|
+
|
|
151
|
+
-- CreateIndex
|
|
152
|
+
CREATE INDEX "BillingEvent_provider_eventType_idx" ON "public"."BillingEvent"("provider", "eventType");
|
|
153
|
+
|
|
154
|
+
-- CreateIndex
|
|
155
|
+
CREATE INDEX "Subscription_razorpayCustomerId_idx" ON "public"."Subscription"("razorpayCustomerId");
|
|
156
|
+
|
|
157
|
+
-- CreateIndex
|
|
158
|
+
CREATE INDEX "Subscription_razorpaySubscriptionId_idx" ON "public"."Subscription"("razorpaySubscriptionId");
|
|
159
|
+
|
|
160
|
+
-- AddForeignKey
|
|
161
|
+
ALTER TABLE "public"."UserSession" ADD CONSTRAINT "UserSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
162
|
+
|
|
163
|
+
-- AddForeignKey
|
|
164
|
+
ALTER TABLE "public"."UserEmail" ADD CONSTRAINT "UserEmail_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
165
|
+
|
|
166
|
+
-- AddForeignKey
|
|
167
|
+
ALTER TABLE "public"."Invoice" ADD CONSTRAINT "Invoice_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
168
|
+
|
|
169
|
+
-- AddForeignKey
|
|
170
|
+
ALTER TABLE "public"."PaymentMethod" ADD CONSTRAINT "PaymentMethod_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
package/prisma/schema.prisma
CHANGED
|
@@ -34,10 +34,18 @@ enum Status {
|
|
|
34
34
|
|
|
35
35
|
enum Plan {
|
|
36
36
|
free
|
|
37
|
+
starter
|
|
37
38
|
pro
|
|
39
|
+
business
|
|
38
40
|
enterprise
|
|
39
41
|
}
|
|
40
42
|
|
|
43
|
+
enum AuthType {
|
|
44
|
+
credentials
|
|
45
|
+
oauth
|
|
46
|
+
hybrid
|
|
47
|
+
}
|
|
48
|
+
|
|
41
49
|
enum MessageRole {
|
|
42
50
|
user
|
|
43
51
|
assistant
|
|
@@ -65,9 +73,12 @@ enum ReactionType {
|
|
|
65
73
|
/// ─────────────────────────────────────────────
|
|
66
74
|
|
|
67
75
|
model User {
|
|
68
|
-
id
|
|
69
|
-
name
|
|
70
|
-
|
|
76
|
+
id String @id @default(uuid())
|
|
77
|
+
name String
|
|
78
|
+
|
|
79
|
+
image String? // provider image
|
|
80
|
+
avatarOverrideUrl String?
|
|
81
|
+
|
|
71
82
|
email String @unique
|
|
72
83
|
password String?
|
|
73
84
|
emailVerified DateTime?
|
|
@@ -86,6 +97,10 @@ model User {
|
|
|
86
97
|
creditsUsed Int @default(0)
|
|
87
98
|
deletedAt DateTime?
|
|
88
99
|
|
|
100
|
+
authType AuthType @default(oauth)
|
|
101
|
+
|
|
102
|
+
passwordStrength String? // weak | medium | strong
|
|
103
|
+
|
|
89
104
|
accounts Account[]
|
|
90
105
|
integrations Integration[]
|
|
91
106
|
tokenTransactions TokenTransaction[]
|
|
@@ -99,13 +114,47 @@ model User {
|
|
|
99
114
|
Onboarding Onboarding?
|
|
100
115
|
ChatSession ChatSession[]
|
|
101
116
|
|
|
102
|
-
createdAt
|
|
103
|
-
updatedAt
|
|
104
|
-
posts
|
|
117
|
+
createdAt DateTime @default(now())
|
|
118
|
+
updatedAt DateTime @updatedAt
|
|
119
|
+
posts Post[]
|
|
120
|
+
userSessions UserSession[]
|
|
121
|
+
paymentMethods PaymentMethod[]
|
|
122
|
+
userEmails UserEmail[]
|
|
123
|
+
invoices Invoice[]
|
|
105
124
|
|
|
106
125
|
@@index([status])
|
|
107
126
|
}
|
|
108
127
|
|
|
128
|
+
model UserSession {
|
|
129
|
+
id String @id @default(uuid())
|
|
130
|
+
userId String
|
|
131
|
+
ip String?
|
|
132
|
+
userAgent String?
|
|
133
|
+
lastUsed DateTime
|
|
134
|
+
|
|
135
|
+
revoked Boolean @default(false)
|
|
136
|
+
revokedAt DateTime?
|
|
137
|
+
|
|
138
|
+
expiresAt DateTime
|
|
139
|
+
createdAt DateTime @default(now())
|
|
140
|
+
|
|
141
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
142
|
+
|
|
143
|
+
@@index([userId])
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
model UserEmail {
|
|
147
|
+
id String @id @default(uuid())
|
|
148
|
+
userId String
|
|
149
|
+
email String @unique
|
|
150
|
+
verified Boolean @default(false)
|
|
151
|
+
primary Boolean @default(false)
|
|
152
|
+
type String? // billing | security | notifications
|
|
153
|
+
createdAt DateTime @default(now())
|
|
154
|
+
|
|
155
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
156
|
+
}
|
|
157
|
+
|
|
109
158
|
model Account {
|
|
110
159
|
id String @id @default(uuid())
|
|
111
160
|
userId String
|
|
@@ -261,14 +310,34 @@ model AIAgent {
|
|
|
261
310
|
ChatSession ChatSession[]
|
|
262
311
|
}
|
|
263
312
|
|
|
313
|
+
model UsageAggregate {
|
|
314
|
+
id String @id @default(uuid())
|
|
315
|
+
userId String
|
|
316
|
+
workspaceId String?
|
|
317
|
+
billingPeriod String
|
|
318
|
+
source String // chat | automation | api
|
|
319
|
+
tokensUsed Int
|
|
320
|
+
requestCount Int
|
|
321
|
+
updatedAt DateTime @updatedAt
|
|
322
|
+
|
|
323
|
+
@@unique([userId, workspaceId, billingPeriod, source])
|
|
324
|
+
}
|
|
325
|
+
|
|
264
326
|
model TokenTransaction {
|
|
265
|
-
id String
|
|
327
|
+
id String @id @default(uuid())
|
|
266
328
|
userId String
|
|
267
329
|
agentId String?
|
|
268
330
|
tokensUsed Int
|
|
269
331
|
action String
|
|
270
|
-
|
|
271
|
-
|
|
332
|
+
|
|
333
|
+
source String? // chat | automation | api
|
|
334
|
+
workspaceId String?
|
|
335
|
+
integration String?
|
|
336
|
+
|
|
337
|
+
billingPeriod String? // e.g. "2025-01" (YYYY-MM)
|
|
338
|
+
|
|
339
|
+
metadata Json?
|
|
340
|
+
createdAt DateTime @default(now())
|
|
272
341
|
|
|
273
342
|
user User @relation(fields: [userId], references: [id])
|
|
274
343
|
agent AIAgent? @relation(fields: [agentId], references: [id])
|
|
@@ -519,6 +588,19 @@ model AuditLog {
|
|
|
519
588
|
@@index([userId, createdAt])
|
|
520
589
|
}
|
|
521
590
|
|
|
591
|
+
model SecurityEvent {
|
|
592
|
+
id String @id @default(uuid())
|
|
593
|
+
userId String?
|
|
594
|
+
type String // login | logout | password_change | session_revoked
|
|
595
|
+
ip String?
|
|
596
|
+
userAgent String?
|
|
597
|
+
success Boolean
|
|
598
|
+
metadata Json?
|
|
599
|
+
createdAt DateTime @default(now())
|
|
600
|
+
|
|
601
|
+
@@index([userId, createdAt])
|
|
602
|
+
}
|
|
603
|
+
|
|
522
604
|
/// ─────────────────────────────────────────────
|
|
523
605
|
/// BILLING / WAITLIST / JOBS / ONBOARDING
|
|
524
606
|
/// ─────────────────────────────────────────────
|
|
@@ -527,13 +609,71 @@ model Subscription {
|
|
|
527
609
|
id String @id @default(uuid())
|
|
528
610
|
userId String
|
|
529
611
|
plan Plan
|
|
530
|
-
status String
|
|
612
|
+
status String // active | trialing | past_due | canceled
|
|
531
613
|
startedAt DateTime
|
|
532
614
|
endedAt DateTime?
|
|
533
615
|
nextPayment DateTime?
|
|
534
|
-
|
|
616
|
+
|
|
617
|
+
razorpayCustomerId String?
|
|
618
|
+
razorpaySubscriptionId String?
|
|
619
|
+
razorpayPlanId String?
|
|
620
|
+
|
|
621
|
+
metadata Json?
|
|
535
622
|
|
|
536
623
|
user User @relation(fields: [userId], references: [id])
|
|
624
|
+
|
|
625
|
+
@@index([razorpayCustomerId])
|
|
626
|
+
@@index([razorpaySubscriptionId])
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
model Invoice {
|
|
630
|
+
id String @id @default(uuid())
|
|
631
|
+
userId String
|
|
632
|
+
subscriptionId String?
|
|
633
|
+
razorpayInvoiceId String
|
|
634
|
+
amount Int
|
|
635
|
+
currency String
|
|
636
|
+
status String // paid | open | failed | refunded
|
|
637
|
+
periodStart DateTime
|
|
638
|
+
periodEnd DateTime
|
|
639
|
+
pdfUrl String?
|
|
640
|
+
metadata Json?
|
|
641
|
+
|
|
642
|
+
createdAt DateTime @default(now())
|
|
643
|
+
|
|
644
|
+
user User @relation(fields: [userId], references: [id])
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
model BillingEvent {
|
|
648
|
+
id String @id @default(uuid())
|
|
649
|
+
provider String // razorpay
|
|
650
|
+
|
|
651
|
+
eventType String
|
|
652
|
+
eventId String @unique // razorpay event ID
|
|
653
|
+
|
|
654
|
+
payload Json
|
|
655
|
+
processed Boolean @default(false)
|
|
656
|
+
createdAt DateTime @default(now())
|
|
657
|
+
|
|
658
|
+
@@index([provider, eventType])
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
model PaymentMethod {
|
|
662
|
+
id String @id @default(uuid())
|
|
663
|
+
userId String
|
|
664
|
+
provider String // razorpay | stripe | paypal
|
|
665
|
+
type String // card
|
|
666
|
+
brand String?
|
|
667
|
+
last4 String?
|
|
668
|
+
expMonth Int?
|
|
669
|
+
expYear Int?
|
|
670
|
+
isDefault Boolean @default(true)
|
|
671
|
+
metadata Json?
|
|
672
|
+
|
|
673
|
+
createdAt DateTime @default(now())
|
|
674
|
+
updatedAt DateTime @updatedAt
|
|
675
|
+
|
|
676
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
537
677
|
}
|
|
538
678
|
|
|
539
679
|
model WaitList {
|