-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.shema
108 lines (92 loc) · 2.2 KB
/
db.shema
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
// https://dbdiagram.io/
Table users {
id integer [primary key]
username varchar
email varchar
}
Table folder {
id integer [pk]
name varchar
created_at datetime
user_id integer
}
Table file {
id integer [pk]
name varchar
size integer // (in bytes)
created datetime
type_id integer
user_id integer
folder_id integer
}
Table fileType {
id integer [primary key]
name varchar
}
Table sharedFolder {
id integer [pk]
folder_id integer
user_id integer
}
Table sharedFiles {
id integer [pk]
folder_id integer
user_id integer
}
ref: users.id < folder.user_id
ref: users.id < file.user_id
ref: folder.id < file.user_id
ref: file.type_id > fileType.id
ref: sharedFolder.folder_id > folder.id
ref: sharedFolder.folder_id > users.id
ref: sharedFiles.folder_id > folder.id
ref: sharedFiles.folder_id > users.id
model Users {
id Int @id @default(autoincrement())
username String
email String
folders Folder[]
files File[]
sharedFolders SharedFolder[]
sharedFiles SharedFile[]
}
model Folder {
id Int @id @default(autoincrement())
name String
created_at DateTime
owner_id Int
owner Users @relation(fields: [owner_id], references: [id])
files File[]
}
model File {
id Int @id @default(autoincrement())
name String
size_bytes Int
created_at DateTime
type_id Int
owner_id Int
folder_id Int
owner Users @relation(fields: [owner_id], references: [id])
folder Folder @relation(fields: [folder_id], references: [id])
type FileType @relation(fields: [type_id], references: [id])
sharedFiles SharedFile[]
}
model FileType {
id Int @id @default(autoincrement())
name String
files File[]
}
model SharedFolder {
id Int @id @default(autoincrement())
folder_id Int
user_id Int
folder Folder @relation(fields: [folder_id], references: [id])
user Users @relation(fields: [user_id], references: [id])
}
model SharedFile {
id Int @id @default(autoincrement())
file_id Int
user_id Int
file File @relation(fields: [file_id], references: [id])
user Users @relation(fields: [user_id], references: [id])
}