@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.
- package/README.md +34 -19
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +4 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +7 -4
- package/dist/utils.js.map +1 -1
- package/package.json +8 -7
- package/prisma/{schema.prisma → app.prisma} +5 -0
- package/prisma/generated/app/client.d.ts +1 -0
- package/prisma/generated/app/client.js +4 -0
- package/prisma/generated/app/default.d.ts +1 -0
- package/prisma/generated/app/default.js +4 -0
- package/prisma/generated/app/edge.d.ts +1 -0
- package/prisma/generated/app/edge.js +393 -0
- package/prisma/generated/app/index-browser.js +379 -0
- package/prisma/generated/app/index.d.ts +22559 -0
- package/prisma/generated/app/index.js +414 -0
- package/prisma/generated/app/libquery_engine-darwin-arm64.dylib.node +0 -0
- package/prisma/generated/app/package.json +150 -0
- package/prisma/generated/app/runtime/edge-esm.js +34 -0
- package/prisma/generated/app/runtime/edge.js +34 -0
- package/prisma/generated/app/runtime/index-browser.d.ts +370 -0
- package/prisma/generated/app/runtime/index-browser.js +16 -0
- package/prisma/generated/app/runtime/library.d.ts +4002 -0
- package/prisma/generated/app/runtime/library.js +146 -0
- package/prisma/generated/app/runtime/react-native.js +83 -0
- package/prisma/generated/app/runtime/wasm-compiler-edge.js +83 -0
- package/prisma/generated/app/runtime/wasm-engine-edge.js +35 -0
- package/prisma/generated/app/schema.prisma +286 -0
- package/prisma/generated/app/wasm.d.ts +1 -0
- package/prisma/generated/app/wasm.js +379 -0
- package/prisma/generated/law/client.d.ts +1 -0
- package/prisma/generated/law/client.js +4 -0
- package/prisma/generated/law/default.d.ts +1 -0
- package/prisma/generated/law/default.js +4 -0
- package/prisma/generated/law/edge.d.ts +1 -0
- package/prisma/generated/law/edge.js +251 -0
- package/prisma/generated/law/index-browser.js +237 -0
- package/prisma/generated/law/index.d.ts +6827 -0
- package/prisma/generated/law/index.js +272 -0
- package/prisma/generated/law/libquery_engine-darwin-arm64.dylib.node +0 -0
- package/prisma/generated/law/package.json +150 -0
- package/prisma/generated/law/runtime/edge-esm.js +34 -0
- package/prisma/generated/law/runtime/edge.js +34 -0
- package/prisma/generated/law/runtime/index-browser.d.ts +370 -0
- package/prisma/generated/law/runtime/index-browser.js +16 -0
- package/prisma/generated/law/runtime/library.d.ts +4002 -0
- package/prisma/generated/law/runtime/library.js +146 -0
- package/prisma/generated/law/runtime/react-native.js +83 -0
- package/prisma/generated/law/runtime/wasm-compiler-edge.js +83 -0
- package/prisma/generated/law/runtime/wasm-engine-edge.js +35 -0
- package/prisma/generated/law/schema.prisma +80 -0
- package/prisma/generated/law/wasm.d.ts +1 -0
- package/prisma/generated/law/wasm.js +237 -0
- package/prisma/law.prisma +82 -0
- package/prisma/migrations/20250818134929_init/migration.sql +374 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- 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;
|