Skip to content

Commit 64b6f52

Browse files
feat: Create AnonymousUser model and connect to Project
1 parent 188e9a8 commit 64b6f52

10 files changed

Lines changed: 2627 additions & 281 deletions

File tree

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
"test": "jest --watch",
1414
"build:prod": "next build && next export",
1515
"prisma": "prisma",
16-
"studio": "prisma studio",
1716
"migrate": "prisma migrate dev --name",
18-
"db:push": "prisma db push",
19-
"db:studio": "prisma studio",
20-
"db:generate": "prisma generate",
21-
"db:seed": "prisma db seed",
22-
"db:reset": "prisma migrate reset --force"
17+
"status": "prisma migrate status",
18+
"push": "prisma db push",
19+
"generate": "prisma generate",
20+
"studio": "prisma studio",
21+
"seed": "prisma db seed",
22+
"reset": "prisma migrate reset --force"
2323
},
2424
"dependencies": {
2525
"@prisma/client": "^6.7.0",
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-- AlterTable
2+
ALTER TABLE "Project" ADD COLUMN "anonymousUserId" TEXT;
3+
4+
-- AlterTable
5+
ALTER TABLE "Script" ADD COLUMN "anonymousUserId" TEXT;
6+
7+
-- AlterTable
8+
ALTER TABLE "Voice" ADD COLUMN "anonymousUserId" TEXT;
9+
10+
-- CreateTable
11+
CREATE TABLE "AnonymousUser" (
12+
"id" TEXT NOT NULL,
13+
"joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
14+
"updatedAt" TIMESTAMP(3) NOT NULL,
15+
"expiresAt" TIMESTAMP(3),
16+
17+
CONSTRAINT "AnonymousUser_pkey" PRIMARY KEY ("id")
18+
);
19+
20+
-- AddForeignKey
21+
ALTER TABLE "Project" ADD CONSTRAINT "Project_anonymousUserId_fkey" FOREIGN KEY ("anonymousUserId") REFERENCES "AnonymousUser"("id") ON DELETE SET NULL ON UPDATE CASCADE;
22+
23+
-- AddForeignKey
24+
ALTER TABLE "Script" ADD CONSTRAINT "Script_anonymousUserId_fkey" FOREIGN KEY ("anonymousUserId") REFERENCES "AnonymousUser"("id") ON DELETE SET NULL ON UPDATE CASCADE;
25+
26+
-- AddForeignKey
27+
ALTER TABLE "Voice" ADD CONSTRAINT "Voice_anonymousUserId_fkey" FOREIGN KEY ("anonymousUserId") REFERENCES "AnonymousUser"("id") ON DELETE SET NULL ON UPDATE CASCADE;

prisma/schema.prisma

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ model User {
2929
voices Voice[]
3030
}
3131

32+
model AnonymousUser {
33+
// This model is used to store users who are not logged in
34+
id String @id @default(uuid())
35+
joinedAt DateTime @default(now())
36+
updatedAt DateTime @updatedAt
37+
expiresAt DateTime?
38+
39+
projects Project[]
40+
scripts Script[]
41+
voices Voice[]
42+
}
43+
3244
model Project {
3345
id String @id @default(uuid())
3446
username String @unique
@@ -38,9 +50,11 @@ model Project {
3850
updatedAt DateTime @updatedAt
3951
deletedAt DateTime?
4052
userId String
41-
53+
anonymousUserId String?
54+
4255
user User @relation(fields: [userId], references: [id])
43-
56+
anonymousUser AnonymousUser? @relation(fields: [anonymousUserId], references: [id]) // Foreign key relation
57+
4458
scripts Script[]
4559
}
4660

@@ -56,10 +70,13 @@ model Script {
5670
userId String
5771
projectId String
5872
voicesId String? // Optional, because not every script might have a voice
73+
anonymousUserId String? // Optional reference to AnonymousUser
74+
5975
user User @relation(fields: [userId], references: [id])
6076
project Project @relation(fields: [projectId], references: [id])
6177
voices Voice? @relation(fields: [voicesId], references: [id])
6278
// voices Voice[] @relation("ScriptVoices") - many-to-many relation
79+
anonymousUser AnonymousUser? @relation(fields: [anonymousUserId], references: [id])
6380
}
6481

6582
model Voice {
@@ -69,9 +86,11 @@ model Voice {
6986
createdAt DateTime @default(now())
7087
deletedAt DateTime?
7188
userId String
89+
anonymousUserId String? // Optional reference to AnonymousUser
7290
7391
user User @relation(fields: [userId], references: [id])
74-
script Script[]
92+
anonymousUser AnonymousUser? @relation(fields: [anonymousUserId], references: [id])
7593
94+
script Script[]
7695
// script Script[] @relation("ScriptVoices") // many-to-many relation
7796
}

src/lib/prisma/edge.js

Lines changed: 19 additions & 7 deletions
Large diffs are not rendered by default.

src/lib/prisma/index-browser.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,13 @@ exports.Prisma.UserScalarFieldEnum = {
129129
updatedAt: 'updatedAt'
130130
};
131131

132+
exports.Prisma.AnonymousUserScalarFieldEnum = {
133+
id: 'id',
134+
joinedAt: 'joinedAt',
135+
updatedAt: 'updatedAt',
136+
expiresAt: 'expiresAt'
137+
};
138+
132139
exports.Prisma.ProjectScalarFieldEnum = {
133140
id: 'id',
134141
username: 'username',
@@ -137,7 +144,8 @@ exports.Prisma.ProjectScalarFieldEnum = {
137144
createdAt: 'createdAt',
138145
updatedAt: 'updatedAt',
139146
deletedAt: 'deletedAt',
140-
userId: 'userId'
147+
userId: 'userId',
148+
anonymousUserId: 'anonymousUserId'
141149
};
142150

143151
exports.Prisma.ScriptScalarFieldEnum = {
@@ -150,7 +158,8 @@ exports.Prisma.ScriptScalarFieldEnum = {
150158
deletedAt: 'deletedAt',
151159
userId: 'userId',
152160
projectId: 'projectId',
153-
voicesId: 'voicesId'
161+
voicesId: 'voicesId',
162+
anonymousUserId: 'anonymousUserId'
154163
};
155164

156165
exports.Prisma.VoiceScalarFieldEnum = {
@@ -159,7 +168,8 @@ exports.Prisma.VoiceScalarFieldEnum = {
159168
metadata: 'metadata',
160169
createdAt: 'createdAt',
161170
deletedAt: 'deletedAt',
162-
userId: 'userId'
171+
userId: 'userId',
172+
anonymousUserId: 'anonymousUserId'
163173
};
164174

165175
exports.Prisma.SortOrder = {
@@ -180,6 +190,7 @@ exports.Prisma.NullsOrder = {
180190

181191
exports.Prisma.ModelName = {
182192
User: 'User',
193+
AnonymousUser: 'AnonymousUser',
183194
Project: 'Project',
184195
Script: 'Script',
185196
Voice: 'Voice'

0 commit comments

Comments
 (0)