@danielcok17/prisma-db 1.1.0 → 1.2.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danielcok17/prisma-db",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Shared Prisma schema for Legal AI applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/prisma/app.prisma CHANGED
@@ -1,6 +1,7 @@
1
1
  generator client {
2
- provider = "prisma-client-js"
3
- output = "./generated/app"
2
+ provider = "prisma-client-js"
3
+ output = "./generated/app"
4
+ binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
4
5
  }
5
6
 
6
7
  datasource db {
@@ -124,6 +125,7 @@ model Answer {
124
125
  references Reference[]
125
126
  metrics AnswerMetrics?
126
127
  WorkflowLog WorkflowLog[]
128
+ files MessageFile[]
127
129
 
128
130
  @@index([conversationId])
129
131
  @@index([messageId])
@@ -132,6 +134,20 @@ model Answer {
132
134
  @@index([createdAt])
133
135
  }
134
136
 
137
+ model MessageFile {
138
+ id String @id @default(cuid())
139
+ answerId String
140
+ fileName String
141
+ fileType String
142
+ base64Data String
143
+ uploadedAt DateTime @default(now())
144
+ answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)
145
+
146
+ @@index([answerId])
147
+ @@index([fileType])
148
+ @@index([uploadedAt])
149
+ }
150
+
135
151
  // Nová tabuľka pre metriky odpovedí
136
152
  model AnswerMetrics {
137
153
  id String @id @default(cuid())
@@ -413,6 +413,10 @@ const config = {
413
413
  "fromEnvVar": null,
414
414
  "value": "darwin-arm64",
415
415
  "native": true
416
+ },
417
+ {
418
+ "fromEnvVar": null,
419
+ "value": "linux-musl-openssl-3.0.x"
416
420
  }
417
421
  ],
418
422
  "previewFeatures": [],
@@ -439,8 +443,8 @@ const config = {
439
443
  }
440
444
  }
441
445
  },
442
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/app\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified DateTime?\n image String?\n // Credentials authentication fields\n password String? // Hashed password pre credentials login\n createdAt DateTime @default(now())\n messageCount Int @default(100)\n agreedToTerms Boolean @default(false)\n practiceArea String[]\n lawFirm String?\n yearsOfExperience Int?\n // Nové polia pre schvalovanie používateľov\n isApproved Boolean @default(false) // Či je používateľ schválený\n isRejected Boolean @default(false) // Či je používateľ zamietnutý\n approvedAt DateTime? // Kedy bol schválený\n rejectedAt DateTime? // Kedy bol zamietnutý\n approvedBy String? // ID admina, ktorý schválil\n rejectedBy String? // ID admina, ktorý zamietol\n rejectionReason String? // Dôvod zamietnutia\n // Nové polia pre tracking a žiadosť\n referralSource String? // Odkiaľ sa o nás dozvedel (Google, Facebook, LinkedIn, etc.)\n applicationText String? // Text žiadosti o prihlásenie\n approvalRequest UserApprovalRequest?\n accounts Account[]\n answers Answer[]\n conversations Conversation[]\n feedbacks Feedback[]\n pageViews PageView[]\n sessions Session[]\n workflowLogs WorkflowLog[]\n verificationTokens VerificationToken[]\n passwordResetTokens PasswordResetToken[]\n}\n\n// Nový model pre žiadosti o schválenie\nmodel UserApprovalRequest {\n id String @id @default(cuid())\n userId String @unique\n status ApprovalStatus @default(PENDING)\n submittedAt DateTime @default(now())\n reviewedAt DateTime?\n reviewedBy String? // ID admina, ktorý preskúmal žiadosť\n notes String? // Poznámky admina\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([status])\n @@index([submittedAt])\n @@index([reviewedAt])\n}\n\n// ZJEDNODUŠENÝ Conversation - len metadata, bez duplikátov\nmodel Conversation {\n id String @id @default(cuid())\n name String\n userId String\n isShareable Boolean @default(false)\n shareUrl String? @unique\n sharedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n summary String?\n messagesSinceLastSummary Int? @default(0)\n // Relácie\n answers Answer[]\n user User @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([createdAt])\n}\n\n// Hlavný model - všetky správy, bez duplikátov\nmodel Answer {\n id String @id @default(cuid())\n conversationId String\n messageId String @unique\n role Role\n content String\n question String?\n answer String?\n evaluation String?\n isWelcome Boolean @default(false)\n processingTime Int?\n model String?\n userId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relácie\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id])\n feedback Feedback?\n references Reference[]\n metrics AnswerMetrics?\n WorkflowLog WorkflowLog[]\n\n @@index([conversationId])\n @@index([messageId])\n @@index([role])\n @@index([userId])\n @@index([createdAt])\n}\n\n// Nová tabuľka pre metriky odpovedí\nmodel AnswerMetrics {\n id String @id @default(cuid())\n answerId String @unique\n // Náklady\n apiCost Float? // Celkové náklady (ai_cost + rag_cost)\n aiCost Float? // Náklady len na AI provider volania\n ragCost Float? // Náklady na RAG operácie\n // Volania\n apiCalls Int? // Celkový počet volaní\n aiCalls Int? // Počet AI provider volaní\n ragCalls Int? // Počet RAG operácií\n // Čas a výkon\n apiDuration Int? // Doba spracovania v ms\n // AI Provider a Model\n aiProvider String? // Hlavný AI provider\n aiModel String? // Hlavný AI model\n aiProvidersUsed String[] // Všetky použité AI providery\n aiModelsUsed String[] // Všetky použité AI modely\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relations\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([apiCost])\n @@index([apiDuration])\n @@index([aiProvider])\n @@index([createdAt])\n}\n\nmodel Feedback {\n id String @id @default(cuid())\n answerId String @unique\n rating FeedbackRating\n feedbackTypes String[]\n customFeedback String?\n userId String\n messageContent String?\n createdAt DateTime @default(now())\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id])\n\n @@index([rating])\n @@index([userId])\n @@index([answerId])\n}\n\n// ZJEDNODUŠENÝ Reference - len na Answer, bez duplikátov\nmodel Reference {\n id String @id @default(cuid())\n answerId String // Len answerId - konzistentné\n type ReferenceType\n title String\n reference String\n summary String?\n url String?\n uuid String?\n relevance Float?\n citationNumber Int?\n metadata Json?\n userId String?\n createdAt DateTime @default(now())\n // Relácie\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([type])\n @@index([reference])\n @@index([userId])\n @@index([createdAt])\n}\n\nmodel PageView {\n id String @id @default(cuid())\n userId String?\n sessionId String?\n page String\n path String\n referrer String?\n userAgent String?\n ipAddress String?\n country String?\n city String?\n deviceType String?\n browser String?\n os String?\n screenSize String?\n language String?\n timeOnPage Int?\n isBounce Boolean @default(true)\n createdAt DateTime @default(now())\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n user User? @relation(fields: [userId], references: [id])\n\n @@index([userId])\n @@index([sessionId])\n @@index([page])\n @@index([createdAt])\n @@index([country])\n @@index([deviceType])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionId String @unique\n userId String?\n startedAt DateTime @default(now())\n endedAt DateTime?\n duration Int?\n pageViews PageView[]\n user User? @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([startedAt])\n}\n\nenum Role {\n USER\n ASSISTANT\n SYSTEM\n}\n\nenum FeedbackRating {\n LIKE\n DISLIKE\n NEUTRAL\n}\n\nenum ReferenceType {\n LAW\n CASE\n REGULATION\n DOCUMENT\n OTHER\n}\n\nenum ApprovalStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\n// Nový model pre logovanie admin akcií\nmodel AdminActionLog {\n id String @id @default(cuid())\n action String // APPROVE_USER, REJECT_USER, etc.\n targetUserId String // ID používateľa, na ktorého sa akcia vzťahuje\n adminEmail String // E-mail admina, ktorý vykonal akciu\n details Json? // Ďalšie detaily akcie (reason, notes, etc.)\n createdAt DateTime @default(now())\n\n @@index([action])\n @@index([targetUserId])\n @@index([adminEmail])\n @@index([createdAt])\n}\n\nmodel WorkflowLog {\n id String @id @default(cuid()) // Added @default(cuid())\n conversationId String\n messageId String?\n userId String? // Made optional to preserve logs when users are deleted\n sessionId String? // Removed @unique to allow multiple workflows per session\n startedAt DateTime @default(now())\n completedAt DateTime?\n status WorkflowStatus @default(IN_PROGRESS)\n totalDuration Int? // milliseconds\n error String?\n metadata Json?\n steps WorkflowStep[] // Renamed from WorkflowStep to steps (lowerCamel, plural)\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n answer Answer? @relation(fields: [messageId], references: [messageId])\n\n @@index([conversationId])\n @@index([userId])\n @@index([sessionId])\n @@index([startedAt])\n @@index([status])\n @@index([conversationId, startedAt]) // Composite index for timeline queries\n @@index([messageId])\n}\n\nmodel WorkflowStep {\n id String @id @default(cuid()) // Added @default(cuid())\n workflowId String\n stepName String // 'classify_question', 'rag_search', 'ai_processing', 'generate_response'\n stepType StepType\n startedAt DateTime @default(now())\n completedAt DateTime?\n duration Int? // milliseconds\n status StepStatus @default(IN_PROGRESS)\n inputData Json? // Sanitized input data\n outputData Json? // Sanitized output data\n error String?\n metadata Json? // Provider used, model used, tokens, costs, etc.\n workflow WorkflowLog @relation(fields: [workflowId], references: [id], onDelete: Cascade)\n\n @@index([workflowId])\n @@index([stepName])\n @@index([stepType])\n @@index([startedAt])\n @@index([status])\n @@index([workflowId, startedAt]) // Composite index for timeline queries\n}\n\nenum WorkflowStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n CANCELLED\n}\n\nenum StepStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n SKIPPED\n}\n\nenum StepType {\n CLASSIFICATION\n RAG_RETRIEVAL\n AI_PROCESSING\n RESPONSE_GENERATION\n DATA_PERSISTENCE\n ERROR_HANDLING\n}\n\n// Email verification tokens\nmodel VerificationToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n\n// Password reset tokens\nmodel PasswordResetToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n",
443
- "inlineSchemaHash": "c34be83eddb4d66899232875de30e618fee7bd300c34520da9f81057adf78217",
446
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/app\"\n binaryTargets = [\"native\", \"linux-musl-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified DateTime?\n image String?\n // Credentials authentication fields\n password String? // Hashed password pre credentials login\n createdAt DateTime @default(now())\n messageCount Int @default(100)\n agreedToTerms Boolean @default(false)\n practiceArea String[]\n lawFirm String?\n yearsOfExperience Int?\n // Nové polia pre schvalovanie používateľov\n isApproved Boolean @default(false) // Či je používateľ schválený\n isRejected Boolean @default(false) // Či je používateľ zamietnutý\n approvedAt DateTime? // Kedy bol schválený\n rejectedAt DateTime? // Kedy bol zamietnutý\n approvedBy String? // ID admina, ktorý schválil\n rejectedBy String? // ID admina, ktorý zamietol\n rejectionReason String? // Dôvod zamietnutia\n // Nové polia pre tracking a žiadosť\n referralSource String? // Odkiaľ sa o nás dozvedel (Google, Facebook, LinkedIn, etc.)\n applicationText String? // Text žiadosti o prihlásenie\n approvalRequest UserApprovalRequest?\n accounts Account[]\n answers Answer[]\n conversations Conversation[]\n feedbacks Feedback[]\n pageViews PageView[]\n sessions Session[]\n workflowLogs WorkflowLog[]\n verificationTokens VerificationToken[]\n passwordResetTokens PasswordResetToken[]\n}\n\n// Nový model pre žiadosti o schválenie\nmodel UserApprovalRequest {\n id String @id @default(cuid())\n userId String @unique\n status ApprovalStatus @default(PENDING)\n submittedAt DateTime @default(now())\n reviewedAt DateTime?\n reviewedBy String? // ID admina, ktorý preskúmal žiadosť\n notes String? // Poznámky admina\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([status])\n @@index([submittedAt])\n @@index([reviewedAt])\n}\n\n// ZJEDNODUŠENÝ Conversation - len metadata, bez duplikátov\nmodel Conversation {\n id String @id @default(cuid())\n name String\n userId String\n isShareable Boolean @default(false)\n shareUrl String? @unique\n sharedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n summary String?\n messagesSinceLastSummary Int? @default(0)\n // Relácie\n answers Answer[]\n user User @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([createdAt])\n}\n\n// Hlavný model - všetky správy, bez duplikátov\nmodel Answer {\n id String @id @default(cuid())\n conversationId String\n messageId String @unique\n role Role\n content String\n question String?\n answer String?\n evaluation String?\n isWelcome Boolean @default(false)\n processingTime Int?\n model String?\n userId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relácie\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id])\n feedback Feedback?\n references Reference[]\n metrics AnswerMetrics?\n WorkflowLog WorkflowLog[]\n\n @@index([conversationId])\n @@index([messageId])\n @@index([role])\n @@index([userId])\n @@index([createdAt])\n}\n\n// Nová tabuľka pre metriky odpovedí\nmodel AnswerMetrics {\n id String @id @default(cuid())\n answerId String @unique\n // Náklady\n apiCost Float? // Celkové náklady (ai_cost + rag_cost)\n aiCost Float? // Náklady len na AI provider volania\n ragCost Float? // Náklady na RAG operácie\n // Volania\n apiCalls Int? // Celkový počet volaní\n aiCalls Int? // Počet AI provider volaní\n ragCalls Int? // Počet RAG operácií\n // Čas a výkon\n apiDuration Int? // Doba spracovania v ms\n // AI Provider a Model\n aiProvider String? // Hlavný AI provider\n aiModel String? // Hlavný AI model\n aiProvidersUsed String[] // Všetky použité AI providery\n aiModelsUsed String[] // Všetky použité AI modely\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relations\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([apiCost])\n @@index([apiDuration])\n @@index([aiProvider])\n @@index([createdAt])\n}\n\nmodel Feedback {\n id String @id @default(cuid())\n answerId String @unique\n rating FeedbackRating\n feedbackTypes String[]\n customFeedback String?\n userId String\n messageContent String?\n createdAt DateTime @default(now())\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id])\n\n @@index([rating])\n @@index([userId])\n @@index([answerId])\n}\n\n// ZJEDNODUŠENÝ Reference - len na Answer, bez duplikátov\nmodel Reference {\n id String @id @default(cuid())\n answerId String // Len answerId - konzistentné\n type ReferenceType\n title String\n reference String\n summary String?\n url String?\n uuid String?\n relevance Float?\n citationNumber Int?\n metadata Json?\n userId String?\n createdAt DateTime @default(now())\n // Relácie\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([type])\n @@index([reference])\n @@index([userId])\n @@index([createdAt])\n}\n\nmodel PageView {\n id String @id @default(cuid())\n userId String?\n sessionId String?\n page String\n path String\n referrer String?\n userAgent String?\n ipAddress String?\n country String?\n city String?\n deviceType String?\n browser String?\n os String?\n screenSize String?\n language String?\n timeOnPage Int?\n isBounce Boolean @default(true)\n createdAt DateTime @default(now())\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n user User? @relation(fields: [userId], references: [id])\n\n @@index([userId])\n @@index([sessionId])\n @@index([page])\n @@index([createdAt])\n @@index([country])\n @@index([deviceType])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionId String @unique\n userId String?\n startedAt DateTime @default(now())\n endedAt DateTime?\n duration Int?\n pageViews PageView[]\n user User? @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([startedAt])\n}\n\nenum Role {\n USER\n ASSISTANT\n SYSTEM\n}\n\nenum FeedbackRating {\n LIKE\n DISLIKE\n NEUTRAL\n}\n\nenum ReferenceType {\n LAW\n CASE\n REGULATION\n DOCUMENT\n OTHER\n}\n\nenum ApprovalStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\n// Nový model pre logovanie admin akcií\nmodel AdminActionLog {\n id String @id @default(cuid())\n action String // APPROVE_USER, REJECT_USER, etc.\n targetUserId String // ID používateľa, na ktorého sa akcia vzťahuje\n adminEmail String // E-mail admina, ktorý vykonal akciu\n details Json? // Ďalšie detaily akcie (reason, notes, etc.)\n createdAt DateTime @default(now())\n\n @@index([action])\n @@index([targetUserId])\n @@index([adminEmail])\n @@index([createdAt])\n}\n\nmodel WorkflowLog {\n id String @id @default(cuid()) // Added @default(cuid())\n conversationId String\n messageId String?\n userId String? // Made optional to preserve logs when users are deleted\n sessionId String? // Removed @unique to allow multiple workflows per session\n startedAt DateTime @default(now())\n completedAt DateTime?\n status WorkflowStatus @default(IN_PROGRESS)\n totalDuration Int? // milliseconds\n error String?\n metadata Json?\n steps WorkflowStep[] // Renamed from WorkflowStep to steps (lowerCamel, plural)\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n answer Answer? @relation(fields: [messageId], references: [messageId])\n\n @@index([conversationId])\n @@index([userId])\n @@index([sessionId])\n @@index([startedAt])\n @@index([status])\n @@index([conversationId, startedAt]) // Composite index for timeline queries\n @@index([messageId])\n}\n\nmodel WorkflowStep {\n id String @id @default(cuid()) // Added @default(cuid())\n workflowId String\n stepName String // 'classify_question', 'rag_search', 'ai_processing', 'generate_response'\n stepType StepType\n startedAt DateTime @default(now())\n completedAt DateTime?\n duration Int? // milliseconds\n status StepStatus @default(IN_PROGRESS)\n inputData Json? // Sanitized input data\n outputData Json? // Sanitized output data\n error String?\n metadata Json? // Provider used, model used, tokens, costs, etc.\n workflow WorkflowLog @relation(fields: [workflowId], references: [id], onDelete: Cascade)\n\n @@index([workflowId])\n @@index([stepName])\n @@index([stepType])\n @@index([startedAt])\n @@index([status])\n @@index([workflowId, startedAt]) // Composite index for timeline queries\n}\n\nenum WorkflowStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n CANCELLED\n}\n\nenum StepStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n SKIPPED\n}\n\nenum StepType {\n CLASSIFICATION\n RAG_RETRIEVAL\n AI_PROCESSING\n RESPONSE_GENERATION\n DATA_PERSISTENCE\n ERROR_HANDLING\n}\n\n// Email verification tokens\nmodel VerificationToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n\n// Password reset tokens\nmodel PasswordResetToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n",
447
+ "inlineSchemaHash": "adcf2f246fbd2a0eabab2f350a431b430a9ef8cb4d9dec85b0bb2fca54874cb8",
444
448
  "copyEngine": true
445
449
  }
446
450
  config.dirname = '/'
@@ -414,6 +414,10 @@ const config = {
414
414
  "fromEnvVar": null,
415
415
  "value": "darwin-arm64",
416
416
  "native": true
417
+ },
418
+ {
419
+ "fromEnvVar": null,
420
+ "value": "linux-musl-openssl-3.0.x"
417
421
  }
418
422
  ],
419
423
  "previewFeatures": [],
@@ -440,8 +444,8 @@ const config = {
440
444
  }
441
445
  }
442
446
  },
443
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/app\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified DateTime?\n image String?\n // Credentials authentication fields\n password String? // Hashed password pre credentials login\n createdAt DateTime @default(now())\n messageCount Int @default(100)\n agreedToTerms Boolean @default(false)\n practiceArea String[]\n lawFirm String?\n yearsOfExperience Int?\n // Nové polia pre schvalovanie používateľov\n isApproved Boolean @default(false) // Či je používateľ schválený\n isRejected Boolean @default(false) // Či je používateľ zamietnutý\n approvedAt DateTime? // Kedy bol schválený\n rejectedAt DateTime? // Kedy bol zamietnutý\n approvedBy String? // ID admina, ktorý schválil\n rejectedBy String? // ID admina, ktorý zamietol\n rejectionReason String? // Dôvod zamietnutia\n // Nové polia pre tracking a žiadosť\n referralSource String? // Odkiaľ sa o nás dozvedel (Google, Facebook, LinkedIn, etc.)\n applicationText String? // Text žiadosti o prihlásenie\n approvalRequest UserApprovalRequest?\n accounts Account[]\n answers Answer[]\n conversations Conversation[]\n feedbacks Feedback[]\n pageViews PageView[]\n sessions Session[]\n workflowLogs WorkflowLog[]\n verificationTokens VerificationToken[]\n passwordResetTokens PasswordResetToken[]\n}\n\n// Nový model pre žiadosti o schválenie\nmodel UserApprovalRequest {\n id String @id @default(cuid())\n userId String @unique\n status ApprovalStatus @default(PENDING)\n submittedAt DateTime @default(now())\n reviewedAt DateTime?\n reviewedBy String? // ID admina, ktorý preskúmal žiadosť\n notes String? // Poznámky admina\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([status])\n @@index([submittedAt])\n @@index([reviewedAt])\n}\n\n// ZJEDNODUŠENÝ Conversation - len metadata, bez duplikátov\nmodel Conversation {\n id String @id @default(cuid())\n name String\n userId String\n isShareable Boolean @default(false)\n shareUrl String? @unique\n sharedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n summary String?\n messagesSinceLastSummary Int? @default(0)\n // Relácie\n answers Answer[]\n user User @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([createdAt])\n}\n\n// Hlavný model - všetky správy, bez duplikátov\nmodel Answer {\n id String @id @default(cuid())\n conversationId String\n messageId String @unique\n role Role\n content String\n question String?\n answer String?\n evaluation String?\n isWelcome Boolean @default(false)\n processingTime Int?\n model String?\n userId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relácie\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id])\n feedback Feedback?\n references Reference[]\n metrics AnswerMetrics?\n WorkflowLog WorkflowLog[]\n\n @@index([conversationId])\n @@index([messageId])\n @@index([role])\n @@index([userId])\n @@index([createdAt])\n}\n\n// Nová tabuľka pre metriky odpovedí\nmodel AnswerMetrics {\n id String @id @default(cuid())\n answerId String @unique\n // Náklady\n apiCost Float? // Celkové náklady (ai_cost + rag_cost)\n aiCost Float? // Náklady len na AI provider volania\n ragCost Float? // Náklady na RAG operácie\n // Volania\n apiCalls Int? // Celkový počet volaní\n aiCalls Int? // Počet AI provider volaní\n ragCalls Int? // Počet RAG operácií\n // Čas a výkon\n apiDuration Int? // Doba spracovania v ms\n // AI Provider a Model\n aiProvider String? // Hlavný AI provider\n aiModel String? // Hlavný AI model\n aiProvidersUsed String[] // Všetky použité AI providery\n aiModelsUsed String[] // Všetky použité AI modely\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relations\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([apiCost])\n @@index([apiDuration])\n @@index([aiProvider])\n @@index([createdAt])\n}\n\nmodel Feedback {\n id String @id @default(cuid())\n answerId String @unique\n rating FeedbackRating\n feedbackTypes String[]\n customFeedback String?\n userId String\n messageContent String?\n createdAt DateTime @default(now())\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id])\n\n @@index([rating])\n @@index([userId])\n @@index([answerId])\n}\n\n// ZJEDNODUŠENÝ Reference - len na Answer, bez duplikátov\nmodel Reference {\n id String @id @default(cuid())\n answerId String // Len answerId - konzistentné\n type ReferenceType\n title String\n reference String\n summary String?\n url String?\n uuid String?\n relevance Float?\n citationNumber Int?\n metadata Json?\n userId String?\n createdAt DateTime @default(now())\n // Relácie\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([type])\n @@index([reference])\n @@index([userId])\n @@index([createdAt])\n}\n\nmodel PageView {\n id String @id @default(cuid())\n userId String?\n sessionId String?\n page String\n path String\n referrer String?\n userAgent String?\n ipAddress String?\n country String?\n city String?\n deviceType String?\n browser String?\n os String?\n screenSize String?\n language String?\n timeOnPage Int?\n isBounce Boolean @default(true)\n createdAt DateTime @default(now())\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n user User? @relation(fields: [userId], references: [id])\n\n @@index([userId])\n @@index([sessionId])\n @@index([page])\n @@index([createdAt])\n @@index([country])\n @@index([deviceType])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionId String @unique\n userId String?\n startedAt DateTime @default(now())\n endedAt DateTime?\n duration Int?\n pageViews PageView[]\n user User? @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([startedAt])\n}\n\nenum Role {\n USER\n ASSISTANT\n SYSTEM\n}\n\nenum FeedbackRating {\n LIKE\n DISLIKE\n NEUTRAL\n}\n\nenum ReferenceType {\n LAW\n CASE\n REGULATION\n DOCUMENT\n OTHER\n}\n\nenum ApprovalStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\n// Nový model pre logovanie admin akcií\nmodel AdminActionLog {\n id String @id @default(cuid())\n action String // APPROVE_USER, REJECT_USER, etc.\n targetUserId String // ID používateľa, na ktorého sa akcia vzťahuje\n adminEmail String // E-mail admina, ktorý vykonal akciu\n details Json? // Ďalšie detaily akcie (reason, notes, etc.)\n createdAt DateTime @default(now())\n\n @@index([action])\n @@index([targetUserId])\n @@index([adminEmail])\n @@index([createdAt])\n}\n\nmodel WorkflowLog {\n id String @id @default(cuid()) // Added @default(cuid())\n conversationId String\n messageId String?\n userId String? // Made optional to preserve logs when users are deleted\n sessionId String? // Removed @unique to allow multiple workflows per session\n startedAt DateTime @default(now())\n completedAt DateTime?\n status WorkflowStatus @default(IN_PROGRESS)\n totalDuration Int? // milliseconds\n error String?\n metadata Json?\n steps WorkflowStep[] // Renamed from WorkflowStep to steps (lowerCamel, plural)\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n answer Answer? @relation(fields: [messageId], references: [messageId])\n\n @@index([conversationId])\n @@index([userId])\n @@index([sessionId])\n @@index([startedAt])\n @@index([status])\n @@index([conversationId, startedAt]) // Composite index for timeline queries\n @@index([messageId])\n}\n\nmodel WorkflowStep {\n id String @id @default(cuid()) // Added @default(cuid())\n workflowId String\n stepName String // 'classify_question', 'rag_search', 'ai_processing', 'generate_response'\n stepType StepType\n startedAt DateTime @default(now())\n completedAt DateTime?\n duration Int? // milliseconds\n status StepStatus @default(IN_PROGRESS)\n inputData Json? // Sanitized input data\n outputData Json? // Sanitized output data\n error String?\n metadata Json? // Provider used, model used, tokens, costs, etc.\n workflow WorkflowLog @relation(fields: [workflowId], references: [id], onDelete: Cascade)\n\n @@index([workflowId])\n @@index([stepName])\n @@index([stepType])\n @@index([startedAt])\n @@index([status])\n @@index([workflowId, startedAt]) // Composite index for timeline queries\n}\n\nenum WorkflowStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n CANCELLED\n}\n\nenum StepStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n SKIPPED\n}\n\nenum StepType {\n CLASSIFICATION\n RAG_RETRIEVAL\n AI_PROCESSING\n RESPONSE_GENERATION\n DATA_PERSISTENCE\n ERROR_HANDLING\n}\n\n// Email verification tokens\nmodel VerificationToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n\n// Password reset tokens\nmodel PasswordResetToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n",
444
- "inlineSchemaHash": "c34be83eddb4d66899232875de30e618fee7bd300c34520da9f81057adf78217",
447
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/app\"\n binaryTargets = [\"native\", \"linux-musl-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified DateTime?\n image String?\n // Credentials authentication fields\n password String? // Hashed password pre credentials login\n createdAt DateTime @default(now())\n messageCount Int @default(100)\n agreedToTerms Boolean @default(false)\n practiceArea String[]\n lawFirm String?\n yearsOfExperience Int?\n // Nové polia pre schvalovanie používateľov\n isApproved Boolean @default(false) // Či je používateľ schválený\n isRejected Boolean @default(false) // Či je používateľ zamietnutý\n approvedAt DateTime? // Kedy bol schválený\n rejectedAt DateTime? // Kedy bol zamietnutý\n approvedBy String? // ID admina, ktorý schválil\n rejectedBy String? // ID admina, ktorý zamietol\n rejectionReason String? // Dôvod zamietnutia\n // Nové polia pre tracking a žiadosť\n referralSource String? // Odkiaľ sa o nás dozvedel (Google, Facebook, LinkedIn, etc.)\n applicationText String? // Text žiadosti o prihlásenie\n approvalRequest UserApprovalRequest?\n accounts Account[]\n answers Answer[]\n conversations Conversation[]\n feedbacks Feedback[]\n pageViews PageView[]\n sessions Session[]\n workflowLogs WorkflowLog[]\n verificationTokens VerificationToken[]\n passwordResetTokens PasswordResetToken[]\n}\n\n// Nový model pre žiadosti o schválenie\nmodel UserApprovalRequest {\n id String @id @default(cuid())\n userId String @unique\n status ApprovalStatus @default(PENDING)\n submittedAt DateTime @default(now())\n reviewedAt DateTime?\n reviewedBy String? // ID admina, ktorý preskúmal žiadosť\n notes String? // Poznámky admina\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([status])\n @@index([submittedAt])\n @@index([reviewedAt])\n}\n\n// ZJEDNODUŠENÝ Conversation - len metadata, bez duplikátov\nmodel Conversation {\n id String @id @default(cuid())\n name String\n userId String\n isShareable Boolean @default(false)\n shareUrl String? @unique\n sharedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n summary String?\n messagesSinceLastSummary Int? @default(0)\n // Relácie\n answers Answer[]\n user User @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([createdAt])\n}\n\n// Hlavný model - všetky správy, bez duplikátov\nmodel Answer {\n id String @id @default(cuid())\n conversationId String\n messageId String @unique\n role Role\n content String\n question String?\n answer String?\n evaluation String?\n isWelcome Boolean @default(false)\n processingTime Int?\n model String?\n userId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relácie\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id])\n feedback Feedback?\n references Reference[]\n metrics AnswerMetrics?\n WorkflowLog WorkflowLog[]\n\n @@index([conversationId])\n @@index([messageId])\n @@index([role])\n @@index([userId])\n @@index([createdAt])\n}\n\n// Nová tabuľka pre metriky odpovedí\nmodel AnswerMetrics {\n id String @id @default(cuid())\n answerId String @unique\n // Náklady\n apiCost Float? // Celkové náklady (ai_cost + rag_cost)\n aiCost Float? // Náklady len na AI provider volania\n ragCost Float? // Náklady na RAG operácie\n // Volania\n apiCalls Int? // Celkový počet volaní\n aiCalls Int? // Počet AI provider volaní\n ragCalls Int? // Počet RAG operácií\n // Čas a výkon\n apiDuration Int? // Doba spracovania v ms\n // AI Provider a Model\n aiProvider String? // Hlavný AI provider\n aiModel String? // Hlavný AI model\n aiProvidersUsed String[] // Všetky použité AI providery\n aiModelsUsed String[] // Všetky použité AI modely\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relations\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([apiCost])\n @@index([apiDuration])\n @@index([aiProvider])\n @@index([createdAt])\n}\n\nmodel Feedback {\n id String @id @default(cuid())\n answerId String @unique\n rating FeedbackRating\n feedbackTypes String[]\n customFeedback String?\n userId String\n messageContent String?\n createdAt DateTime @default(now())\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id])\n\n @@index([rating])\n @@index([userId])\n @@index([answerId])\n}\n\n// ZJEDNODUŠENÝ Reference - len na Answer, bez duplikátov\nmodel Reference {\n id String @id @default(cuid())\n answerId String // Len answerId - konzistentné\n type ReferenceType\n title String\n reference String\n summary String?\n url String?\n uuid String?\n relevance Float?\n citationNumber Int?\n metadata Json?\n userId String?\n createdAt DateTime @default(now())\n // Relácie\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([type])\n @@index([reference])\n @@index([userId])\n @@index([createdAt])\n}\n\nmodel PageView {\n id String @id @default(cuid())\n userId String?\n sessionId String?\n page String\n path String\n referrer String?\n userAgent String?\n ipAddress String?\n country String?\n city String?\n deviceType String?\n browser String?\n os String?\n screenSize String?\n language String?\n timeOnPage Int?\n isBounce Boolean @default(true)\n createdAt DateTime @default(now())\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n user User? @relation(fields: [userId], references: [id])\n\n @@index([userId])\n @@index([sessionId])\n @@index([page])\n @@index([createdAt])\n @@index([country])\n @@index([deviceType])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionId String @unique\n userId String?\n startedAt DateTime @default(now())\n endedAt DateTime?\n duration Int?\n pageViews PageView[]\n user User? @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([startedAt])\n}\n\nenum Role {\n USER\n ASSISTANT\n SYSTEM\n}\n\nenum FeedbackRating {\n LIKE\n DISLIKE\n NEUTRAL\n}\n\nenum ReferenceType {\n LAW\n CASE\n REGULATION\n DOCUMENT\n OTHER\n}\n\nenum ApprovalStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\n// Nový model pre logovanie admin akcií\nmodel AdminActionLog {\n id String @id @default(cuid())\n action String // APPROVE_USER, REJECT_USER, etc.\n targetUserId String // ID používateľa, na ktorého sa akcia vzťahuje\n adminEmail String // E-mail admina, ktorý vykonal akciu\n details Json? // Ďalšie detaily akcie (reason, notes, etc.)\n createdAt DateTime @default(now())\n\n @@index([action])\n @@index([targetUserId])\n @@index([adminEmail])\n @@index([createdAt])\n}\n\nmodel WorkflowLog {\n id String @id @default(cuid()) // Added @default(cuid())\n conversationId String\n messageId String?\n userId String? // Made optional to preserve logs when users are deleted\n sessionId String? // Removed @unique to allow multiple workflows per session\n startedAt DateTime @default(now())\n completedAt DateTime?\n status WorkflowStatus @default(IN_PROGRESS)\n totalDuration Int? // milliseconds\n error String?\n metadata Json?\n steps WorkflowStep[] // Renamed from WorkflowStep to steps (lowerCamel, plural)\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n answer Answer? @relation(fields: [messageId], references: [messageId])\n\n @@index([conversationId])\n @@index([userId])\n @@index([sessionId])\n @@index([startedAt])\n @@index([status])\n @@index([conversationId, startedAt]) // Composite index for timeline queries\n @@index([messageId])\n}\n\nmodel WorkflowStep {\n id String @id @default(cuid()) // Added @default(cuid())\n workflowId String\n stepName String // 'classify_question', 'rag_search', 'ai_processing', 'generate_response'\n stepType StepType\n startedAt DateTime @default(now())\n completedAt DateTime?\n duration Int? // milliseconds\n status StepStatus @default(IN_PROGRESS)\n inputData Json? // Sanitized input data\n outputData Json? // Sanitized output data\n error String?\n metadata Json? // Provider used, model used, tokens, costs, etc.\n workflow WorkflowLog @relation(fields: [workflowId], references: [id], onDelete: Cascade)\n\n @@index([workflowId])\n @@index([stepName])\n @@index([stepType])\n @@index([startedAt])\n @@index([status])\n @@index([workflowId, startedAt]) // Composite index for timeline queries\n}\n\nenum WorkflowStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n CANCELLED\n}\n\nenum StepStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n SKIPPED\n}\n\nenum StepType {\n CLASSIFICATION\n RAG_RETRIEVAL\n AI_PROCESSING\n RESPONSE_GENERATION\n DATA_PERSISTENCE\n ERROR_HANDLING\n}\n\n// Email verification tokens\nmodel VerificationToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n\n// Password reset tokens\nmodel PasswordResetToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n",
448
+ "inlineSchemaHash": "adcf2f246fbd2a0eabab2f350a431b430a9ef8cb4d9dec85b0bb2fca54874cb8",
445
449
  "copyEngine": true
446
450
  }
447
451
 
@@ -482,6 +486,10 @@ Object.assign(exports, Prisma)
482
486
  // file annotations for bundling tools to include these files
483
487
  path.join(__dirname, "libquery_engine-darwin-arm64.dylib.node");
484
488
  path.join(process.cwd(), "prisma/generated/app/libquery_engine-darwin-arm64.dylib.node")
489
+
490
+ // file annotations for bundling tools to include these files
491
+ path.join(__dirname, "libquery_engine-linux-musl-openssl-3.0.x.so.node");
492
+ path.join(process.cwd(), "prisma/generated/app/libquery_engine-linux-musl-openssl-3.0.x.so.node")
485
493
  // file annotations for bundling tools to include these files
486
494
  path.join(__dirname, "schema.prisma");
487
495
  path.join(process.cwd(), "prisma/generated/app/schema.prisma")
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-5795f29ef1cbba113f9090e40c8f15848e89611f76485b4a2b984c4e0e7d4fc0",
2
+ "name": "prisma-client-f13be65f97f973045487dc73e8a7fc9e8dcf715dce0c8f7bdfacb5b3f22afcc0",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "default.js",
@@ -1,6 +1,7 @@
1
1
  generator client {
2
- provider = "prisma-client-js"
3
- output = "./generated/app"
2
+ provider = "prisma-client-js"
3
+ output = "./generated/app"
4
+ binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
4
5
  }
5
6
 
6
7
  datasource db {
@@ -413,6 +413,10 @@ const config = {
413
413
  "fromEnvVar": null,
414
414
  "value": "darwin-arm64",
415
415
  "native": true
416
+ },
417
+ {
418
+ "fromEnvVar": null,
419
+ "value": "linux-musl-openssl-3.0.x"
416
420
  }
417
421
  ],
418
422
  "previewFeatures": [],
@@ -439,8 +443,8 @@ const config = {
439
443
  }
440
444
  }
441
445
  },
442
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/app\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified DateTime?\n image String?\n // Credentials authentication fields\n password String? // Hashed password pre credentials login\n createdAt DateTime @default(now())\n messageCount Int @default(100)\n agreedToTerms Boolean @default(false)\n practiceArea String[]\n lawFirm String?\n yearsOfExperience Int?\n // Nové polia pre schvalovanie používateľov\n isApproved Boolean @default(false) // Či je používateľ schválený\n isRejected Boolean @default(false) // Či je používateľ zamietnutý\n approvedAt DateTime? // Kedy bol schválený\n rejectedAt DateTime? // Kedy bol zamietnutý\n approvedBy String? // ID admina, ktorý schválil\n rejectedBy String? // ID admina, ktorý zamietol\n rejectionReason String? // Dôvod zamietnutia\n // Nové polia pre tracking a žiadosť\n referralSource String? // Odkiaľ sa o nás dozvedel (Google, Facebook, LinkedIn, etc.)\n applicationText String? // Text žiadosti o prihlásenie\n approvalRequest UserApprovalRequest?\n accounts Account[]\n answers Answer[]\n conversations Conversation[]\n feedbacks Feedback[]\n pageViews PageView[]\n sessions Session[]\n workflowLogs WorkflowLog[]\n verificationTokens VerificationToken[]\n passwordResetTokens PasswordResetToken[]\n}\n\n// Nový model pre žiadosti o schválenie\nmodel UserApprovalRequest {\n id String @id @default(cuid())\n userId String @unique\n status ApprovalStatus @default(PENDING)\n submittedAt DateTime @default(now())\n reviewedAt DateTime?\n reviewedBy String? // ID admina, ktorý preskúmal žiadosť\n notes String? // Poznámky admina\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([status])\n @@index([submittedAt])\n @@index([reviewedAt])\n}\n\n// ZJEDNODUŠENÝ Conversation - len metadata, bez duplikátov\nmodel Conversation {\n id String @id @default(cuid())\n name String\n userId String\n isShareable Boolean @default(false)\n shareUrl String? @unique\n sharedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n summary String?\n messagesSinceLastSummary Int? @default(0)\n // Relácie\n answers Answer[]\n user User @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([createdAt])\n}\n\n// Hlavný model - všetky správy, bez duplikátov\nmodel Answer {\n id String @id @default(cuid())\n conversationId String\n messageId String @unique\n role Role\n content String\n question String?\n answer String?\n evaluation String?\n isWelcome Boolean @default(false)\n processingTime Int?\n model String?\n userId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relácie\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id])\n feedback Feedback?\n references Reference[]\n metrics AnswerMetrics?\n WorkflowLog WorkflowLog[]\n\n @@index([conversationId])\n @@index([messageId])\n @@index([role])\n @@index([userId])\n @@index([createdAt])\n}\n\n// Nová tabuľka pre metriky odpovedí\nmodel AnswerMetrics {\n id String @id @default(cuid())\n answerId String @unique\n // Náklady\n apiCost Float? // Celkové náklady (ai_cost + rag_cost)\n aiCost Float? // Náklady len na AI provider volania\n ragCost Float? // Náklady na RAG operácie\n // Volania\n apiCalls Int? // Celkový počet volaní\n aiCalls Int? // Počet AI provider volaní\n ragCalls Int? // Počet RAG operácií\n // Čas a výkon\n apiDuration Int? // Doba spracovania v ms\n // AI Provider a Model\n aiProvider String? // Hlavný AI provider\n aiModel String? // Hlavný AI model\n aiProvidersUsed String[] // Všetky použité AI providery\n aiModelsUsed String[] // Všetky použité AI modely\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relations\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([apiCost])\n @@index([apiDuration])\n @@index([aiProvider])\n @@index([createdAt])\n}\n\nmodel Feedback {\n id String @id @default(cuid())\n answerId String @unique\n rating FeedbackRating\n feedbackTypes String[]\n customFeedback String?\n userId String\n messageContent String?\n createdAt DateTime @default(now())\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id])\n\n @@index([rating])\n @@index([userId])\n @@index([answerId])\n}\n\n// ZJEDNODUŠENÝ Reference - len na Answer, bez duplikátov\nmodel Reference {\n id String @id @default(cuid())\n answerId String // Len answerId - konzistentné\n type ReferenceType\n title String\n reference String\n summary String?\n url String?\n uuid String?\n relevance Float?\n citationNumber Int?\n metadata Json?\n userId String?\n createdAt DateTime @default(now())\n // Relácie\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([type])\n @@index([reference])\n @@index([userId])\n @@index([createdAt])\n}\n\nmodel PageView {\n id String @id @default(cuid())\n userId String?\n sessionId String?\n page String\n path String\n referrer String?\n userAgent String?\n ipAddress String?\n country String?\n city String?\n deviceType String?\n browser String?\n os String?\n screenSize String?\n language String?\n timeOnPage Int?\n isBounce Boolean @default(true)\n createdAt DateTime @default(now())\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n user User? @relation(fields: [userId], references: [id])\n\n @@index([userId])\n @@index([sessionId])\n @@index([page])\n @@index([createdAt])\n @@index([country])\n @@index([deviceType])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionId String @unique\n userId String?\n startedAt DateTime @default(now())\n endedAt DateTime?\n duration Int?\n pageViews PageView[]\n user User? @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([startedAt])\n}\n\nenum Role {\n USER\n ASSISTANT\n SYSTEM\n}\n\nenum FeedbackRating {\n LIKE\n DISLIKE\n NEUTRAL\n}\n\nenum ReferenceType {\n LAW\n CASE\n REGULATION\n DOCUMENT\n OTHER\n}\n\nenum ApprovalStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\n// Nový model pre logovanie admin akcií\nmodel AdminActionLog {\n id String @id @default(cuid())\n action String // APPROVE_USER, REJECT_USER, etc.\n targetUserId String // ID používateľa, na ktorého sa akcia vzťahuje\n adminEmail String // E-mail admina, ktorý vykonal akciu\n details Json? // Ďalšie detaily akcie (reason, notes, etc.)\n createdAt DateTime @default(now())\n\n @@index([action])\n @@index([targetUserId])\n @@index([adminEmail])\n @@index([createdAt])\n}\n\nmodel WorkflowLog {\n id String @id @default(cuid()) // Added @default(cuid())\n conversationId String\n messageId String?\n userId String? // Made optional to preserve logs when users are deleted\n sessionId String? // Removed @unique to allow multiple workflows per session\n startedAt DateTime @default(now())\n completedAt DateTime?\n status WorkflowStatus @default(IN_PROGRESS)\n totalDuration Int? // milliseconds\n error String?\n metadata Json?\n steps WorkflowStep[] // Renamed from WorkflowStep to steps (lowerCamel, plural)\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n answer Answer? @relation(fields: [messageId], references: [messageId])\n\n @@index([conversationId])\n @@index([userId])\n @@index([sessionId])\n @@index([startedAt])\n @@index([status])\n @@index([conversationId, startedAt]) // Composite index for timeline queries\n @@index([messageId])\n}\n\nmodel WorkflowStep {\n id String @id @default(cuid()) // Added @default(cuid())\n workflowId String\n stepName String // 'classify_question', 'rag_search', 'ai_processing', 'generate_response'\n stepType StepType\n startedAt DateTime @default(now())\n completedAt DateTime?\n duration Int? // milliseconds\n status StepStatus @default(IN_PROGRESS)\n inputData Json? // Sanitized input data\n outputData Json? // Sanitized output data\n error String?\n metadata Json? // Provider used, model used, tokens, costs, etc.\n workflow WorkflowLog @relation(fields: [workflowId], references: [id], onDelete: Cascade)\n\n @@index([workflowId])\n @@index([stepName])\n @@index([stepType])\n @@index([startedAt])\n @@index([status])\n @@index([workflowId, startedAt]) // Composite index for timeline queries\n}\n\nenum WorkflowStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n CANCELLED\n}\n\nenum StepStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n SKIPPED\n}\n\nenum StepType {\n CLASSIFICATION\n RAG_RETRIEVAL\n AI_PROCESSING\n RESPONSE_GENERATION\n DATA_PERSISTENCE\n ERROR_HANDLING\n}\n\n// Email verification tokens\nmodel VerificationToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n\n// Password reset tokens\nmodel PasswordResetToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n",
443
- "inlineSchemaHash": "c34be83eddb4d66899232875de30e618fee7bd300c34520da9f81057adf78217",
446
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/app\"\n binaryTargets = [\"native\", \"linux-musl-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String\n type String\n provider String\n providerAccountId String\n refresh_token String?\n access_token String?\n expires_at Int?\n token_type String?\n scope String?\n id_token String?\n session_state String?\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n}\n\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified DateTime?\n image String?\n // Credentials authentication fields\n password String? // Hashed password pre credentials login\n createdAt DateTime @default(now())\n messageCount Int @default(100)\n agreedToTerms Boolean @default(false)\n practiceArea String[]\n lawFirm String?\n yearsOfExperience Int?\n // Nové polia pre schvalovanie používateľov\n isApproved Boolean @default(false) // Či je používateľ schválený\n isRejected Boolean @default(false) // Či je používateľ zamietnutý\n approvedAt DateTime? // Kedy bol schválený\n rejectedAt DateTime? // Kedy bol zamietnutý\n approvedBy String? // ID admina, ktorý schválil\n rejectedBy String? // ID admina, ktorý zamietol\n rejectionReason String? // Dôvod zamietnutia\n // Nové polia pre tracking a žiadosť\n referralSource String? // Odkiaľ sa o nás dozvedel (Google, Facebook, LinkedIn, etc.)\n applicationText String? // Text žiadosti o prihlásenie\n approvalRequest UserApprovalRequest?\n accounts Account[]\n answers Answer[]\n conversations Conversation[]\n feedbacks Feedback[]\n pageViews PageView[]\n sessions Session[]\n workflowLogs WorkflowLog[]\n verificationTokens VerificationToken[]\n passwordResetTokens PasswordResetToken[]\n}\n\n// Nový model pre žiadosti o schválenie\nmodel UserApprovalRequest {\n id String @id @default(cuid())\n userId String @unique\n status ApprovalStatus @default(PENDING)\n submittedAt DateTime @default(now())\n reviewedAt DateTime?\n reviewedBy String? // ID admina, ktorý preskúmal žiadosť\n notes String? // Poznámky admina\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([status])\n @@index([submittedAt])\n @@index([reviewedAt])\n}\n\n// ZJEDNODUŠENÝ Conversation - len metadata, bez duplikátov\nmodel Conversation {\n id String @id @default(cuid())\n name String\n userId String\n isShareable Boolean @default(false)\n shareUrl String? @unique\n sharedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n summary String?\n messagesSinceLastSummary Int? @default(0)\n // Relácie\n answers Answer[]\n user User @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([createdAt])\n}\n\n// Hlavný model - všetky správy, bez duplikátov\nmodel Answer {\n id String @id @default(cuid())\n conversationId String\n messageId String @unique\n role Role\n content String\n question String?\n answer String?\n evaluation String?\n isWelcome Boolean @default(false)\n processingTime Int?\n model String?\n userId String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relácie\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id])\n feedback Feedback?\n references Reference[]\n metrics AnswerMetrics?\n WorkflowLog WorkflowLog[]\n\n @@index([conversationId])\n @@index([messageId])\n @@index([role])\n @@index([userId])\n @@index([createdAt])\n}\n\n// Nová tabuľka pre metriky odpovedí\nmodel AnswerMetrics {\n id String @id @default(cuid())\n answerId String @unique\n // Náklady\n apiCost Float? // Celkové náklady (ai_cost + rag_cost)\n aiCost Float? // Náklady len na AI provider volania\n ragCost Float? // Náklady na RAG operácie\n // Volania\n apiCalls Int? // Celkový počet volaní\n aiCalls Int? // Počet AI provider volaní\n ragCalls Int? // Počet RAG operácií\n // Čas a výkon\n apiDuration Int? // Doba spracovania v ms\n // AI Provider a Model\n aiProvider String? // Hlavný AI provider\n aiModel String? // Hlavný AI model\n aiProvidersUsed String[] // Všetky použité AI providery\n aiModelsUsed String[] // Všetky použité AI modely\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n // Relations\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([apiCost])\n @@index([apiDuration])\n @@index([aiProvider])\n @@index([createdAt])\n}\n\nmodel Feedback {\n id String @id @default(cuid())\n answerId String @unique\n rating FeedbackRating\n feedbackTypes String[]\n customFeedback String?\n userId String\n messageContent String?\n createdAt DateTime @default(now())\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id])\n\n @@index([rating])\n @@index([userId])\n @@index([answerId])\n}\n\n// ZJEDNODUŠENÝ Reference - len na Answer, bez duplikátov\nmodel Reference {\n id String @id @default(cuid())\n answerId String // Len answerId - konzistentné\n type ReferenceType\n title String\n reference String\n summary String?\n url String?\n uuid String?\n relevance Float?\n citationNumber Int?\n metadata Json?\n userId String?\n createdAt DateTime @default(now())\n // Relácie\n answer Answer @relation(fields: [answerId], references: [id], onDelete: Cascade)\n\n @@index([answerId])\n @@index([type])\n @@index([reference])\n @@index([userId])\n @@index([createdAt])\n}\n\nmodel PageView {\n id String @id @default(cuid())\n userId String?\n sessionId String?\n page String\n path String\n referrer String?\n userAgent String?\n ipAddress String?\n country String?\n city String?\n deviceType String?\n browser String?\n os String?\n screenSize String?\n language String?\n timeOnPage Int?\n isBounce Boolean @default(true)\n createdAt DateTime @default(now())\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n user User? @relation(fields: [userId], references: [id])\n\n @@index([userId])\n @@index([sessionId])\n @@index([page])\n @@index([createdAt])\n @@index([country])\n @@index([deviceType])\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionId String @unique\n userId String?\n startedAt DateTime @default(now())\n endedAt DateTime?\n duration Int?\n pageViews PageView[]\n user User? @relation(fields: [userId], references: [id])\n workflowLogs WorkflowLog[]\n\n @@index([userId])\n @@index([startedAt])\n}\n\nenum Role {\n USER\n ASSISTANT\n SYSTEM\n}\n\nenum FeedbackRating {\n LIKE\n DISLIKE\n NEUTRAL\n}\n\nenum ReferenceType {\n LAW\n CASE\n REGULATION\n DOCUMENT\n OTHER\n}\n\nenum ApprovalStatus {\n PENDING\n APPROVED\n REJECTED\n}\n\n// Nový model pre logovanie admin akcií\nmodel AdminActionLog {\n id String @id @default(cuid())\n action String // APPROVE_USER, REJECT_USER, etc.\n targetUserId String // ID používateľa, na ktorého sa akcia vzťahuje\n adminEmail String // E-mail admina, ktorý vykonal akciu\n details Json? // Ďalšie detaily akcie (reason, notes, etc.)\n createdAt DateTime @default(now())\n\n @@index([action])\n @@index([targetUserId])\n @@index([adminEmail])\n @@index([createdAt])\n}\n\nmodel WorkflowLog {\n id String @id @default(cuid()) // Added @default(cuid())\n conversationId String\n messageId String?\n userId String? // Made optional to preserve logs when users are deleted\n sessionId String? // Removed @unique to allow multiple workflows per session\n startedAt DateTime @default(now())\n completedAt DateTime?\n status WorkflowStatus @default(IN_PROGRESS)\n totalDuration Int? // milliseconds\n error String?\n metadata Json?\n steps WorkflowStep[] // Renamed from WorkflowStep to steps (lowerCamel, plural)\n conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)\n user User? @relation(fields: [userId], references: [id], onDelete: SetNull)\n session Session? @relation(fields: [sessionId], references: [sessionId], onDelete: SetNull)\n answer Answer? @relation(fields: [messageId], references: [messageId])\n\n @@index([conversationId])\n @@index([userId])\n @@index([sessionId])\n @@index([startedAt])\n @@index([status])\n @@index([conversationId, startedAt]) // Composite index for timeline queries\n @@index([messageId])\n}\n\nmodel WorkflowStep {\n id String @id @default(cuid()) // Added @default(cuid())\n workflowId String\n stepName String // 'classify_question', 'rag_search', 'ai_processing', 'generate_response'\n stepType StepType\n startedAt DateTime @default(now())\n completedAt DateTime?\n duration Int? // milliseconds\n status StepStatus @default(IN_PROGRESS)\n inputData Json? // Sanitized input data\n outputData Json? // Sanitized output data\n error String?\n metadata Json? // Provider used, model used, tokens, costs, etc.\n workflow WorkflowLog @relation(fields: [workflowId], references: [id], onDelete: Cascade)\n\n @@index([workflowId])\n @@index([stepName])\n @@index([stepType])\n @@index([startedAt])\n @@index([status])\n @@index([workflowId, startedAt]) // Composite index for timeline queries\n}\n\nenum WorkflowStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n CANCELLED\n}\n\nenum StepStatus {\n IN_PROGRESS\n COMPLETED\n FAILED\n SKIPPED\n}\n\nenum StepType {\n CLASSIFICATION\n RAG_RETRIEVAL\n AI_PROCESSING\n RESPONSE_GENERATION\n DATA_PERSISTENCE\n ERROR_HANDLING\n}\n\n// Email verification tokens\nmodel VerificationToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n\n// Password reset tokens\nmodel PasswordResetToken {\n id String @id @default(cuid())\n userId String\n token String @unique\n expires DateTime\n createdAt DateTime @default(now())\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([token])\n @@index([userId])\n @@index([expires])\n}\n",
447
+ "inlineSchemaHash": "adcf2f246fbd2a0eabab2f350a431b430a9ef8cb4d9dec85b0bb2fca54874cb8",
444
448
  "copyEngine": true
445
449
  }
446
450
  config.dirname = '/'
@@ -199,6 +199,10 @@ const config = {
199
199
  "fromEnvVar": null,
200
200
  "value": "darwin-arm64",
201
201
  "native": true
202
+ },
203
+ {
204
+ "fromEnvVar": null,
205
+ "value": "linux-musl-openssl-3.0.x"
202
206
  }
203
207
  ],
204
208
  "previewFeatures": [],
@@ -225,8 +229,8 @@ const config = {
225
229
  }
226
230
  }
227
231
  },
228
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/law\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL_LAW\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING_LAW\")\n schemas = [\"public\"]\n}\n\n/// Existing public tables (read-only recommended). Validate nullability via introspection.\nmodel LawVersion {\n id String @id\n lawId String? @map(\"lawid\")\n lawName String? @map(\"lawname\")\n versionNumber String? @map(\"versionnumber\")\n lawUrl String? @map(\"lawurl\")\n isLawVersionEffective Boolean? @map(\"islawversioneffective\")\n isAmendment Boolean? @map(\"isamendment\")\n fullLawId String? @map(\"fulllawid\")\n approvalDate DateTime? @map(\"approvaldate\")\n publicationDate DateTime? @map(\"publicationdate\")\n effectiveFrom DateTime? @map(\"effectivefrom\")\n effectiveUntil DateTime? @map(\"effectiveuntil\")\n author String?\n fullLawHtml String? @map(\"fulllawhtml\")\n fullLaw String? @map(\"fulllaw\")\n legalAreas Json? @map(\"legalareas\")\n publishedIn Json? @map(\"publishedin\")\n relationships Json? @map(\"relationships\")\n\n attachments LawAttachment[]\n paragraphs VersionParagraph[]\n\n @@map(\"law_versions\")\n @@schema(\"public\")\n}\n\nmodel LawAttachment {\n id Int @id\n name String?\n attachmentId String? @map(\"attachmentid\")\n content String?\n lawVersionId String @map(\"lawversionid\")\n\n lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])\n\n @@map(\"law_attachments\")\n @@schema(\"public\")\n}\n\nmodel VersionParagraph {\n id Int @id\n paragraphId String? @map(\"paragraph_id\")\n versionId String @map(\"version_id\")\n sequenceNumber Int? @map(\"sequence_number\")\n text String?\n fullText String? @map(\"full_text\")\n fullTextWithCitations String? @map(\"full_text_with_citations\")\n embedding Json?\n partId String? @map(\"part_id\")\n partName String? @map(\"part_name\")\n chapterId String? @map(\"chapter_id\")\n chapterName String? @map(\"chapter_name\")\n divisionId String? @map(\"division_id\")\n divisionName String? @map(\"division_name\")\n sectionId String? @map(\"section_id\")\n sectionName String? @map(\"section_name\")\n paragraphPath String? @map(\"paragraph_path\")\n paragraphGroupName String? @map(\"paragraph_group_name\")\n isAmendment Boolean? @map(\"is_amendment\")\n validFrom DateTime? @map(\"valid_from\")\n validTo DateTime? @map(\"valid_to\")\n\n lawVersion LawVersion @relation(fields: [versionId], references: [id])\n\n @@map(\"version_paragraphs\")\n @@schema(\"public\")\n}\n",
229
- "inlineSchemaHash": "6f22eba3fd4358c762e273f641c17cc5429a0f72af01ecce52b31cd52befa8cf",
232
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/law\"\n binaryTargets = [\"native\", \"linux-musl-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL_LAW\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING_LAW\")\n schemas = [\"public\"]\n}\n\n/// Existing public tables (read-only recommended). Validate nullability via introspection.\nmodel LawVersion {\n id String @id\n lawId String? @map(\"lawid\")\n lawName String? @map(\"lawname\")\n versionNumber String? @map(\"versionnumber\")\n lawUrl String? @map(\"lawurl\")\n isLawVersionEffective Boolean? @map(\"islawversioneffective\")\n isAmendment Boolean? @map(\"isamendment\")\n fullLawId String? @map(\"fulllawid\")\n approvalDate DateTime? @map(\"approvaldate\")\n publicationDate DateTime? @map(\"publicationdate\")\n effectiveFrom DateTime? @map(\"effectivefrom\")\n effectiveUntil DateTime? @map(\"effectiveuntil\")\n author String?\n fullLawHtml String? @map(\"fulllawhtml\")\n fullLaw String? @map(\"fulllaw\")\n legalAreas Json? @map(\"legalareas\")\n publishedIn Json? @map(\"publishedin\")\n relationships Json? @map(\"relationships\")\n\n attachments LawAttachment[]\n paragraphs VersionParagraph[]\n\n @@map(\"law_versions\")\n @@schema(\"public\")\n}\n\nmodel LawAttachment {\n id Int @id\n name String?\n attachmentId String? @map(\"attachmentid\")\n content String?\n lawVersionId String @map(\"lawversionid\")\n\n lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])\n\n @@map(\"law_attachments\")\n @@schema(\"public\")\n}\n\nmodel VersionParagraph {\n id Int @id\n paragraphId String? @map(\"paragraph_id\")\n versionId String @map(\"version_id\")\n sequenceNumber Int? @map(\"sequence_number\")\n text String?\n fullText String? @map(\"full_text\")\n fullTextWithCitations String? @map(\"full_text_with_citations\")\n embedding Json?\n partId String? @map(\"part_id\")\n partName String? @map(\"part_name\")\n chapterId String? @map(\"chapter_id\")\n chapterName String? @map(\"chapter_name\")\n divisionId String? @map(\"division_id\")\n divisionName String? @map(\"division_name\")\n sectionId String? @map(\"section_id\")\n sectionName String? @map(\"section_name\")\n paragraphPath String? @map(\"paragraph_path\")\n paragraphGroupName String? @map(\"paragraph_group_name\")\n isAmendment Boolean? @map(\"is_amendment\")\n validFrom DateTime? @map(\"valid_from\")\n validTo DateTime? @map(\"valid_to\")\n\n lawVersion LawVersion @relation(fields: [versionId], references: [id])\n\n @@map(\"version_paragraphs\")\n @@schema(\"public\")\n}\n",
233
+ "inlineSchemaHash": "5e7978877ab7bde8da2bb99a15d195f0272bd753b7bfb2d9da6aa9007a9220cc",
230
234
  "copyEngine": true
231
235
  }
232
236
  config.dirname = '/'
@@ -200,6 +200,10 @@ const config = {
200
200
  "fromEnvVar": null,
201
201
  "value": "darwin-arm64",
202
202
  "native": true
203
+ },
204
+ {
205
+ "fromEnvVar": null,
206
+ "value": "linux-musl-openssl-3.0.x"
203
207
  }
204
208
  ],
205
209
  "previewFeatures": [],
@@ -226,8 +230,8 @@ const config = {
226
230
  }
227
231
  }
228
232
  },
229
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/law\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL_LAW\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING_LAW\")\n schemas = [\"public\"]\n}\n\n/// Existing public tables (read-only recommended). Validate nullability via introspection.\nmodel LawVersion {\n id String @id\n lawId String? @map(\"lawid\")\n lawName String? @map(\"lawname\")\n versionNumber String? @map(\"versionnumber\")\n lawUrl String? @map(\"lawurl\")\n isLawVersionEffective Boolean? @map(\"islawversioneffective\")\n isAmendment Boolean? @map(\"isamendment\")\n fullLawId String? @map(\"fulllawid\")\n approvalDate DateTime? @map(\"approvaldate\")\n publicationDate DateTime? @map(\"publicationdate\")\n effectiveFrom DateTime? @map(\"effectivefrom\")\n effectiveUntil DateTime? @map(\"effectiveuntil\")\n author String?\n fullLawHtml String? @map(\"fulllawhtml\")\n fullLaw String? @map(\"fulllaw\")\n legalAreas Json? @map(\"legalareas\")\n publishedIn Json? @map(\"publishedin\")\n relationships Json? @map(\"relationships\")\n\n attachments LawAttachment[]\n paragraphs VersionParagraph[]\n\n @@map(\"law_versions\")\n @@schema(\"public\")\n}\n\nmodel LawAttachment {\n id Int @id\n name String?\n attachmentId String? @map(\"attachmentid\")\n content String?\n lawVersionId String @map(\"lawversionid\")\n\n lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])\n\n @@map(\"law_attachments\")\n @@schema(\"public\")\n}\n\nmodel VersionParagraph {\n id Int @id\n paragraphId String? @map(\"paragraph_id\")\n versionId String @map(\"version_id\")\n sequenceNumber Int? @map(\"sequence_number\")\n text String?\n fullText String? @map(\"full_text\")\n fullTextWithCitations String? @map(\"full_text_with_citations\")\n embedding Json?\n partId String? @map(\"part_id\")\n partName String? @map(\"part_name\")\n chapterId String? @map(\"chapter_id\")\n chapterName String? @map(\"chapter_name\")\n divisionId String? @map(\"division_id\")\n divisionName String? @map(\"division_name\")\n sectionId String? @map(\"section_id\")\n sectionName String? @map(\"section_name\")\n paragraphPath String? @map(\"paragraph_path\")\n paragraphGroupName String? @map(\"paragraph_group_name\")\n isAmendment Boolean? @map(\"is_amendment\")\n validFrom DateTime? @map(\"valid_from\")\n validTo DateTime? @map(\"valid_to\")\n\n lawVersion LawVersion @relation(fields: [versionId], references: [id])\n\n @@map(\"version_paragraphs\")\n @@schema(\"public\")\n}\n",
230
- "inlineSchemaHash": "6f22eba3fd4358c762e273f641c17cc5429a0f72af01ecce52b31cd52befa8cf",
233
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/law\"\n binaryTargets = [\"native\", \"linux-musl-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL_LAW\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING_LAW\")\n schemas = [\"public\"]\n}\n\n/// Existing public tables (read-only recommended). Validate nullability via introspection.\nmodel LawVersion {\n id String @id\n lawId String? @map(\"lawid\")\n lawName String? @map(\"lawname\")\n versionNumber String? @map(\"versionnumber\")\n lawUrl String? @map(\"lawurl\")\n isLawVersionEffective Boolean? @map(\"islawversioneffective\")\n isAmendment Boolean? @map(\"isamendment\")\n fullLawId String? @map(\"fulllawid\")\n approvalDate DateTime? @map(\"approvaldate\")\n publicationDate DateTime? @map(\"publicationdate\")\n effectiveFrom DateTime? @map(\"effectivefrom\")\n effectiveUntil DateTime? @map(\"effectiveuntil\")\n author String?\n fullLawHtml String? @map(\"fulllawhtml\")\n fullLaw String? @map(\"fulllaw\")\n legalAreas Json? @map(\"legalareas\")\n publishedIn Json? @map(\"publishedin\")\n relationships Json? @map(\"relationships\")\n\n attachments LawAttachment[]\n paragraphs VersionParagraph[]\n\n @@map(\"law_versions\")\n @@schema(\"public\")\n}\n\nmodel LawAttachment {\n id Int @id\n name String?\n attachmentId String? @map(\"attachmentid\")\n content String?\n lawVersionId String @map(\"lawversionid\")\n\n lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])\n\n @@map(\"law_attachments\")\n @@schema(\"public\")\n}\n\nmodel VersionParagraph {\n id Int @id\n paragraphId String? @map(\"paragraph_id\")\n versionId String @map(\"version_id\")\n sequenceNumber Int? @map(\"sequence_number\")\n text String?\n fullText String? @map(\"full_text\")\n fullTextWithCitations String? @map(\"full_text_with_citations\")\n embedding Json?\n partId String? @map(\"part_id\")\n partName String? @map(\"part_name\")\n chapterId String? @map(\"chapter_id\")\n chapterName String? @map(\"chapter_name\")\n divisionId String? @map(\"division_id\")\n divisionName String? @map(\"division_name\")\n sectionId String? @map(\"section_id\")\n sectionName String? @map(\"section_name\")\n paragraphPath String? @map(\"paragraph_path\")\n paragraphGroupName String? @map(\"paragraph_group_name\")\n isAmendment Boolean? @map(\"is_amendment\")\n validFrom DateTime? @map(\"valid_from\")\n validTo DateTime? @map(\"valid_to\")\n\n lawVersion LawVersion @relation(fields: [versionId], references: [id])\n\n @@map(\"version_paragraphs\")\n @@schema(\"public\")\n}\n",
234
+ "inlineSchemaHash": "5e7978877ab7bde8da2bb99a15d195f0272bd753b7bfb2d9da6aa9007a9220cc",
231
235
  "copyEngine": true
232
236
  }
233
237
 
@@ -268,6 +272,10 @@ Object.assign(exports, Prisma)
268
272
  // file annotations for bundling tools to include these files
269
273
  path.join(__dirname, "libquery_engine-darwin-arm64.dylib.node");
270
274
  path.join(process.cwd(), "prisma/generated/law/libquery_engine-darwin-arm64.dylib.node")
275
+
276
+ // file annotations for bundling tools to include these files
277
+ path.join(__dirname, "libquery_engine-linux-musl-openssl-3.0.x.so.node");
278
+ path.join(process.cwd(), "prisma/generated/law/libquery_engine-linux-musl-openssl-3.0.x.so.node")
271
279
  // file annotations for bundling tools to include these files
272
280
  path.join(__dirname, "schema.prisma");
273
281
  path.join(process.cwd(), "prisma/generated/law/schema.prisma")
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "prisma-client-008608bc6b379871e692715f8885d8ad5c41ed8961e75ef3010724c8245acd24",
2
+ "name": "prisma-client-726ec6f9366f65adbf0e6f75d014c7079741edf2be278da96e406356e4deb84f",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
5
  "browser": "default.js",
@@ -1,6 +1,7 @@
1
1
  generator client {
2
- provider = "prisma-client-js"
3
- output = "./generated/law"
2
+ provider = "prisma-client-js"
3
+ output = "./generated/law"
4
+ binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
4
5
  }
5
6
 
6
7
  datasource db {
@@ -199,6 +199,10 @@ const config = {
199
199
  "fromEnvVar": null,
200
200
  "value": "darwin-arm64",
201
201
  "native": true
202
+ },
203
+ {
204
+ "fromEnvVar": null,
205
+ "value": "linux-musl-openssl-3.0.x"
202
206
  }
203
207
  ],
204
208
  "previewFeatures": [],
@@ -225,8 +229,8 @@ const config = {
225
229
  }
226
230
  }
227
231
  },
228
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/law\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL_LAW\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING_LAW\")\n schemas = [\"public\"]\n}\n\n/// Existing public tables (read-only recommended). Validate nullability via introspection.\nmodel LawVersion {\n id String @id\n lawId String? @map(\"lawid\")\n lawName String? @map(\"lawname\")\n versionNumber String? @map(\"versionnumber\")\n lawUrl String? @map(\"lawurl\")\n isLawVersionEffective Boolean? @map(\"islawversioneffective\")\n isAmendment Boolean? @map(\"isamendment\")\n fullLawId String? @map(\"fulllawid\")\n approvalDate DateTime? @map(\"approvaldate\")\n publicationDate DateTime? @map(\"publicationdate\")\n effectiveFrom DateTime? @map(\"effectivefrom\")\n effectiveUntil DateTime? @map(\"effectiveuntil\")\n author String?\n fullLawHtml String? @map(\"fulllawhtml\")\n fullLaw String? @map(\"fulllaw\")\n legalAreas Json? @map(\"legalareas\")\n publishedIn Json? @map(\"publishedin\")\n relationships Json? @map(\"relationships\")\n\n attachments LawAttachment[]\n paragraphs VersionParagraph[]\n\n @@map(\"law_versions\")\n @@schema(\"public\")\n}\n\nmodel LawAttachment {\n id Int @id\n name String?\n attachmentId String? @map(\"attachmentid\")\n content String?\n lawVersionId String @map(\"lawversionid\")\n\n lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])\n\n @@map(\"law_attachments\")\n @@schema(\"public\")\n}\n\nmodel VersionParagraph {\n id Int @id\n paragraphId String? @map(\"paragraph_id\")\n versionId String @map(\"version_id\")\n sequenceNumber Int? @map(\"sequence_number\")\n text String?\n fullText String? @map(\"full_text\")\n fullTextWithCitations String? @map(\"full_text_with_citations\")\n embedding Json?\n partId String? @map(\"part_id\")\n partName String? @map(\"part_name\")\n chapterId String? @map(\"chapter_id\")\n chapterName String? @map(\"chapter_name\")\n divisionId String? @map(\"division_id\")\n divisionName String? @map(\"division_name\")\n sectionId String? @map(\"section_id\")\n sectionName String? @map(\"section_name\")\n paragraphPath String? @map(\"paragraph_path\")\n paragraphGroupName String? @map(\"paragraph_group_name\")\n isAmendment Boolean? @map(\"is_amendment\")\n validFrom DateTime? @map(\"valid_from\")\n validTo DateTime? @map(\"valid_to\")\n\n lawVersion LawVersion @relation(fields: [versionId], references: [id])\n\n @@map(\"version_paragraphs\")\n @@schema(\"public\")\n}\n",
229
- "inlineSchemaHash": "6f22eba3fd4358c762e273f641c17cc5429a0f72af01ecce52b31cd52befa8cf",
232
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"./generated/law\"\n binaryTargets = [\"native\", \"linux-musl-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"POSTGRES_PRISMA_URL_LAW\")\n directUrl = env(\"POSTGRES_URL_NON_POOLING_LAW\")\n schemas = [\"public\"]\n}\n\n/// Existing public tables (read-only recommended). Validate nullability via introspection.\nmodel LawVersion {\n id String @id\n lawId String? @map(\"lawid\")\n lawName String? @map(\"lawname\")\n versionNumber String? @map(\"versionnumber\")\n lawUrl String? @map(\"lawurl\")\n isLawVersionEffective Boolean? @map(\"islawversioneffective\")\n isAmendment Boolean? @map(\"isamendment\")\n fullLawId String? @map(\"fulllawid\")\n approvalDate DateTime? @map(\"approvaldate\")\n publicationDate DateTime? @map(\"publicationdate\")\n effectiveFrom DateTime? @map(\"effectivefrom\")\n effectiveUntil DateTime? @map(\"effectiveuntil\")\n author String?\n fullLawHtml String? @map(\"fulllawhtml\")\n fullLaw String? @map(\"fulllaw\")\n legalAreas Json? @map(\"legalareas\")\n publishedIn Json? @map(\"publishedin\")\n relationships Json? @map(\"relationships\")\n\n attachments LawAttachment[]\n paragraphs VersionParagraph[]\n\n @@map(\"law_versions\")\n @@schema(\"public\")\n}\n\nmodel LawAttachment {\n id Int @id\n name String?\n attachmentId String? @map(\"attachmentid\")\n content String?\n lawVersionId String @map(\"lawversionid\")\n\n lawVersion LawVersion @relation(fields: [lawVersionId], references: [id])\n\n @@map(\"law_attachments\")\n @@schema(\"public\")\n}\n\nmodel VersionParagraph {\n id Int @id\n paragraphId String? @map(\"paragraph_id\")\n versionId String @map(\"version_id\")\n sequenceNumber Int? @map(\"sequence_number\")\n text String?\n fullText String? @map(\"full_text\")\n fullTextWithCitations String? @map(\"full_text_with_citations\")\n embedding Json?\n partId String? @map(\"part_id\")\n partName String? @map(\"part_name\")\n chapterId String? @map(\"chapter_id\")\n chapterName String? @map(\"chapter_name\")\n divisionId String? @map(\"division_id\")\n divisionName String? @map(\"division_name\")\n sectionId String? @map(\"section_id\")\n sectionName String? @map(\"section_name\")\n paragraphPath String? @map(\"paragraph_path\")\n paragraphGroupName String? @map(\"paragraph_group_name\")\n isAmendment Boolean? @map(\"is_amendment\")\n validFrom DateTime? @map(\"valid_from\")\n validTo DateTime? @map(\"valid_to\")\n\n lawVersion LawVersion @relation(fields: [versionId], references: [id])\n\n @@map(\"version_paragraphs\")\n @@schema(\"public\")\n}\n",
233
+ "inlineSchemaHash": "5e7978877ab7bde8da2bb99a15d195f0272bd753b7bfb2d9da6aa9007a9220cc",
230
234
  "copyEngine": true
231
235
  }
232
236
  config.dirname = '/'
package/prisma/law.prisma CHANGED
@@ -1,6 +1,7 @@
1
1
  generator client {
2
- provider = "prisma-client-js"
3
- output = "./generated/law"
2
+ provider = "prisma-client-js"
3
+ output = "./generated/law"
4
+ binaryTargets = ["native", "linux-musl-openssl-3.0.x"]
4
5
  }
5
6
 
6
7
  datasource db {