@danielcok17/prisma-db 1.0.0 → 1.0.2

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.
Files changed (61) hide show
  1. package/README.md +34 -19
  2. package/dist/index.d.ts +2 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +5 -3
  5. package/dist/index.js.map +1 -1
  6. package/dist/utils.d.ts +4 -2
  7. package/dist/utils.d.ts.map +1 -1
  8. package/dist/utils.js +7 -4
  9. package/dist/utils.js.map +1 -1
  10. package/package.json +8 -7
  11. package/prisma/{schema.prisma → app.prisma} +5 -0
  12. package/prisma/generated/app/client.d.ts +1 -0
  13. package/prisma/generated/app/client.js +4 -0
  14. package/prisma/generated/app/default.d.ts +1 -0
  15. package/prisma/generated/app/default.js +4 -0
  16. package/prisma/generated/app/edge.d.ts +1 -0
  17. package/prisma/generated/app/edge.js +393 -0
  18. package/prisma/generated/app/index-browser.js +379 -0
  19. package/prisma/generated/app/index.d.ts +22559 -0
  20. package/prisma/generated/app/index.js +414 -0
  21. package/prisma/generated/app/libquery_engine-darwin-arm64.dylib.node +0 -0
  22. package/prisma/generated/app/package.json +150 -0
  23. package/prisma/generated/app/runtime/edge-esm.js +34 -0
  24. package/prisma/generated/app/runtime/edge.js +34 -0
  25. package/prisma/generated/app/runtime/index-browser.d.ts +370 -0
  26. package/prisma/generated/app/runtime/index-browser.js +16 -0
  27. package/prisma/generated/app/runtime/library.d.ts +4002 -0
  28. package/prisma/generated/app/runtime/library.js +146 -0
  29. package/prisma/generated/app/runtime/react-native.js +83 -0
  30. package/prisma/generated/app/runtime/wasm-compiler-edge.js +83 -0
  31. package/prisma/generated/app/runtime/wasm-engine-edge.js +35 -0
  32. package/prisma/generated/app/schema.prisma +286 -0
  33. package/prisma/generated/app/wasm.d.ts +1 -0
  34. package/prisma/generated/app/wasm.js +379 -0
  35. package/prisma/generated/law/client.d.ts +1 -0
  36. package/prisma/generated/law/client.js +4 -0
  37. package/prisma/generated/law/default.d.ts +1 -0
  38. package/prisma/generated/law/default.js +4 -0
  39. package/prisma/generated/law/edge.d.ts +1 -0
  40. package/prisma/generated/law/edge.js +251 -0
  41. package/prisma/generated/law/index-browser.js +237 -0
  42. package/prisma/generated/law/index.d.ts +6827 -0
  43. package/prisma/generated/law/index.js +272 -0
  44. package/prisma/generated/law/libquery_engine-darwin-arm64.dylib.node +0 -0
  45. package/prisma/generated/law/package.json +150 -0
  46. package/prisma/generated/law/runtime/edge-esm.js +34 -0
  47. package/prisma/generated/law/runtime/edge.js +34 -0
  48. package/prisma/generated/law/runtime/index-browser.d.ts +370 -0
  49. package/prisma/generated/law/runtime/index-browser.js +16 -0
  50. package/prisma/generated/law/runtime/library.d.ts +4002 -0
  51. package/prisma/generated/law/runtime/library.js +146 -0
  52. package/prisma/generated/law/runtime/react-native.js +83 -0
  53. package/prisma/generated/law/runtime/wasm-compiler-edge.js +83 -0
  54. package/prisma/generated/law/runtime/wasm-engine-edge.js +35 -0
  55. package/prisma/generated/law/schema.prisma +80 -0
  56. package/prisma/generated/law/wasm.d.ts +1 -0
  57. package/prisma/generated/law/wasm.js +237 -0
  58. package/prisma/law.prisma +82 -0
  59. package/prisma/migrations/20250818134929_init/migration.sql +374 -0
  60. package/prisma/migrations/migration_lock.toml +3 -0
  61. package/prisma/seed.ts +0 -0
@@ -0,0 +1,237 @@
1
+
2
+ /* !!! This is code generated by Prisma. Do not edit directly. !!!
3
+ /* eslint-disable */
4
+
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+
7
+ const {
8
+ Decimal,
9
+ objectEnumValues,
10
+ makeStrictEnum,
11
+ Public,
12
+ getRuntime,
13
+ skip
14
+ } = require('./runtime/index-browser.js')
15
+
16
+
17
+ const Prisma = {}
18
+
19
+ exports.Prisma = Prisma
20
+ exports.$Enums = {}
21
+
22
+ /**
23
+ * Prisma Client JS version: 6.14.0
24
+ * Query Engine version: 717184b7b35ea05dfa71a3236b7af656013e1e49
25
+ */
26
+ Prisma.prismaVersion = {
27
+ client: "6.14.0",
28
+ engine: "717184b7b35ea05dfa71a3236b7af656013e1e49"
29
+ }
30
+
31
+ Prisma.PrismaClientKnownRequestError = () => {
32
+ const runtimeName = getRuntime().prettyName;
33
+ throw new Error(`PrismaClientKnownRequestError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
34
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
35
+ )};
36
+ Prisma.PrismaClientUnknownRequestError = () => {
37
+ const runtimeName = getRuntime().prettyName;
38
+ throw new Error(`PrismaClientUnknownRequestError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
39
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
40
+ )}
41
+ Prisma.PrismaClientRustPanicError = () => {
42
+ const runtimeName = getRuntime().prettyName;
43
+ throw new Error(`PrismaClientRustPanicError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
44
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
45
+ )}
46
+ Prisma.PrismaClientInitializationError = () => {
47
+ const runtimeName = getRuntime().prettyName;
48
+ throw new Error(`PrismaClientInitializationError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
49
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
50
+ )}
51
+ Prisma.PrismaClientValidationError = () => {
52
+ const runtimeName = getRuntime().prettyName;
53
+ throw new Error(`PrismaClientValidationError is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
54
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
55
+ )}
56
+ Prisma.Decimal = Decimal
57
+
58
+ /**
59
+ * Re-export of sql-template-tag
60
+ */
61
+ Prisma.sql = () => {
62
+ const runtimeName = getRuntime().prettyName;
63
+ throw new Error(`sqltag is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
64
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
65
+ )}
66
+ Prisma.empty = () => {
67
+ const runtimeName = getRuntime().prettyName;
68
+ throw new Error(`empty is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
69
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
70
+ )}
71
+ Prisma.join = () => {
72
+ const runtimeName = getRuntime().prettyName;
73
+ throw new Error(`join is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
74
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
75
+ )}
76
+ Prisma.raw = () => {
77
+ const runtimeName = getRuntime().prettyName;
78
+ throw new Error(`raw is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
79
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
80
+ )}
81
+ Prisma.validator = Public.validator
82
+
83
+ /**
84
+ * Extensions
85
+ */
86
+ Prisma.getExtensionContext = () => {
87
+ const runtimeName = getRuntime().prettyName;
88
+ throw new Error(`Extensions.getExtensionContext is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
89
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
90
+ )}
91
+ Prisma.defineExtension = () => {
92
+ const runtimeName = getRuntime().prettyName;
93
+ throw new Error(`Extensions.defineExtension is unable to run in this browser environment, or has been bundled for the browser (running in ${runtimeName}).
94
+ In case this error is unexpected for you, please report it in https://pris.ly/prisma-prisma-bug-report`,
95
+ )}
96
+
97
+ /**
98
+ * Shorthand utilities for JSON filtering
99
+ */
100
+ Prisma.DbNull = objectEnumValues.instances.DbNull
101
+ Prisma.JsonNull = objectEnumValues.instances.JsonNull
102
+ Prisma.AnyNull = objectEnumValues.instances.AnyNull
103
+
104
+ Prisma.NullTypes = {
105
+ DbNull: objectEnumValues.classes.DbNull,
106
+ JsonNull: objectEnumValues.classes.JsonNull,
107
+ AnyNull: objectEnumValues.classes.AnyNull
108
+ }
109
+
110
+
111
+
112
+ /**
113
+ * Enums
114
+ */
115
+
116
+ exports.Prisma.TransactionIsolationLevel = makeStrictEnum({
117
+ ReadUncommitted: 'ReadUncommitted',
118
+ ReadCommitted: 'ReadCommitted',
119
+ RepeatableRead: 'RepeatableRead',
120
+ Serializable: 'Serializable'
121
+ });
122
+
123
+ exports.Prisma.LawVersionScalarFieldEnum = {
124
+ id: 'id',
125
+ lawId: 'lawId',
126
+ versionNumber: 'versionNumber',
127
+ lawUrl: 'lawUrl',
128
+ isLawVersionEffective: 'isLawVersionEffective',
129
+ isAmendment: 'isAmendment',
130
+ fullLawId: 'fullLawId',
131
+ approvalDate: 'approvalDate',
132
+ publicationDate: 'publicationDate',
133
+ effectiveFrom: 'effectiveFrom',
134
+ effectiveUntil: 'effectiveUntil',
135
+ author: 'author',
136
+ fullLawHtml: 'fullLawHtml',
137
+ fullLaw: 'fullLaw',
138
+ legalAreas: 'legalAreas',
139
+ publishedIn: 'publishedIn',
140
+ relationships: 'relationships'
141
+ };
142
+
143
+ exports.Prisma.LawAttachmentScalarFieldEnum = {
144
+ id: 'id',
145
+ name: 'name',
146
+ attachmentId: 'attachmentId',
147
+ content: 'content',
148
+ lawVersionId: 'lawVersionId'
149
+ };
150
+
151
+ exports.Prisma.VersionParagraphScalarFieldEnum = {
152
+ id: 'id',
153
+ paragraphId: 'paragraphId',
154
+ versionId: 'versionId',
155
+ sequenceNumber: 'sequenceNumber',
156
+ text: 'text',
157
+ fullText: 'fullText',
158
+ fullTextWithCitations: 'fullTextWithCitations',
159
+ embedding: 'embedding',
160
+ partId: 'partId',
161
+ partName: 'partName',
162
+ chapterId: 'chapterId',
163
+ chapterName: 'chapterName',
164
+ divisionId: 'divisionId',
165
+ divisionName: 'divisionName',
166
+ sectionId: 'sectionId',
167
+ sectionName: 'sectionName',
168
+ paragraphPath: 'paragraphPath',
169
+ paragraphGroupName: 'paragraphGroupName',
170
+ isAmendment: 'isAmendment',
171
+ validFrom: 'validFrom',
172
+ validTo: 'validTo'
173
+ };
174
+
175
+ exports.Prisma.SortOrder = {
176
+ asc: 'asc',
177
+ desc: 'desc'
178
+ };
179
+
180
+ exports.Prisma.NullableJsonNullValueInput = {
181
+ DbNull: Prisma.DbNull,
182
+ JsonNull: Prisma.JsonNull
183
+ };
184
+
185
+ exports.Prisma.QueryMode = {
186
+ default: 'default',
187
+ insensitive: 'insensitive'
188
+ };
189
+
190
+ exports.Prisma.JsonNullValueFilter = {
191
+ DbNull: Prisma.DbNull,
192
+ JsonNull: Prisma.JsonNull,
193
+ AnyNull: Prisma.AnyNull
194
+ };
195
+
196
+ exports.Prisma.NullsOrder = {
197
+ first: 'first',
198
+ last: 'last'
199
+ };
200
+
201
+
202
+ exports.Prisma.ModelName = {
203
+ LawVersion: 'LawVersion',
204
+ LawAttachment: 'LawAttachment',
205
+ VersionParagraph: 'VersionParagraph'
206
+ };
207
+
208
+ /**
209
+ * This is a stub Prisma Client that will error at runtime if called.
210
+ */
211
+ class PrismaClient {
212
+ constructor() {
213
+ return new Proxy(this, {
214
+ get(target, prop) {
215
+ let message
216
+ const runtime = getRuntime()
217
+ if (runtime.isEdge) {
218
+ message = `PrismaClient is not configured to run in ${runtime.prettyName}. In order to run Prisma Client on edge runtime, either:
219
+ - Use Prisma Accelerate: https://pris.ly/d/accelerate
220
+ - Use Driver Adapters: https://pris.ly/d/driver-adapters
221
+ `;
222
+ } else {
223
+ message = 'PrismaClient is unable to run in this browser environment, or has been bundled for the browser (running in `' + runtime.prettyName + '`).'
224
+ }
225
+
226
+ message += `
227
+ If this is unexpected, please open an issue: https://pris.ly/prisma-prisma-bug-report`
228
+
229
+ throw new Error(message)
230
+ }
231
+ })
232
+ }
233
+ }
234
+
235
+ exports.PrismaClient = PrismaClient
236
+
237
+ Object.assign(exports, Prisma)
@@ -0,0 +1,82 @@
1
+ generator client {
2
+ provider = "prisma-client-js"
3
+ output = "./generated/law"
4
+ }
5
+
6
+ datasource db {
7
+ provider = "postgresql"
8
+ url = env("POSTGRES_PRISMA_URL_LAW")
9
+ directUrl = env("POSTGRES_URL_NON_POOLING_LAW")
10
+ schemas = ["public"]
11
+ }
12
+
13
+ /// Existing public tables (read-only recommended). Validate nullability via introspection.
14
+ model LawVersion {
15
+ id String @id
16
+ lawId String? @map("lawid")
17
+ versionNumber String? @map("versionnumber")
18
+ lawUrl String? @map("lawurl")
19
+ isLawVersionEffective Boolean? @map("islawversioneffective")
20
+ isAmendment Boolean? @map("isamendment")
21
+ fullLawId String? @map("fulllawid")
22
+ approvalDate DateTime? @map("approvaldate")
23
+ publicationDate DateTime? @map("publicationdate")
24
+ effectiveFrom DateTime? @map("effectivefrom")
25
+ effectiveUntil DateTime? @map("effectiveuntil")
26
+ author String?
27
+ fullLawHtml String? @map("fulllawhtml")
28
+ fullLaw String? @map("fulllaw")
29
+ legalAreas Json? @map("legalareas")
30
+ publishedIn Json? @map("publishedin")
31
+ relationships Json? @map("relationships")
32
+
33
+ attachments LawAttachment[]
34
+ paragraphs VersionParagraph[]
35
+
36
+ @@map("law_versions")
37
+ @@schema("public")
38
+ }
39
+
40
+ model LawAttachment {
41
+ id Int @id
42
+ name String?
43
+ attachmentId String? @map("attachmentid")
44
+ content String?
45
+ lawVersionId String @map("lawversionid")
46
+
47
+ lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])
48
+
49
+ @@map("law_attachments")
50
+ @@schema("public")
51
+ }
52
+
53
+ model VersionParagraph {
54
+ id Int @id
55
+ paragraphId String? @map("paragraph_id")
56
+ versionId String @map("version_id")
57
+ sequenceNumber Int? @map("sequence_number")
58
+ text String?
59
+ fullText String? @map("full_text")
60
+ fullTextWithCitations String? @map("full_text_with_citations")
61
+ embedding Json?
62
+ partId String? @map("part_id")
63
+ partName String? @map("part_name")
64
+ chapterId String? @map("chapter_id")
65
+ chapterName String? @map("chapter_name")
66
+ divisionId String? @map("division_id")
67
+ divisionName String? @map("division_name")
68
+ sectionId String? @map("section_id")
69
+ sectionName String? @map("section_name")
70
+ paragraphPath String? @map("paragraph_path")
71
+ paragraphGroupName String? @map("paragraph_group_name")
72
+ isAmendment Boolean? @map("is_amendment")
73
+ validFrom DateTime? @map("valid_from")
74
+ validTo DateTime? @map("valid_to")
75
+
76
+ lawVersion LawVersion @relation(fields: [versionId], references: [id])
77
+
78
+ @@map("version_paragraphs")
79
+ @@schema("public")
80
+ }
81
+
82
+
@@ -0,0 +1,374 @@
1
+ -- CreateEnum
2
+ CREATE TYPE "public"."Role" AS ENUM ('USER', 'ASSISTANT', 'SYSTEM');
3
+
4
+ -- CreateEnum
5
+ CREATE TYPE "public"."FeedbackRating" AS ENUM ('LIKE', 'DISLIKE', 'NEUTRAL');
6
+
7
+ -- CreateEnum
8
+ CREATE TYPE "public"."ReferenceType" AS ENUM ('LAW', 'CASE', 'REGULATION', 'DOCUMENT', 'OTHER');
9
+
10
+ -- CreateEnum
11
+ CREATE TYPE "public"."ApprovalStatus" AS ENUM ('PENDING', 'APPROVED', 'REJECTED');
12
+
13
+ -- CreateTable
14
+ CREATE TABLE "public"."Account" (
15
+ "id" TEXT NOT NULL,
16
+ "userId" TEXT NOT NULL,
17
+ "type" TEXT NOT NULL,
18
+ "provider" TEXT NOT NULL,
19
+ "providerAccountId" TEXT NOT NULL,
20
+ "refresh_token" TEXT,
21
+ "access_token" TEXT,
22
+ "expires_at" INTEGER,
23
+ "token_type" TEXT,
24
+ "scope" TEXT,
25
+ "id_token" TEXT,
26
+ "session_state" TEXT,
27
+
28
+ CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
29
+ );
30
+
31
+ -- CreateTable
32
+ CREATE TABLE "public"."User" (
33
+ "id" TEXT NOT NULL,
34
+ "name" TEXT,
35
+ "email" TEXT,
36
+ "emailVerified" TIMESTAMP(3),
37
+ "image" TEXT,
38
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
39
+ "messageCount" INTEGER NOT NULL DEFAULT 100,
40
+ "agreedToTerms" BOOLEAN NOT NULL DEFAULT false,
41
+ "practiceArea" TEXT[],
42
+ "lawFirm" TEXT,
43
+ "yearsOfExperience" INTEGER,
44
+ "isApproved" BOOLEAN NOT NULL DEFAULT false,
45
+ "isRejected" BOOLEAN NOT NULL DEFAULT false,
46
+ "approvedAt" TIMESTAMP(3),
47
+ "rejectedAt" TIMESTAMP(3),
48
+ "approvedBy" TEXT,
49
+ "rejectedBy" TEXT,
50
+ "rejectionReason" TEXT,
51
+ "referralSource" TEXT,
52
+ "applicationText" TEXT,
53
+
54
+ CONSTRAINT "User_pkey" PRIMARY KEY ("id")
55
+ );
56
+
57
+ -- CreateTable
58
+ CREATE TABLE "public"."UserApprovalRequest" (
59
+ "id" TEXT NOT NULL,
60
+ "userId" TEXT NOT NULL,
61
+ "status" "public"."ApprovalStatus" NOT NULL DEFAULT 'PENDING',
62
+ "submittedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
63
+ "reviewedAt" TIMESTAMP(3),
64
+ "reviewedBy" TEXT,
65
+ "notes" TEXT,
66
+
67
+ CONSTRAINT "UserApprovalRequest_pkey" PRIMARY KEY ("id")
68
+ );
69
+
70
+ -- CreateTable
71
+ CREATE TABLE "public"."Conversation" (
72
+ "id" TEXT NOT NULL,
73
+ "name" TEXT NOT NULL,
74
+ "userId" TEXT NOT NULL,
75
+ "isShareable" BOOLEAN NOT NULL DEFAULT false,
76
+ "shareUrl" TEXT,
77
+ "sharedAt" TIMESTAMP(3),
78
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
79
+ "updatedAt" TIMESTAMP(3) NOT NULL,
80
+ "summary" TEXT,
81
+ "messagesSinceLastSummary" INTEGER DEFAULT 0,
82
+
83
+ CONSTRAINT "Conversation_pkey" PRIMARY KEY ("id")
84
+ );
85
+
86
+ -- CreateTable
87
+ CREATE TABLE "public"."Answer" (
88
+ "id" TEXT NOT NULL,
89
+ "conversationId" TEXT NOT NULL,
90
+ "messageId" TEXT NOT NULL,
91
+ "role" "public"."Role" NOT NULL,
92
+ "content" TEXT NOT NULL,
93
+ "question" TEXT,
94
+ "answer" TEXT,
95
+ "evaluation" TEXT,
96
+ "isWelcome" BOOLEAN NOT NULL DEFAULT false,
97
+ "processingTime" INTEGER,
98
+ "model" TEXT,
99
+ "userId" TEXT,
100
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
101
+ "updatedAt" TIMESTAMP(3) NOT NULL,
102
+
103
+ CONSTRAINT "Answer_pkey" PRIMARY KEY ("id")
104
+ );
105
+
106
+ -- CreateTable
107
+ CREATE TABLE "public"."AnswerMetrics" (
108
+ "id" TEXT NOT NULL,
109
+ "answerId" TEXT NOT NULL,
110
+ "apiCost" DOUBLE PRECISION,
111
+ "aiCost" DOUBLE PRECISION,
112
+ "ragCost" DOUBLE PRECISION,
113
+ "apiCalls" INTEGER,
114
+ "aiCalls" INTEGER,
115
+ "ragCalls" INTEGER,
116
+ "apiDuration" INTEGER,
117
+ "aiProvider" TEXT,
118
+ "aiModel" TEXT,
119
+ "aiProvidersUsed" TEXT[],
120
+ "aiModelsUsed" TEXT[],
121
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
122
+ "updatedAt" TIMESTAMP(3) NOT NULL,
123
+
124
+ CONSTRAINT "AnswerMetrics_pkey" PRIMARY KEY ("id")
125
+ );
126
+
127
+ -- CreateTable
128
+ CREATE TABLE "public"."Feedback" (
129
+ "id" TEXT NOT NULL,
130
+ "answerId" TEXT NOT NULL,
131
+ "rating" "public"."FeedbackRating" NOT NULL,
132
+ "feedbackTypes" TEXT[],
133
+ "customFeedback" TEXT,
134
+ "userId" TEXT NOT NULL,
135
+ "messageContent" TEXT,
136
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
137
+
138
+ CONSTRAINT "Feedback_pkey" PRIMARY KEY ("id")
139
+ );
140
+
141
+ -- CreateTable
142
+ CREATE TABLE "public"."Reference" (
143
+ "id" TEXT NOT NULL,
144
+ "answerId" TEXT NOT NULL,
145
+ "type" "public"."ReferenceType" NOT NULL,
146
+ "title" TEXT NOT NULL,
147
+ "reference" TEXT NOT NULL,
148
+ "summary" TEXT,
149
+ "url" TEXT,
150
+ "uuid" TEXT,
151
+ "relevance" DOUBLE PRECISION,
152
+ "citationNumber" INTEGER,
153
+ "metadata" JSONB,
154
+ "userId" TEXT,
155
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
156
+
157
+ CONSTRAINT "Reference_pkey" PRIMARY KEY ("id")
158
+ );
159
+
160
+ -- CreateTable
161
+ CREATE TABLE "public"."PageView" (
162
+ "id" TEXT NOT NULL,
163
+ "userId" TEXT,
164
+ "sessionId" TEXT NOT NULL,
165
+ "page" TEXT NOT NULL,
166
+ "path" TEXT NOT NULL,
167
+ "referrer" TEXT,
168
+ "userAgent" TEXT,
169
+ "ipAddress" TEXT,
170
+ "country" TEXT,
171
+ "city" TEXT,
172
+ "deviceType" TEXT,
173
+ "browser" TEXT,
174
+ "os" TEXT,
175
+ "screenSize" TEXT,
176
+ "language" TEXT,
177
+ "timeOnPage" INTEGER,
178
+ "isBounce" BOOLEAN NOT NULL DEFAULT true,
179
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
180
+
181
+ CONSTRAINT "PageView_pkey" PRIMARY KEY ("id")
182
+ );
183
+
184
+ -- CreateTable
185
+ CREATE TABLE "public"."Session" (
186
+ "id" TEXT NOT NULL,
187
+ "sessionId" TEXT NOT NULL,
188
+ "userId" TEXT,
189
+ "startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
190
+ "endedAt" TIMESTAMP(3),
191
+ "duration" INTEGER,
192
+
193
+ CONSTRAINT "Session_pkey" PRIMARY KEY ("id")
194
+ );
195
+
196
+ -- CreateTable
197
+ CREATE TABLE "public"."AdminActionLog" (
198
+ "id" TEXT NOT NULL,
199
+ "action" TEXT NOT NULL,
200
+ "targetUserId" TEXT NOT NULL,
201
+ "adminEmail" TEXT NOT NULL,
202
+ "details" JSONB,
203
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
204
+
205
+ CONSTRAINT "AdminActionLog_pkey" PRIMARY KEY ("id")
206
+ );
207
+
208
+ -- CreateIndex
209
+ CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "public"."Account"("provider", "providerAccountId");
210
+
211
+ -- CreateIndex
212
+ CREATE UNIQUE INDEX "User_email_key" ON "public"."User"("email");
213
+
214
+ -- CreateIndex
215
+ CREATE UNIQUE INDEX "UserApprovalRequest_userId_key" ON "public"."UserApprovalRequest"("userId");
216
+
217
+ -- CreateIndex
218
+ CREATE INDEX "UserApprovalRequest_status_idx" ON "public"."UserApprovalRequest"("status");
219
+
220
+ -- CreateIndex
221
+ CREATE INDEX "UserApprovalRequest_submittedAt_idx" ON "public"."UserApprovalRequest"("submittedAt");
222
+
223
+ -- CreateIndex
224
+ CREATE INDEX "UserApprovalRequest_reviewedAt_idx" ON "public"."UserApprovalRequest"("reviewedAt");
225
+
226
+ -- CreateIndex
227
+ CREATE UNIQUE INDEX "Conversation_shareUrl_key" ON "public"."Conversation"("shareUrl");
228
+
229
+ -- CreateIndex
230
+ CREATE INDEX "Conversation_userId_idx" ON "public"."Conversation"("userId");
231
+
232
+ -- CreateIndex
233
+ CREATE INDEX "Conversation_createdAt_idx" ON "public"."Conversation"("createdAt");
234
+
235
+ -- CreateIndex
236
+ CREATE UNIQUE INDEX "Answer_messageId_key" ON "public"."Answer"("messageId");
237
+
238
+ -- CreateIndex
239
+ CREATE INDEX "Answer_conversationId_idx" ON "public"."Answer"("conversationId");
240
+
241
+ -- CreateIndex
242
+ CREATE INDEX "Answer_messageId_idx" ON "public"."Answer"("messageId");
243
+
244
+ -- CreateIndex
245
+ CREATE INDEX "Answer_role_idx" ON "public"."Answer"("role");
246
+
247
+ -- CreateIndex
248
+ CREATE INDEX "Answer_userId_idx" ON "public"."Answer"("userId");
249
+
250
+ -- CreateIndex
251
+ CREATE INDEX "Answer_createdAt_idx" ON "public"."Answer"("createdAt");
252
+
253
+ -- CreateIndex
254
+ CREATE UNIQUE INDEX "AnswerMetrics_answerId_key" ON "public"."AnswerMetrics"("answerId");
255
+
256
+ -- CreateIndex
257
+ CREATE INDEX "AnswerMetrics_answerId_idx" ON "public"."AnswerMetrics"("answerId");
258
+
259
+ -- CreateIndex
260
+ CREATE INDEX "AnswerMetrics_apiCost_idx" ON "public"."AnswerMetrics"("apiCost");
261
+
262
+ -- CreateIndex
263
+ CREATE INDEX "AnswerMetrics_apiDuration_idx" ON "public"."AnswerMetrics"("apiDuration");
264
+
265
+ -- CreateIndex
266
+ CREATE INDEX "AnswerMetrics_aiProvider_idx" ON "public"."AnswerMetrics"("aiProvider");
267
+
268
+ -- CreateIndex
269
+ CREATE INDEX "AnswerMetrics_createdAt_idx" ON "public"."AnswerMetrics"("createdAt");
270
+
271
+ -- CreateIndex
272
+ CREATE UNIQUE INDEX "Feedback_answerId_key" ON "public"."Feedback"("answerId");
273
+
274
+ -- CreateIndex
275
+ CREATE INDEX "Feedback_rating_idx" ON "public"."Feedback"("rating");
276
+
277
+ -- CreateIndex
278
+ CREATE INDEX "Feedback_userId_idx" ON "public"."Feedback"("userId");
279
+
280
+ -- CreateIndex
281
+ CREATE INDEX "Feedback_answerId_idx" ON "public"."Feedback"("answerId");
282
+
283
+ -- CreateIndex
284
+ CREATE INDEX "Reference_answerId_idx" ON "public"."Reference"("answerId");
285
+
286
+ -- CreateIndex
287
+ CREATE INDEX "Reference_type_idx" ON "public"."Reference"("type");
288
+
289
+ -- CreateIndex
290
+ CREATE INDEX "Reference_reference_idx" ON "public"."Reference"("reference");
291
+
292
+ -- CreateIndex
293
+ CREATE INDEX "Reference_userId_idx" ON "public"."Reference"("userId");
294
+
295
+ -- CreateIndex
296
+ CREATE INDEX "Reference_createdAt_idx" ON "public"."Reference"("createdAt");
297
+
298
+ -- CreateIndex
299
+ CREATE INDEX "PageView_userId_idx" ON "public"."PageView"("userId");
300
+
301
+ -- CreateIndex
302
+ CREATE INDEX "PageView_sessionId_idx" ON "public"."PageView"("sessionId");
303
+
304
+ -- CreateIndex
305
+ CREATE INDEX "PageView_page_idx" ON "public"."PageView"("page");
306
+
307
+ -- CreateIndex
308
+ CREATE INDEX "PageView_createdAt_idx" ON "public"."PageView"("createdAt");
309
+
310
+ -- CreateIndex
311
+ CREATE INDEX "PageView_country_idx" ON "public"."PageView"("country");
312
+
313
+ -- CreateIndex
314
+ CREATE INDEX "PageView_deviceType_idx" ON "public"."PageView"("deviceType");
315
+
316
+ -- CreateIndex
317
+ CREATE UNIQUE INDEX "Session_sessionId_key" ON "public"."Session"("sessionId");
318
+
319
+ -- CreateIndex
320
+ CREATE INDEX "Session_sessionId_idx" ON "public"."Session"("sessionId");
321
+
322
+ -- CreateIndex
323
+ CREATE INDEX "Session_userId_idx" ON "public"."Session"("userId");
324
+
325
+ -- CreateIndex
326
+ CREATE INDEX "Session_startedAt_idx" ON "public"."Session"("startedAt");
327
+
328
+ -- CreateIndex
329
+ CREATE INDEX "AdminActionLog_action_idx" ON "public"."AdminActionLog"("action");
330
+
331
+ -- CreateIndex
332
+ CREATE INDEX "AdminActionLog_targetUserId_idx" ON "public"."AdminActionLog"("targetUserId");
333
+
334
+ -- CreateIndex
335
+ CREATE INDEX "AdminActionLog_adminEmail_idx" ON "public"."AdminActionLog"("adminEmail");
336
+
337
+ -- CreateIndex
338
+ CREATE INDEX "AdminActionLog_createdAt_idx" ON "public"."AdminActionLog"("createdAt");
339
+
340
+ -- AddForeignKey
341
+ ALTER TABLE "public"."Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
342
+
343
+ -- AddForeignKey
344
+ ALTER TABLE "public"."UserApprovalRequest" ADD CONSTRAINT "UserApprovalRequest_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
345
+
346
+ -- AddForeignKey
347
+ ALTER TABLE "public"."Conversation" ADD CONSTRAINT "Conversation_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
348
+
349
+ -- AddForeignKey
350
+ ALTER TABLE "public"."Answer" ADD CONSTRAINT "Answer_conversationId_fkey" FOREIGN KEY ("conversationId") REFERENCES "public"."Conversation"("id") ON DELETE CASCADE ON UPDATE CASCADE;
351
+
352
+ -- AddForeignKey
353
+ ALTER TABLE "public"."Answer" ADD CONSTRAINT "Answer_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
354
+
355
+ -- AddForeignKey
356
+ ALTER TABLE "public"."AnswerMetrics" ADD CONSTRAINT "AnswerMetrics_answerId_fkey" FOREIGN KEY ("answerId") REFERENCES "public"."Answer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
357
+
358
+ -- AddForeignKey
359
+ ALTER TABLE "public"."Feedback" ADD CONSTRAINT "Feedback_answerId_fkey" FOREIGN KEY ("answerId") REFERENCES "public"."Answer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
360
+
361
+ -- AddForeignKey
362
+ ALTER TABLE "public"."Feedback" ADD CONSTRAINT "Feedback_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
363
+
364
+ -- AddForeignKey
365
+ ALTER TABLE "public"."Reference" ADD CONSTRAINT "Reference_answerId_fkey" FOREIGN KEY ("answerId") REFERENCES "public"."Answer"("id") ON DELETE CASCADE ON UPDATE CASCADE;
366
+
367
+ -- AddForeignKey
368
+ ALTER TABLE "public"."PageView" ADD CONSTRAINT "PageView_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "public"."Session"("sessionId") ON DELETE SET NULL ON UPDATE CASCADE;
369
+
370
+ -- AddForeignKey
371
+ ALTER TABLE "public"."PageView" ADD CONSTRAINT "PageView_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
372
+
373
+ -- AddForeignKey
374
+ ALTER TABLE "public"."Session" ADD CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
@@ -0,0 +1,3 @@
1
+ # Please do not edit this file manually
2
+ # It should be added in your version-control system (e.g., Git)
3
+ provider = "postgresql"