lang-database 9.1.1 → 10.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/migrations/0_init/migration.sql +229 -0
- package/migrations/20240908140633_/migration.sql +8 -0
- package/migrations/migration_lock.toml +1 -1
- package/package.json +1 -1
- package/schema -generated.prisma +184 -0
- package/schema.prisma +2 -1
- package/migrations/20230607212052_/migration.sql +0 -160
- package/migrations/20230607212301_teams_restricted_deck_fixed_typo/migration.sql +0 -36
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
-- CreateEnum
|
|
2
|
+
CREATE TYPE "AchievementType" AS ENUM ('Today15Min', 'Weekly15Min', 'Monthly15Min', 'CardDone', 'DeckDone', 'DeckAlreadyKnown', 'FiveCardsDone');
|
|
3
|
+
|
|
4
|
+
-- CreateEnum
|
|
5
|
+
CREATE TYPE "Answer" AS ENUM ('KNOWN', 'ALMOST_KNOWN', 'HARD', 'UNKNOWN');
|
|
6
|
+
|
|
7
|
+
-- CreateEnum
|
|
8
|
+
CREATE TYPE "PurchaseStatus" AS ENUM ('PENDING', 'APPROVED');
|
|
9
|
+
|
|
10
|
+
-- CreateTable
|
|
11
|
+
CREATE TABLE "cards" (
|
|
12
|
+
"id" STRING NOT NULL,
|
|
13
|
+
"packId" STRING NOT NULL,
|
|
14
|
+
"front" STRING NOT NULL,
|
|
15
|
+
"back" STRING NOT NULL,
|
|
16
|
+
"lastUpdate" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
17
|
+
"speechGenerated" BOOL NOT NULL DEFAULT false,
|
|
18
|
+
"info" STRING NOT NULL DEFAULT '',
|
|
19
|
+
|
|
20
|
+
CONSTRAINT "cards_pkey" PRIMARY KEY ("id")
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
-- CreateTable
|
|
24
|
+
CREATE TABLE "userCards" (
|
|
25
|
+
"userId" STRING NOT NULL,
|
|
26
|
+
"cardId" STRING NOT NULL,
|
|
27
|
+
"currentInterval" INT4,
|
|
28
|
+
"dueDate" TIMESTAMP(3),
|
|
29
|
+
"done" BOOL NOT NULL DEFAULT false,
|
|
30
|
+
"reverse" BOOL NOT NULL DEFAULT false,
|
|
31
|
+
|
|
32
|
+
CONSTRAINT "userCards_pkey" PRIMARY KEY ("userId","cardId","reverse")
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
-- CreateTable
|
|
36
|
+
CREATE TABLE "categories" (
|
|
37
|
+
"id" STRING NOT NULL,
|
|
38
|
+
"name" STRING NOT NULL,
|
|
39
|
+
|
|
40
|
+
CONSTRAINT "categories_pkey" PRIMARY KEY ("id")
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
-- CreateTable
|
|
44
|
+
CREATE TABLE "packs" (
|
|
45
|
+
"id" STRING NOT NULL,
|
|
46
|
+
"teacherId" STRING NOT NULL,
|
|
47
|
+
"name" STRING NOT NULL DEFAULT '',
|
|
48
|
+
"shortDescription" STRING NOT NULL DEFAULT '',
|
|
49
|
+
"longDescription" STRING NOT NULL DEFAULT '',
|
|
50
|
+
"categoryId" STRING,
|
|
51
|
+
"published" BOOL NOT NULL DEFAULT false,
|
|
52
|
+
"currentPrice" DECIMAL(65,30) NOT NULL,
|
|
53
|
+
"public" BOOL NOT NULL DEFAULT false,
|
|
54
|
+
|
|
55
|
+
CONSTRAINT "packs_pkey" PRIMARY KEY ("id")
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
-- CreateTable
|
|
59
|
+
CREATE TABLE "users" (
|
|
60
|
+
"id" STRING NOT NULL,
|
|
61
|
+
"email" STRING NOT NULL,
|
|
62
|
+
"name" STRING NOT NULL,
|
|
63
|
+
"password" STRING,
|
|
64
|
+
"teamId" STRING,
|
|
65
|
+
"passwordActivated" BOOL NOT NULL DEFAULT false,
|
|
66
|
+
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
67
|
+
"subscriptionExpire" TIMESTAMP(3),
|
|
68
|
+
|
|
69
|
+
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
-- CreateTable
|
|
73
|
+
CREATE TABLE "achievements" (
|
|
74
|
+
"id" STRING NOT NULL,
|
|
75
|
+
"userId" STRING NOT NULL,
|
|
76
|
+
"badge" BOOL NOT NULL,
|
|
77
|
+
"type" "AchievementType" NOT NULL,
|
|
78
|
+
"info" STRING NOT NULL,
|
|
79
|
+
"timestamp" TIMESTAMP(3) NOT NULL,
|
|
80
|
+
"dismissed" BOOL NOT NULL DEFAULT false,
|
|
81
|
+
|
|
82
|
+
CONSTRAINT "achievements_pkey" PRIMARY KEY ("id")
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
-- CreateTable
|
|
86
|
+
CREATE TABLE "teams" (
|
|
87
|
+
"id" STRING NOT NULL,
|
|
88
|
+
"name" STRING NOT NULL,
|
|
89
|
+
"emailPattern" STRING NOT NULL DEFAULT '',
|
|
90
|
+
"userCount" INT4 NOT NULL,
|
|
91
|
+
"subscriptionExpire" TIMESTAMP(3),
|
|
92
|
+
|
|
93
|
+
CONSTRAINT "teams_pkey" PRIMARY KEY ("id")
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
-- CreateTable
|
|
97
|
+
CREATE TABLE "teachers" (
|
|
98
|
+
"id" STRING NOT NULL,
|
|
99
|
+
"email" STRING NOT NULL,
|
|
100
|
+
"name" STRING NOT NULL,
|
|
101
|
+
"password" STRING NOT NULL,
|
|
102
|
+
|
|
103
|
+
CONSTRAINT "teachers_pkey" PRIMARY KEY ("id")
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
-- CreateTable
|
|
107
|
+
CREATE TABLE "googleUsers" (
|
|
108
|
+
"id" STRING NOT NULL,
|
|
109
|
+
"userId" STRING NOT NULL,
|
|
110
|
+
|
|
111
|
+
CONSTRAINT "googleUsers_pkey" PRIMARY KEY ("id")
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
-- CreateTable
|
|
115
|
+
CREATE TABLE "userAnswers" (
|
|
116
|
+
"id" STRING NOT NULL,
|
|
117
|
+
"userId" STRING NOT NULL,
|
|
118
|
+
"cardId" STRING NOT NULL,
|
|
119
|
+
"timestamp" TIMESTAMP(3) NOT NULL,
|
|
120
|
+
"answer" "Answer" NOT NULL,
|
|
121
|
+
"reverse" BOOL NOT NULL DEFAULT false,
|
|
122
|
+
|
|
123
|
+
CONSTRAINT "userAnswers_pkey" PRIMARY KEY ("id")
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
-- CreateTable
|
|
127
|
+
CREATE TABLE "purchases" (
|
|
128
|
+
"id" STRING NOT NULL,
|
|
129
|
+
"userId" STRING NOT NULL,
|
|
130
|
+
"packId" STRING NOT NULL,
|
|
131
|
+
"currency" STRING NOT NULL,
|
|
132
|
+
"amount" DECIMAL(65,30) NOT NULL,
|
|
133
|
+
"orderDate" TIMESTAMP(3) NOT NULL,
|
|
134
|
+
"paymentDate" TIMESTAMP(3),
|
|
135
|
+
"status" "PurchaseStatus" NOT NULL,
|
|
136
|
+
|
|
137
|
+
CONSTRAINT "purchases_pkey" PRIMARY KEY ("id")
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
-- CreateTable
|
|
141
|
+
CREATE TABLE "_PackToTeam" (
|
|
142
|
+
"A" STRING NOT NULL,
|
|
143
|
+
"B" STRING NOT NULL
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
-- CreateTable
|
|
147
|
+
CREATE TABLE "_PackToUser" (
|
|
148
|
+
"A" STRING NOT NULL,
|
|
149
|
+
"B" STRING NOT NULL
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
-- CreateIndex
|
|
153
|
+
CREATE UNIQUE INDEX "cards_packId_front_key" ON "cards"("packId", "front");
|
|
154
|
+
|
|
155
|
+
-- CreateIndex
|
|
156
|
+
CREATE UNIQUE INDEX "cards_packId_back_key" ON "cards"("packId", "back");
|
|
157
|
+
|
|
158
|
+
-- CreateIndex
|
|
159
|
+
CREATE UNIQUE INDEX "userCards_userId_cardId_key" ON "userCards"("userId", "cardId");
|
|
160
|
+
|
|
161
|
+
-- CreateIndex
|
|
162
|
+
CREATE UNIQUE INDEX "IX_Users_Email" ON "users"("email");
|
|
163
|
+
|
|
164
|
+
-- CreateIndex
|
|
165
|
+
CREATE UNIQUE INDEX "IX_teachers_Email" ON "teachers"("email");
|
|
166
|
+
|
|
167
|
+
-- CreateIndex
|
|
168
|
+
CREATE UNIQUE INDEX "googleUsers_userId_key" ON "googleUsers"("userId");
|
|
169
|
+
|
|
170
|
+
-- CreateIndex
|
|
171
|
+
CREATE UNIQUE INDEX "_PackToTeam_AB_unique" ON "_PackToTeam"("A", "B");
|
|
172
|
+
|
|
173
|
+
-- CreateIndex
|
|
174
|
+
CREATE INDEX "_PackToTeam_B_index" ON "_PackToTeam"("B");
|
|
175
|
+
|
|
176
|
+
-- CreateIndex
|
|
177
|
+
CREATE UNIQUE INDEX "_PackToUser_AB_unique" ON "_PackToUser"("A", "B");
|
|
178
|
+
|
|
179
|
+
-- CreateIndex
|
|
180
|
+
CREATE INDEX "_PackToUser_B_index" ON "_PackToUser"("B");
|
|
181
|
+
|
|
182
|
+
-- AddForeignKey
|
|
183
|
+
ALTER TABLE "cards" ADD CONSTRAINT "cards_packId_fkey" FOREIGN KEY ("packId") REFERENCES "packs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
184
|
+
|
|
185
|
+
-- AddForeignKey
|
|
186
|
+
ALTER TABLE "userCards" ADD CONSTRAINT "userCards_cardId_fkey" FOREIGN KEY ("cardId") REFERENCES "cards"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
187
|
+
|
|
188
|
+
-- AddForeignKey
|
|
189
|
+
ALTER TABLE "userCards" ADD CONSTRAINT "userCards_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
190
|
+
|
|
191
|
+
-- AddForeignKey
|
|
192
|
+
ALTER TABLE "packs" ADD CONSTRAINT "packs_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
193
|
+
|
|
194
|
+
-- AddForeignKey
|
|
195
|
+
ALTER TABLE "packs" ADD CONSTRAINT "packs_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "teachers"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
196
|
+
|
|
197
|
+
-- AddForeignKey
|
|
198
|
+
ALTER TABLE "users" ADD CONSTRAINT "users_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "teams"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
199
|
+
|
|
200
|
+
-- AddForeignKey
|
|
201
|
+
ALTER TABLE "achievements" ADD CONSTRAINT "achievements_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
202
|
+
|
|
203
|
+
-- AddForeignKey
|
|
204
|
+
ALTER TABLE "googleUsers" ADD CONSTRAINT "googleUsers_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
205
|
+
|
|
206
|
+
-- AddForeignKey
|
|
207
|
+
ALTER TABLE "userAnswers" ADD CONSTRAINT "userAnswers_cardId_fkey" FOREIGN KEY ("cardId") REFERENCES "cards"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
208
|
+
|
|
209
|
+
-- AddForeignKey
|
|
210
|
+
ALTER TABLE "userAnswers" ADD CONSTRAINT "userAnswers_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
211
|
+
|
|
212
|
+
-- AddForeignKey
|
|
213
|
+
ALTER TABLE "purchases" ADD CONSTRAINT "purchases_packId_fkey" FOREIGN KEY ("packId") REFERENCES "packs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
214
|
+
|
|
215
|
+
-- AddForeignKey
|
|
216
|
+
ALTER TABLE "purchases" ADD CONSTRAINT "purchases_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
217
|
+
|
|
218
|
+
-- AddForeignKey
|
|
219
|
+
ALTER TABLE "_PackToTeam" ADD CONSTRAINT "_PackToTeam_A_fkey" FOREIGN KEY ("A") REFERENCES "packs"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
220
|
+
|
|
221
|
+
-- AddForeignKey
|
|
222
|
+
ALTER TABLE "_PackToTeam" ADD CONSTRAINT "_PackToTeam_B_fkey" FOREIGN KEY ("B") REFERENCES "teams"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
223
|
+
|
|
224
|
+
-- AddForeignKey
|
|
225
|
+
ALTER TABLE "_PackToUser" ADD CONSTRAINT "_PackToUser_A_fkey" FOREIGN KEY ("A") REFERENCES "packs"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
226
|
+
|
|
227
|
+
-- AddForeignKey
|
|
228
|
+
ALTER TABLE "_PackToUser" ADD CONSTRAINT "_PackToUser_B_fkey" FOREIGN KEY ("B") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
229
|
+
|
package/package.json
CHANGED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
generator client {
|
|
2
|
+
provider = "prisma-client-js"
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
datasource db {
|
|
6
|
+
provider = "cockroachdb"
|
|
7
|
+
url = env("DATABASE_URL")
|
|
8
|
+
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
model Card {
|
|
12
|
+
id String @id @default(cuid())
|
|
13
|
+
packId String
|
|
14
|
+
front String
|
|
15
|
+
back String
|
|
16
|
+
lastUpdate DateTime @default(now())
|
|
17
|
+
speechGenerated Boolean @default(false)
|
|
18
|
+
info String @default("")
|
|
19
|
+
pack Pack @relation(fields: [packId], references: [id])
|
|
20
|
+
answers UserAnswer[]
|
|
21
|
+
userCards UserCard[]
|
|
22
|
+
|
|
23
|
+
@@unique([packId, front])
|
|
24
|
+
@@unique([packId, back])
|
|
25
|
+
@@map("cards")
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
model UserCard {
|
|
29
|
+
userId String
|
|
30
|
+
cardId String
|
|
31
|
+
currentInterval Int?
|
|
32
|
+
dueDate DateTime?
|
|
33
|
+
done Boolean @default(false)
|
|
34
|
+
reverse Boolean @default(false)
|
|
35
|
+
card Card @relation(fields: [cardId], references: [id], onDelete: Cascade)
|
|
36
|
+
user User @relation(fields: [userId], references: [id])
|
|
37
|
+
|
|
38
|
+
@@id([userId, cardId, reverse])
|
|
39
|
+
@@unique([userId, cardId])
|
|
40
|
+
@@map("userCards")
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
model Category {
|
|
44
|
+
id String @id @default(cuid())
|
|
45
|
+
name String
|
|
46
|
+
packs Pack[]
|
|
47
|
+
|
|
48
|
+
@@map("categories")
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
model Pack {
|
|
52
|
+
id String @id @default(cuid())
|
|
53
|
+
teacherId String
|
|
54
|
+
name String @default("")
|
|
55
|
+
shortDescription String @default("")
|
|
56
|
+
longDescription String @default("")
|
|
57
|
+
categoryId String?
|
|
58
|
+
published Boolean @default(false)
|
|
59
|
+
currentPrice Decimal
|
|
60
|
+
public Boolean @default(false)
|
|
61
|
+
cards Card[]
|
|
62
|
+
category Category? @relation(fields: [categoryId], references: [id])
|
|
63
|
+
teacher Teacher @relation(fields: [teacherId], references: [id])
|
|
64
|
+
purchases Purchase[]
|
|
65
|
+
teams Team[] @relation("PackToTeam")
|
|
66
|
+
users User[] @relation("PackToUser")
|
|
67
|
+
|
|
68
|
+
@@map("packs")
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
model User {
|
|
72
|
+
id String @id @default(cuid())
|
|
73
|
+
email String @unique(map: "IX_Users_Email")
|
|
74
|
+
name String
|
|
75
|
+
password String?
|
|
76
|
+
teamId String?
|
|
77
|
+
passwordActivated Boolean @default(false)
|
|
78
|
+
timestamp DateTime @default(now())
|
|
79
|
+
subscriptionExpire DateTime?
|
|
80
|
+
achievements Achievement[]
|
|
81
|
+
googleUser GoogleUser?
|
|
82
|
+
purchases Purchase[]
|
|
83
|
+
userAnswers UserAnswer[]
|
|
84
|
+
userCards UserCard[]
|
|
85
|
+
team Team? @relation(fields: [teamId], references: [id])
|
|
86
|
+
packs Pack[] @relation("PackToUser")
|
|
87
|
+
|
|
88
|
+
@@map("users")
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
model Achievement {
|
|
92
|
+
id String @id @default(cuid())
|
|
93
|
+
userId String
|
|
94
|
+
badge Boolean
|
|
95
|
+
type AchievementType
|
|
96
|
+
info String
|
|
97
|
+
timestamp DateTime
|
|
98
|
+
dismissed Boolean @default(false)
|
|
99
|
+
user User @relation(fields: [userId], references: [id])
|
|
100
|
+
|
|
101
|
+
@@map("achievements")
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
model Team {
|
|
105
|
+
id String @id @default(cuid())
|
|
106
|
+
name String
|
|
107
|
+
emailPattern String @default("")
|
|
108
|
+
userCount Int
|
|
109
|
+
subscriptionExpire DateTime?
|
|
110
|
+
members User[]
|
|
111
|
+
additionalDecks Pack[] @relation("PackToTeam")
|
|
112
|
+
|
|
113
|
+
@@map("teams")
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
model Teacher {
|
|
117
|
+
id String @id @default(cuid())
|
|
118
|
+
email String @unique(map: "IX_teachers_Email")
|
|
119
|
+
name String
|
|
120
|
+
password String
|
|
121
|
+
packs Pack[]
|
|
122
|
+
|
|
123
|
+
@@map("teachers")
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
model GoogleUser {
|
|
127
|
+
id String @id
|
|
128
|
+
userId String @unique
|
|
129
|
+
user User @relation(fields: [userId], references: [id])
|
|
130
|
+
|
|
131
|
+
@@map("googleUsers")
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
model UserAnswer {
|
|
135
|
+
id String @id @default(cuid())
|
|
136
|
+
userId String
|
|
137
|
+
cardId String
|
|
138
|
+
timestamp DateTime
|
|
139
|
+
answer Answer
|
|
140
|
+
reverse Boolean @default(false)
|
|
141
|
+
card Card @relation(fields: [cardId], references: [id], onDelete: Cascade)
|
|
142
|
+
user User @relation(fields: [userId], references: [id])
|
|
143
|
+
|
|
144
|
+
@@map("userAnswers")
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
model Purchase {
|
|
148
|
+
id String @id @default(cuid())
|
|
149
|
+
userId String
|
|
150
|
+
packId String
|
|
151
|
+
currency String
|
|
152
|
+
amount Decimal
|
|
153
|
+
orderDate DateTime
|
|
154
|
+
paymentDate DateTime?
|
|
155
|
+
status PurchaseStatus
|
|
156
|
+
pack Pack @relation(fields: [packId], references: [id])
|
|
157
|
+
user User @relation(fields: [userId], references: [id])
|
|
158
|
+
|
|
159
|
+
@@map("purchases")
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
enum AchievementType {
|
|
163
|
+
Today15Min
|
|
164
|
+
Weekly15Min
|
|
165
|
+
Monthly15Min
|
|
166
|
+
CardDone
|
|
167
|
+
DeckDone
|
|
168
|
+
DeckAlreadyKnown
|
|
169
|
+
FiveCardsDone
|
|
170
|
+
|
|
171
|
+
@@map("AchievementType")
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
enum Answer {
|
|
175
|
+
KNOWN
|
|
176
|
+
ALMOST_KNOWN
|
|
177
|
+
HARD
|
|
178
|
+
UNKNOWN
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
enum PurchaseStatus {
|
|
182
|
+
PENDING
|
|
183
|
+
APPROVED
|
|
184
|
+
}
|
package/schema.prisma
CHANGED
|
@@ -30,7 +30,7 @@ model UserCard {
|
|
|
30
30
|
userId String
|
|
31
31
|
card Card @relation(fields: [cardId], references: [id], onDelete: Cascade)
|
|
32
32
|
cardId String
|
|
33
|
-
reverse Boolean
|
|
33
|
+
reverse Boolean
|
|
34
34
|
currentInterval Int?
|
|
35
35
|
dueDate DateTime?
|
|
36
36
|
done Boolean @default(false)
|
|
@@ -42,6 +42,7 @@ model UserCard {
|
|
|
42
42
|
model Category {
|
|
43
43
|
id String @id @default(cuid())
|
|
44
44
|
name String
|
|
45
|
+
order Int?
|
|
45
46
|
packs Pack[]
|
|
46
47
|
@@map("categories")
|
|
47
48
|
}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
-- CreateEnum
|
|
2
|
-
CREATE TYPE "PurchaseStatus" AS ENUM ('PENDING', 'APPROVED');
|
|
3
|
-
|
|
4
|
-
-- CreateTable
|
|
5
|
-
CREATE TABLE "cards" (
|
|
6
|
-
"id" TEXT NOT NULL,
|
|
7
|
-
"packId" TEXT NOT NULL,
|
|
8
|
-
"front" TEXT NOT NULL,
|
|
9
|
-
"back" TEXT NOT NULL,
|
|
10
|
-
|
|
11
|
-
CONSTRAINT "cards_pkey" PRIMARY KEY ("id")
|
|
12
|
-
);
|
|
13
|
-
|
|
14
|
-
-- CreateTable
|
|
15
|
-
CREATE TABLE "userCards" (
|
|
16
|
-
"userId" TEXT NOT NULL,
|
|
17
|
-
"cardId" TEXT NOT NULL,
|
|
18
|
-
"currentInterval" INTEGER,
|
|
19
|
-
"dueDate" TIMESTAMP(3),
|
|
20
|
-
"done" BOOLEAN NOT NULL,
|
|
21
|
-
|
|
22
|
-
CONSTRAINT "userCards_pkey" PRIMARY KEY ("userId","cardId")
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
-- CreateTable
|
|
26
|
-
CREATE TABLE "categories" (
|
|
27
|
-
"id" TEXT NOT NULL,
|
|
28
|
-
"name" TEXT NOT NULL,
|
|
29
|
-
|
|
30
|
-
CONSTRAINT "categories_pkey" PRIMARY KEY ("id")
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
-- CreateTable
|
|
34
|
-
CREATE TABLE "packs" (
|
|
35
|
-
"id" TEXT NOT NULL,
|
|
36
|
-
"teacherId" TEXT NOT NULL,
|
|
37
|
-
"name" TEXT NOT NULL DEFAULT '',
|
|
38
|
-
"shortDescription" TEXT NOT NULL DEFAULT '',
|
|
39
|
-
"longDescription" TEXT NOT NULL DEFAULT '',
|
|
40
|
-
"categoryId" TEXT,
|
|
41
|
-
"published" BOOLEAN NOT NULL DEFAULT false,
|
|
42
|
-
"currentPrice" DECIMAL(65,30) NOT NULL,
|
|
43
|
-
|
|
44
|
-
CONSTRAINT "packs_pkey" PRIMARY KEY ("id")
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
-- CreateTable
|
|
48
|
-
CREATE TABLE "users" (
|
|
49
|
-
"id" TEXT NOT NULL,
|
|
50
|
-
"email" TEXT NOT NULL,
|
|
51
|
-
"name" TEXT NOT NULL,
|
|
52
|
-
|
|
53
|
-
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
-- CreateTable
|
|
57
|
-
CREATE TABLE "teachers" (
|
|
58
|
-
"id" TEXT NOT NULL,
|
|
59
|
-
"email" TEXT NOT NULL,
|
|
60
|
-
"name" TEXT NOT NULL,
|
|
61
|
-
"password" TEXT NOT NULL,
|
|
62
|
-
|
|
63
|
-
CONSTRAINT "teachers_pkey" PRIMARY KEY ("id")
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
-- CreateTable
|
|
67
|
-
CREATE TABLE "googleUsers" (
|
|
68
|
-
"id" TEXT NOT NULL,
|
|
69
|
-
"userId" TEXT NOT NULL,
|
|
70
|
-
|
|
71
|
-
CONSTRAINT "googleUsers_pkey" PRIMARY KEY ("id")
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
-- CreateTable
|
|
75
|
-
CREATE TABLE "answers" (
|
|
76
|
-
"id" TEXT NOT NULL,
|
|
77
|
-
"userId" TEXT NOT NULL,
|
|
78
|
-
"cardId" TEXT NOT NULL,
|
|
79
|
-
"status" TEXT NOT NULL,
|
|
80
|
-
"timestamp" TEXT NOT NULL,
|
|
81
|
-
|
|
82
|
-
CONSTRAINT "answers_pkey" PRIMARY KEY ("id")
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
-- CreateTable
|
|
86
|
-
CREATE TABLE "purchases" (
|
|
87
|
-
"id" TEXT NOT NULL,
|
|
88
|
-
"userId" TEXT NOT NULL,
|
|
89
|
-
"packId" TEXT NOT NULL,
|
|
90
|
-
"currency" TEXT NOT NULL,
|
|
91
|
-
"amount" DECIMAL(65,30) NOT NULL,
|
|
92
|
-
"orderDate" TIMESTAMP(3) NOT NULL,
|
|
93
|
-
"paymentDate" TIMESTAMP(3),
|
|
94
|
-
"status" "PurchaseStatus" NOT NULL,
|
|
95
|
-
|
|
96
|
-
CONSTRAINT "purchases_pkey" PRIMARY KEY ("id")
|
|
97
|
-
);
|
|
98
|
-
|
|
99
|
-
-- CreateTable
|
|
100
|
-
CREATE TABLE "_PackToUser" (
|
|
101
|
-
"A" TEXT NOT NULL,
|
|
102
|
-
"B" TEXT NOT NULL
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
-- CreateIndex
|
|
106
|
-
CREATE UNIQUE INDEX "cards_packId_front_key" ON "cards"("packId", "front");
|
|
107
|
-
|
|
108
|
-
-- CreateIndex
|
|
109
|
-
CREATE UNIQUE INDEX "cards_packId_back_key" ON "cards"("packId", "back");
|
|
110
|
-
|
|
111
|
-
-- CreateIndex
|
|
112
|
-
CREATE UNIQUE INDEX "IX_Users_Email" ON "users"("email");
|
|
113
|
-
|
|
114
|
-
-- CreateIndex
|
|
115
|
-
CREATE UNIQUE INDEX "IX_teachers_Email" ON "teachers"("email");
|
|
116
|
-
|
|
117
|
-
-- CreateIndex
|
|
118
|
-
CREATE UNIQUE INDEX "googleUsers_userId_key" ON "googleUsers"("userId");
|
|
119
|
-
|
|
120
|
-
-- CreateIndex
|
|
121
|
-
CREATE UNIQUE INDEX "_PackToUser_AB_unique" ON "_PackToUser"("A", "B");
|
|
122
|
-
|
|
123
|
-
-- CreateIndex
|
|
124
|
-
CREATE INDEX "_PackToUser_B_index" ON "_PackToUser"("B");
|
|
125
|
-
|
|
126
|
-
-- AddForeignKey
|
|
127
|
-
ALTER TABLE "cards" ADD CONSTRAINT "cards_packId_fkey" FOREIGN KEY ("packId") REFERENCES "packs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
128
|
-
|
|
129
|
-
-- AddForeignKey
|
|
130
|
-
ALTER TABLE "userCards" ADD CONSTRAINT "userCards_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
131
|
-
|
|
132
|
-
-- AddForeignKey
|
|
133
|
-
ALTER TABLE "userCards" ADD CONSTRAINT "userCards_cardId_fkey" FOREIGN KEY ("cardId") REFERENCES "cards"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
134
|
-
|
|
135
|
-
-- AddForeignKey
|
|
136
|
-
ALTER TABLE "packs" ADD CONSTRAINT "packs_teacherId_fkey" FOREIGN KEY ("teacherId") REFERENCES "teachers"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
137
|
-
|
|
138
|
-
-- AddForeignKey
|
|
139
|
-
ALTER TABLE "packs" ADD CONSTRAINT "packs_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
140
|
-
|
|
141
|
-
-- AddForeignKey
|
|
142
|
-
ALTER TABLE "googleUsers" ADD CONSTRAINT "googleUsers_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
143
|
-
|
|
144
|
-
-- AddForeignKey
|
|
145
|
-
ALTER TABLE "answers" ADD CONSTRAINT "answers_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
146
|
-
|
|
147
|
-
-- AddForeignKey
|
|
148
|
-
ALTER TABLE "answers" ADD CONSTRAINT "answers_cardId_fkey" FOREIGN KEY ("cardId") REFERENCES "cards"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
149
|
-
|
|
150
|
-
-- AddForeignKey
|
|
151
|
-
ALTER TABLE "purchases" ADD CONSTRAINT "purchases_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
152
|
-
|
|
153
|
-
-- AddForeignKey
|
|
154
|
-
ALTER TABLE "purchases" ADD CONSTRAINT "purchases_packId_fkey" FOREIGN KEY ("packId") REFERENCES "packs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
155
|
-
|
|
156
|
-
-- AddForeignKey
|
|
157
|
-
ALTER TABLE "_PackToUser" ADD CONSTRAINT "_PackToUser_A_fkey" FOREIGN KEY ("A") REFERENCES "packs"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
158
|
-
|
|
159
|
-
-- AddForeignKey
|
|
160
|
-
ALTER TABLE "_PackToUser" ADD CONSTRAINT "_PackToUser_B_fkey" FOREIGN KEY ("B") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Warnings:
|
|
3
|
-
|
|
4
|
-
- Added the required column `public` to the `packs` table without a default value. This is not possible if the table is not empty.
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
-- AlterTable
|
|
8
|
-
ALTER TABLE "packs" ADD COLUMN "public" BOOLEAN NOT NULL;
|
|
9
|
-
|
|
10
|
-
-- CreateTable
|
|
11
|
-
CREATE TABLE "teams" (
|
|
12
|
-
"id" TEXT NOT NULL,
|
|
13
|
-
"name" TEXT NOT NULL,
|
|
14
|
-
"userCount" INTEGER NOT NULL,
|
|
15
|
-
"subscriptionExpire" TIMESTAMP(3),
|
|
16
|
-
|
|
17
|
-
CONSTRAINT "teams_pkey" PRIMARY KEY ("id")
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
-- CreateTable
|
|
21
|
-
CREATE TABLE "_PackToTeam" (
|
|
22
|
-
"A" TEXT NOT NULL,
|
|
23
|
-
"B" TEXT NOT NULL
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
-- CreateIndex
|
|
27
|
-
CREATE UNIQUE INDEX "_PackToTeam_AB_unique" ON "_PackToTeam"("A", "B");
|
|
28
|
-
|
|
29
|
-
-- CreateIndex
|
|
30
|
-
CREATE INDEX "_PackToTeam_B_index" ON "_PackToTeam"("B");
|
|
31
|
-
|
|
32
|
-
-- AddForeignKey
|
|
33
|
-
ALTER TABLE "_PackToTeam" ADD CONSTRAINT "_PackToTeam_A_fkey" FOREIGN KEY ("A") REFERENCES "packs"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
34
|
-
|
|
35
|
-
-- AddForeignKey
|
|
36
|
-
ALTER TABLE "_PackToTeam" ADD CONSTRAINT "_PackToTeam_B_fkey" FOREIGN KEY ("B") REFERENCES "teams"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|