-
Notifications
You must be signed in to change notification settings - Fork 270
Expand file tree
/
Copy pathschema.prisma
More file actions
139 lines (114 loc) · 3.39 KB
/
schema.prisma
File metadata and controls
139 lines (114 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
relationMode = "prisma"
}
model Account {
id String @id @default(cuid())
userId String
type String
provider String
providerAccountId String
refresh_token String? @db.Text
access_token String? @db.Text
expires_at Int?
token_type String?
scope String?
id_token String? @db.Text
session_state String?
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@unique([provider, providerAccountId])
}
model Session {
id String @id @default(cuid())
sessionToken String @unique
userId String
expires DateTime
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
model User {
id String @id @default(cuid())
name String?
email String? @unique
emailVerified DateTime?
createdSubreddits Subreddit[] @relation("CreatedBy")
username String? @unique
image String?
accounts Account[]
sessions Session[]
Post Post[]
Comment Comment[]
CommentVote CommentVote[]
Vote Vote[]
Subscription Subscription[]
}
model Subreddit {
id String @id @default(cuid())
name String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
posts Post[]
creatorId String?
Creator User? @relation("CreatedBy", fields: [creatorId], references: [id])
subscribers Subscription[]
@@index([name])
}
model Subscription {
user User @relation(fields: [userId], references: [id])
userId String
subreddit Subreddit @relation(fields: [subredditId], references: [id])
subredditId String
@@id([userId, subredditId])
}
model Post {
id String @id @default(cuid())
title String
content Json?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
subreddit Subreddit @relation(fields: [subredittId], references: [id])
subredittId String
author User @relation(fields: [authorId], references: [id])
authorId String
comments Comment[]
votes Vote[]
}
model Comment {
id String @id @default(cuid())
text String
createdAt DateTime @default(now())
author User @relation(fields: [authorId], references: [id])
authorId String
post Post @relation(fields: [postId], references: [id])
postId String
replyToId String?
replyTo Comment? @relation("ReplyTo", fields: [replyToId], references: [id], onDelete: NoAction, onUpdate: NoAction)
replies Comment[] @relation("ReplyTo")
votes CommentVote[]
commentId String?
}
enum VoteType {
UP
DOWN
}
model Vote {
user User @relation(fields: [userId], references: [id])
userId String
post Post @relation(fields: [postId], references: [id])
postId String
type VoteType
@@id([userId, postId])
}
model CommentVote {
user User @relation(fields: [userId], references: [id])
userId String
comment Comment @relation(fields: [commentId], references: [id])
commentId String
type VoteType
@@id([userId, commentId])
}