/
schema.prisma
148 lines (129 loc) · 4.6 KB
/
schema.prisma
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
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id String @id @default(cuid()) @db.VarChar(32)
username String? @unique
email String? @unique
fullname String?
password String?
active Boolean @default(true)
sudo Boolean @default(false)
createdAt DateTime @default(now("0")) @db.DateTime(0)
updatedAt DateTime @default(now("0")) @updatedAt @db.DateTime(0)
showEmail Boolean @default(false)
showFullname Boolean @default(true)
image String?
Tokens Token[]
Files File[]
Letters Letter[]
ResetPasswords ResetPassword[]
Posts Post[]
Likes Like[]
}
model Token {
id String @id @default(cuid()) @db.VarChar(32)
createdAt DateTime @default(now("0")) @db.DateTime(0)
expiredAt DateTime? @db.DateTime(0)
userId String? @db.VarChar(32)
// User - не обязательный объект, так как необходимость сформировать токен
// может быть еще до существования объекта пользователя
User User? @relation(fields: [userId], references: [id])
@@index(createdAt)
}
model File {
id String @id @default(cuid()) @db.VarChar(32)
createdAt DateTime @default(now("0")) @db.DateTime(0)
updatedAt DateTime @default(now("0")) @updatedAt @db.DateTime(0)
path String @db.MediumText
filename String
name String?
mimetype String
encoding String
size Float
rank Int @default(value: 0)
createdById String? @db.VarChar(32)
CreatedBy User? @relation(fields: [createdById], references: [id])
postId String? @db.VarChar(32)
Post Post? @relation(fields: [postId], references: [id])
}
model Letter {
id String @id @default(cuid()) @db.VarChar(32)
createdAt DateTime @default(now("0")) @db.DateTime(0)
updatedAt DateTime @default(now("0")) @updatedAt @db.DateTime(0)
email String @db.MediumText
subject String @db.MediumText
message String @db.MediumText
status LetterStatus @default(value: Created)
errorMessage String? @db.Text
rank Int?
deleteOnSend Boolean @default(value: true)
replyTo String? @db.MediumText
returnTo String? @db.MediumText
createdById String? @db.VarChar(32)
CreatedBy User? @relation(fields: [createdById], references: [id])
@@index([createdById], name: "User")
}
enum LetterStatus {
Created
Processing
Sended
Error
}
model Log {
id String @id @default(cuid()) @db.VarChar(32)
createdAt DateTime @default(now("0")) @db.DateTime(0)
updatedAt DateTime @default(now("0")) @updatedAt @db.DateTime(0)
level LogLevel @default(value: Info)
objectType String? @db.VarChar(32)
message String @db.MediumText
stack String? @db.MediumText
}
enum LogLevel {
Info
Notice
Warning
Error
Fatal
}
model ResetPassword {
id String @id @default(cuid()) @db.VarChar(32)
createdAt DateTime @default(now("0")) @db.DateTime(0)
updatedAt DateTime @default(now("0")) @updatedAt @db.DateTime(0)
code String @db.VarChar(32)
password String
validTill DateTime?
User String @db.VarChar(32)
User_ResetPasswordToUser User @relation(fields: [User], references: [id])
@@index([User], name: "User")
}
model Post {
id String @id @default(cuid()) @db.VarChar(32)
createdAt DateTime @default(now("0")) @db.DateTime(0)
updatedAt DateTime @default(now("0")) @updatedAt @db.DateTime(0)
Mashroom Mashroom? @relation(fields: [mashroomId], references: [id])
mashroomId String? @db.VarChar(32)
title String
text String?
createdById String @db.VarChar(32)
CreatedBy User @relation(fields: [createdById], references: [id])
Likes Like[]
Files File[]
@@index([createdById], name: "User")
}
model Mashroom {
id String @id @default(cuid()) @db.VarChar(32)
name String
Posts Post[]
}
model Like {
id String @id @default(cuid()) @db.VarChar(32)
postId String @db.VarChar(32)
Post Post @relation(fields: [postId], references: [id])
createdById String @db.VarChar(32)
CreatedBy User @relation(fields: [createdById], references: [id])
}