-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathschema.prisma
More file actions
164 lines (150 loc) · 4.77 KB
/
schema.prisma
File metadata and controls
164 lines (150 loc) · 4.77 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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model User {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
email String @unique(map: "User.email_unique")
name String?
phoneNumber String?
telegram String?
instagram String?
role String
courses Course[]
contents Content[]
consumptions Consumption[]
subscriptions Subscription[] @relation("UserSubscriptions")
subscribers Subscription[] @relation("UserSubscribers")
transactions Transaction[] @relation("UserTransactions")
sales Transaction[] @relation("UserSales")
}
model Subscription {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
authorId String
courseId String
status String
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
user User @relation("UserSubscriptions", fields: [userId], references: [id], onDelete: Cascade)
author User @relation("UserSubscribers", fields: [authorId], references: [id], onDelete: Cascade)
}
model Course {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
authorId String
name String
description String
price Int
image String
category String
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
subscriptions Subscription[]
transactions Transaction[]
chapters Chapter[]
contents Content[]
consumptions Consumption[]
}
model Transaction {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
courseId String
authorId String
bankName String
bankAccountNumber String
bankAccountName String
amount Int
datetime DateTime?
status String
notes String?
user User @relation("UserTransactions", fields: [userId], references: [id], onDelete: Cascade)
author User @relation("UserSales", fields: [authorId], references: [id], onDelete: Cascade)
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
}
model Chapter {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
courseId String
name String
order Int
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
lessons Lesson[]
}
model Lesson {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
chapterId String
name String
description String?
videoId String
order Int
chapter Chapter @relation(fields: [chapterId], references: [id], onDelete: Cascade)
attachments Attachment[]
}
model Attachment {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
name String
url String
lessonId String
lesson Lesson @relation(fields: [lessonId], references: [id], onDelete: Cascade)
}
model Content {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
authorId String
courseId String
slug String
name String
description String
type String
content String
order Int @default(0)
author User @relation(fields: [authorId], references: [id], onDelete: Cascade)
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
consumptions Consumption[]
@@unique([courseId, slug])
}
model Consumption {
id String @id
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
userId String
contentId String
courseId String
progress Int @default(0)
status String @default("PRISTINE")
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
content Content @relation(fields: [contentId], references: [id], onDelete: Cascade)
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
@@unique([userId, contentId])
}
model AuditLog {
id String @id
createdAt DateTime @default(now())
userId String?
action String
entityType String
entityId String
oldValue String?
newValue String?
metadata String?
ipAddress String?
userAgent String?
@@index([entityType, entityId])
@@index([userId])
@@index([createdAt])
}