kfreelance-project-postgresql-prisma-2 0.0.1
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 +217 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +7 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/generated/prisma/client.d.ts +1 -0
- package/generated/prisma/client.js +4 -0
- package/generated/prisma/default.d.ts +1 -0
- package/generated/prisma/default.js +4 -0
- package/generated/prisma/edge.d.ts +1 -0
- package/generated/prisma/edge.js +363 -0
- package/generated/prisma/index-browser.js +345 -0
- package/generated/prisma/index.d.ts +19091 -0
- package/generated/prisma/index.js +388 -0
- package/generated/prisma/libquery_engine-darwin-arm64.dylib.node +0 -0
- package/generated/prisma/libquery_engine-linux-musl-arm64-openssl-3.0.x.so.node +0 -0
- package/generated/prisma/package.json +183 -0
- package/generated/prisma/query_engine_bg.js +2 -0
- package/generated/prisma/query_engine_bg.wasm +0 -0
- package/generated/prisma/runtime/edge-esm.js +34 -0
- package/generated/prisma/runtime/edge.js +34 -0
- package/generated/prisma/runtime/index-browser.d.ts +370 -0
- package/generated/prisma/runtime/index-browser.js +16 -0
- package/generated/prisma/runtime/library.d.ts +3976 -0
- package/generated/prisma/runtime/library.js +146 -0
- package/generated/prisma/runtime/react-native.js +83 -0
- package/generated/prisma/runtime/wasm-compiler-edge.js +84 -0
- package/generated/prisma/runtime/wasm-engine-edge.js +36 -0
- package/generated/prisma/schema.prisma +212 -0
- package/generated/prisma/wasm-edge-light-loader.mjs +4 -0
- package/generated/prisma/wasm-worker-loader.mjs +4 -0
- package/generated/prisma/wasm.d.ts +1 -0
- package/generated/prisma/wasm.js +370 -0
- package/package.json +55 -0
- package/prisma/migrations/20251003030244_init/migration.sql +33 -0
- package/prisma/migrations/20251006071441_update_user_columns_name/migration.sql +10 -0
- package/prisma/migrations/20251229080245_add_is_admin_in_user/migration.sql +2 -0
- package/prisma/migrations/20251229092526_remove_passort_reset/migration.sql +11 -0
- package/prisma/migrations/20251229101534_init_trip_domain/migration.sql +186 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/models/trips.prisma +183 -0
- package/prisma/models/users.prisma +11 -0
- package/prisma/schema.prisma +16 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "TripType" AS ENUM ('SOLO', 'GROUP');
|
|
3
|
+
|
|
4
|
+
-- CreateEnum
|
|
5
|
+
CREATE TYPE "TripStatus" AS ENUM ('DRAFT', 'ACTIVE', 'COMPLETED');
|
|
6
|
+
|
|
7
|
+
-- CreateEnum
|
|
8
|
+
CREATE TYPE "MemberRole" AS ENUM ('OWNER', 'MEMBER');
|
|
9
|
+
|
|
10
|
+
-- CreateEnum
|
|
11
|
+
CREATE TYPE "InviteStatus" AS ENUM ('PENDING', 'ACCEPTED', 'DECLINED');
|
|
12
|
+
|
|
13
|
+
-- CreateEnum
|
|
14
|
+
CREATE TYPE "ActivityStatus" AS ENUM ('PLANNED', 'SUGGESTED', 'CONFIRMED');
|
|
15
|
+
|
|
16
|
+
-- CreateEnum
|
|
17
|
+
CREATE TYPE "ActivitySuggestionStatus" AS ENUM ('SUGGESTED', 'ACCEPTED', 'REJECTED');
|
|
18
|
+
|
|
19
|
+
-- CreateEnum
|
|
20
|
+
CREATE TYPE "VoteValue" AS ENUM ('YES', 'NO', 'MAYBE');
|
|
21
|
+
|
|
22
|
+
-- CreateEnum
|
|
23
|
+
CREATE TYPE "EntityType" AS ENUM ('TRIP', 'DAY', 'ACTIVITY', 'SUGGESTION');
|
|
24
|
+
|
|
25
|
+
-- CreateEnum
|
|
26
|
+
CREATE TYPE "NotificationType" AS ENUM ('INVITE', 'CHANGE', 'VOTE', 'COMMENT');
|
|
27
|
+
|
|
28
|
+
-- CreateTable
|
|
29
|
+
CREATE TABLE "Trip" (
|
|
30
|
+
"id" TEXT NOT NULL,
|
|
31
|
+
"title" TEXT NOT NULL,
|
|
32
|
+
"destination_summary" TEXT NOT NULL,
|
|
33
|
+
"start_date" TIMESTAMP(3) NOT NULL,
|
|
34
|
+
"end_date" TIMESTAMP(3) NOT NULL,
|
|
35
|
+
"trip_type" "TripType" NOT NULL,
|
|
36
|
+
"owner_id" TEXT NOT NULL,
|
|
37
|
+
"status" "TripStatus" NOT NULL DEFAULT 'DRAFT',
|
|
38
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
39
|
+
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
40
|
+
|
|
41
|
+
CONSTRAINT "Trip_pkey" PRIMARY KEY ("id")
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
-- CreateTable
|
|
45
|
+
CREATE TABLE "TripMemeber" (
|
|
46
|
+
"id" TEXT NOT NULL,
|
|
47
|
+
"trip_id" TEXT NOT NULL,
|
|
48
|
+
"user_id" TEXT NOT NULL,
|
|
49
|
+
"role" "MemberRole" NOT NULL,
|
|
50
|
+
"joined_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
51
|
+
"invite_status" "InviteStatus" NOT NULL DEFAULT 'PENDING',
|
|
52
|
+
|
|
53
|
+
CONSTRAINT "TripMemeber_pkey" PRIMARY KEY ("id")
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
-- CreateTable
|
|
57
|
+
CREATE TABLE "Day" (
|
|
58
|
+
"id" TEXT NOT NULL,
|
|
59
|
+
"trip_id" TEXT NOT NULL,
|
|
60
|
+
"date" TIMESTAMP(3) NOT NULL,
|
|
61
|
+
"day_index" INTEGER NOT NULL,
|
|
62
|
+
"notes" TEXT,
|
|
63
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
64
|
+
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
65
|
+
|
|
66
|
+
CONSTRAINT "Day_pkey" PRIMARY KEY ("id")
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
-- CreateTable
|
|
70
|
+
CREATE TABLE "Activity" (
|
|
71
|
+
"id" TEXT NOT NULL,
|
|
72
|
+
"day_id" TEXT NOT NULL,
|
|
73
|
+
"title" TEXT NOT NULL,
|
|
74
|
+
"description" TEXT,
|
|
75
|
+
"start_time" TIMESTAMP(3) NOT NULL,
|
|
76
|
+
"end_time" TIMESTAMP(3) NOT NULL,
|
|
77
|
+
"location_name" TEXT,
|
|
78
|
+
"latitude" DOUBLE PRECISION,
|
|
79
|
+
"longitude" DOUBLE PRECISION,
|
|
80
|
+
"created_by" TEXT NOT NULL,
|
|
81
|
+
"order_index" INTEGER NOT NULL,
|
|
82
|
+
"status" "ActivityStatus" NOT NULL DEFAULT 'PLANNED',
|
|
83
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
84
|
+
"updated_at" TIMESTAMP(3) NOT NULL,
|
|
85
|
+
|
|
86
|
+
CONSTRAINT "Activity_pkey" PRIMARY KEY ("id")
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
-- CreateTable
|
|
90
|
+
CREATE TABLE "ActivitySuggestion" (
|
|
91
|
+
"id" TEXT NOT NULL,
|
|
92
|
+
"trip_id" TEXT NOT NULL,
|
|
93
|
+
"activity_draft" TEXT NOT NULL,
|
|
94
|
+
"suggested_by" TEXT NOT NULL,
|
|
95
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
96
|
+
"status" "ActivitySuggestionStatus" NOT NULL DEFAULT 'SUGGESTED',
|
|
97
|
+
|
|
98
|
+
CONSTRAINT "ActivitySuggestion_pkey" PRIMARY KEY ("id")
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
-- CreateTable
|
|
102
|
+
CREATE TABLE "Vote" (
|
|
103
|
+
"id" TEXT NOT NULL,
|
|
104
|
+
"suggestion_id" TEXT NOT NULL,
|
|
105
|
+
"user_id" TEXT NOT NULL,
|
|
106
|
+
"vote_value" "VoteValue" NOT NULL,
|
|
107
|
+
"voted_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
108
|
+
|
|
109
|
+
CONSTRAINT "Vote_pkey" PRIMARY KEY ("id")
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
-- CreateTable
|
|
113
|
+
CREATE TABLE "Commment" (
|
|
114
|
+
"id" TEXT NOT NULL,
|
|
115
|
+
"entity_type" "EntityType" NOT NULL,
|
|
116
|
+
"user_id" TEXT NOT NULL,
|
|
117
|
+
"content" TEXT NOT NULL,
|
|
118
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
119
|
+
"activityId" TEXT,
|
|
120
|
+
"activitySuggestionId" TEXT,
|
|
121
|
+
|
|
122
|
+
CONSTRAINT "Commment_pkey" PRIMARY KEY ("id")
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
-- CreateTable
|
|
126
|
+
CREATE TABLE "Document" (
|
|
127
|
+
"id" TEXT NOT NULL,
|
|
128
|
+
"trip_id" TEXT NOT NULL,
|
|
129
|
+
"linked_entity_type" "EntityType" NOT NULL,
|
|
130
|
+
"file_name" TEXT NOT NULL,
|
|
131
|
+
"file_type" TEXT NOT NULL,
|
|
132
|
+
"file_url" TEXT NOT NULL,
|
|
133
|
+
"uploaded_by" TEXT NOT NULL,
|
|
134
|
+
"available_offline" BOOLEAN NOT NULL DEFAULT false,
|
|
135
|
+
"uploaded_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
136
|
+
"dayId" TEXT,
|
|
137
|
+
"activityId" TEXT,
|
|
138
|
+
|
|
139
|
+
CONSTRAINT "Document_pkey" PRIMARY KEY ("id")
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
-- CreateTable
|
|
143
|
+
CREATE TABLE "Notification" (
|
|
144
|
+
"id" TEXT NOT NULL,
|
|
145
|
+
"user_id" TEXT NOT NULL,
|
|
146
|
+
"trip_id" TEXT NOT NULL,
|
|
147
|
+
"type" "NotificationType" NOT NULL,
|
|
148
|
+
"payload" TEXT NOT NULL,
|
|
149
|
+
"is_read" BOOLEAN NOT NULL DEFAULT false,
|
|
150
|
+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
151
|
+
|
|
152
|
+
CONSTRAINT "Notification_pkey" PRIMARY KEY ("id")
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
-- AddForeignKey
|
|
156
|
+
ALTER TABLE "TripMemeber" ADD CONSTRAINT "TripMemeber_trip_id_fkey" FOREIGN KEY ("trip_id") REFERENCES "Trip"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
157
|
+
|
|
158
|
+
-- AddForeignKey
|
|
159
|
+
ALTER TABLE "Day" ADD CONSTRAINT "Day_trip_id_fkey" FOREIGN KEY ("trip_id") REFERENCES "Trip"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
160
|
+
|
|
161
|
+
-- AddForeignKey
|
|
162
|
+
ALTER TABLE "Activity" ADD CONSTRAINT "Activity_day_id_fkey" FOREIGN KEY ("day_id") REFERENCES "Day"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
163
|
+
|
|
164
|
+
-- AddForeignKey
|
|
165
|
+
ALTER TABLE "ActivitySuggestion" ADD CONSTRAINT "ActivitySuggestion_trip_id_fkey" FOREIGN KEY ("trip_id") REFERENCES "Trip"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
166
|
+
|
|
167
|
+
-- AddForeignKey
|
|
168
|
+
ALTER TABLE "Vote" ADD CONSTRAINT "Vote_suggestion_id_fkey" FOREIGN KEY ("suggestion_id") REFERENCES "ActivitySuggestion"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
169
|
+
|
|
170
|
+
-- AddForeignKey
|
|
171
|
+
ALTER TABLE "Commment" ADD CONSTRAINT "Commment_activityId_fkey" FOREIGN KEY ("activityId") REFERENCES "Activity"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
172
|
+
|
|
173
|
+
-- AddForeignKey
|
|
174
|
+
ALTER TABLE "Commment" ADD CONSTRAINT "Commment_activitySuggestionId_fkey" FOREIGN KEY ("activitySuggestionId") REFERENCES "ActivitySuggestion"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
175
|
+
|
|
176
|
+
-- AddForeignKey
|
|
177
|
+
ALTER TABLE "Document" ADD CONSTRAINT "Document_trip_id_fkey" FOREIGN KEY ("trip_id") REFERENCES "Trip"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
178
|
+
|
|
179
|
+
-- AddForeignKey
|
|
180
|
+
ALTER TABLE "Document" ADD CONSTRAINT "Document_dayId_fkey" FOREIGN KEY ("dayId") REFERENCES "Day"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
181
|
+
|
|
182
|
+
-- AddForeignKey
|
|
183
|
+
ALTER TABLE "Document" ADD CONSTRAINT "Document_activityId_fkey" FOREIGN KEY ("activityId") REFERENCES "Activity"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
184
|
+
|
|
185
|
+
-- AddForeignKey
|
|
186
|
+
ALTER TABLE "Notification" ADD CONSTRAINT "Notification_trip_id_fkey" FOREIGN KEY ("trip_id") REFERENCES "Trip"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
model Trip {
|
|
2
|
+
id String @id @default(uuid())
|
|
3
|
+
title String
|
|
4
|
+
destination_summary String
|
|
5
|
+
start_date DateTime
|
|
6
|
+
end_date DateTime
|
|
7
|
+
trip_type TripType
|
|
8
|
+
owner_id String
|
|
9
|
+
status TripStatus @default(DRAFT)
|
|
10
|
+
created_at DateTime @default(now())
|
|
11
|
+
updated_at DateTime @updatedAt
|
|
12
|
+
|
|
13
|
+
members TripMemeber[]
|
|
14
|
+
days Day[]
|
|
15
|
+
activitySuggestions ActivitySuggestion[]
|
|
16
|
+
documents Document[]
|
|
17
|
+
notifications Notification[]
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
model TripMemeber {
|
|
21
|
+
id String @id @default(uuid())
|
|
22
|
+
trip_id String
|
|
23
|
+
user_id String
|
|
24
|
+
role MemberRole
|
|
25
|
+
joined_at DateTime @default(now())
|
|
26
|
+
invite_status InviteStatus @default(PENDING)
|
|
27
|
+
trip Trip @relation(fields: [trip_id], references: [id])
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
model Day {
|
|
31
|
+
id String @id @default(uuid())
|
|
32
|
+
trip_id String
|
|
33
|
+
date DateTime
|
|
34
|
+
day_index Int
|
|
35
|
+
notes String?
|
|
36
|
+
created_at DateTime @default(now())
|
|
37
|
+
updated_at DateTime @updatedAt
|
|
38
|
+
|
|
39
|
+
trip Trip @relation(fields: [trip_id], references: [id])
|
|
40
|
+
activities Activity[]
|
|
41
|
+
documents Document[]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
model Activity {
|
|
45
|
+
id String @id @default(uuid())
|
|
46
|
+
day_id String
|
|
47
|
+
title String
|
|
48
|
+
description String?
|
|
49
|
+
start_time DateTime
|
|
50
|
+
end_time DateTime
|
|
51
|
+
location_name String?
|
|
52
|
+
latitude Float?
|
|
53
|
+
longitude Float?
|
|
54
|
+
created_by String
|
|
55
|
+
order_index Int
|
|
56
|
+
status ActivityStatus @default(PLANNED)
|
|
57
|
+
created_at DateTime @default(now())
|
|
58
|
+
updated_at DateTime @updatedAt
|
|
59
|
+
|
|
60
|
+
day Day @relation(fields: [day_id], references: [id])
|
|
61
|
+
documents Document[]
|
|
62
|
+
comments Commment[]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
model ActivitySuggestion {
|
|
66
|
+
id String @id @default(uuid())
|
|
67
|
+
trip_id String
|
|
68
|
+
activity_draft String
|
|
69
|
+
suggested_by String
|
|
70
|
+
created_at DateTime @default(now())
|
|
71
|
+
status ActivitySuggestionStatus @default(SUGGESTED)
|
|
72
|
+
|
|
73
|
+
trip Trip @relation(fields: [trip_id], references: [id])
|
|
74
|
+
votes Vote[]
|
|
75
|
+
commments Commment[]
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
model Vote {
|
|
79
|
+
id String @id @default(uuid())
|
|
80
|
+
suggestion_id String
|
|
81
|
+
user_id String
|
|
82
|
+
vote_value VoteValue
|
|
83
|
+
voted_at DateTime @default(now())
|
|
84
|
+
|
|
85
|
+
activitySuggestion ActivitySuggestion @relation(fields: [suggestion_id], references: [id])
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
model Commment {
|
|
89
|
+
id String @id @default(uuid())
|
|
90
|
+
entity_type EntityType
|
|
91
|
+
user_id String
|
|
92
|
+
content String
|
|
93
|
+
created_at DateTime @default(now())
|
|
94
|
+
|
|
95
|
+
activity Activity? @relation(fields: [activityId], references: [id])
|
|
96
|
+
activityId String?
|
|
97
|
+
activitySuggestion ActivitySuggestion? @relation(fields: [activitySuggestionId], references: [id])
|
|
98
|
+
activitySuggestionId String?
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
model Document {
|
|
102
|
+
id String @id @default(uuid())
|
|
103
|
+
trip_id String
|
|
104
|
+
linked_entity_type EntityType
|
|
105
|
+
file_name String
|
|
106
|
+
file_type String
|
|
107
|
+
file_url String
|
|
108
|
+
uploaded_by String
|
|
109
|
+
available_offline Boolean @default(false)
|
|
110
|
+
uploaded_at DateTime @default(now())
|
|
111
|
+
|
|
112
|
+
trip Trip @relation(fields: [trip_id], references: [id])
|
|
113
|
+
day Day? @relation(fields: [dayId], references: [id])
|
|
114
|
+
dayId String?
|
|
115
|
+
activity Activity? @relation(fields: [activityId], references: [id])
|
|
116
|
+
activityId String?
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
model Notification {
|
|
120
|
+
id String @id @default(uuid())
|
|
121
|
+
user_id String
|
|
122
|
+
trip_id String
|
|
123
|
+
type NotificationType
|
|
124
|
+
payload String
|
|
125
|
+
is_read Boolean @default(false)
|
|
126
|
+
created_at DateTime @default(now())
|
|
127
|
+
|
|
128
|
+
trip Trip @relation(fields: [trip_id], references: [id])
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
enum TripType {
|
|
132
|
+
SOLO
|
|
133
|
+
GROUP
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
enum TripStatus {
|
|
137
|
+
DRAFT
|
|
138
|
+
ACTIVE
|
|
139
|
+
COMPLETED
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
enum MemberRole {
|
|
143
|
+
OWNER
|
|
144
|
+
MEMBER
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
enum InviteStatus {
|
|
148
|
+
PENDING
|
|
149
|
+
ACCEPTED
|
|
150
|
+
DECLINED
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
enum ActivityStatus {
|
|
154
|
+
PLANNED
|
|
155
|
+
SUGGESTED
|
|
156
|
+
CONFIRMED
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
enum ActivitySuggestionStatus {
|
|
160
|
+
SUGGESTED
|
|
161
|
+
ACCEPTED
|
|
162
|
+
REJECTED
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
enum VoteValue {
|
|
166
|
+
YES
|
|
167
|
+
NO
|
|
168
|
+
MAYBE
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
enum EntityType {
|
|
172
|
+
TRIP
|
|
173
|
+
DAY
|
|
174
|
+
ACTIVITY
|
|
175
|
+
SUGGESTION
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
enum NotificationType {
|
|
179
|
+
INVITE
|
|
180
|
+
CHANGE
|
|
181
|
+
VOTE
|
|
182
|
+
COMMENT
|
|
183
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
model User {
|
|
2
|
+
id String @id @default(uuid())
|
|
3
|
+
username String @unique
|
|
4
|
+
email String @unique
|
|
5
|
+
password_hash String // Hashed password
|
|
6
|
+
is_admin Boolean @default(false)
|
|
7
|
+
is_active Boolean
|
|
8
|
+
must_reset_password Boolean
|
|
9
|
+
created_at DateTime @default(now())
|
|
10
|
+
updated_at DateTime @updatedAt
|
|
11
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// This is your Prisma schema file,
|
|
2
|
+
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
3
|
+
|
|
4
|
+
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
|
|
5
|
+
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
|
|
6
|
+
|
|
7
|
+
generator client {
|
|
8
|
+
provider = "prisma-client-js"
|
|
9
|
+
output = "../generated/prisma"
|
|
10
|
+
binaryTargets = ["native", "linux-musl-arm64-openssl-3.0.x"]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
datasource db {
|
|
14
|
+
provider = "postgresql"
|
|
15
|
+
url = env("DATABASE_URL")
|
|
16
|
+
}
|