-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdatabase_structure.dbml
425 lines (361 loc) · 5.95 KB
/
database_structure.dbml
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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
// FandomHub - Database Structure
// Utils App
Table BaseModel {
id uuid [pk]
is_available bool
updated_at datetime
created_at datetime
}
Table Picture {
id uuid [pk]
content_type FK
object_id uuid
content_object GFK
image image
}
Table Video {
id uuid [pk]
content_type FK
object_id uuid
content_object GFK
video url
}
// Anime App
Table Broadcast {
id uuid [pk]
string varchar
day varchar
time time
timezone varchar
}
Table Anime {
id uuid [pk]
slug slug
name varchar
name_jpn varchar
name_rom varchar
alternative_names json
image image
trailer url
synopsis text
background text
season varchar
year int
broadcast_id FK
media_type varchar
source varchar
episodes int
status varchar
aired_from date
aired_to date
producers M2M
licensors_id FK
studio_id FK
genres M2M
themes M2M
duration time
rating varchar
website url
is_recommended bool
score float
ranked int
popularity int
members int
favorites int
}
Table AnimeStats {
id uuid [pk]
anime_id O2O
watching int
completed int
on_hold int
dropped int
plan_to_watch int
total int
}
// Characters App
Table Character {
id uuid [pk]
slug slug
name varchar
name_kanji varchar
about text
role varchar
image image
voices M2M
animes M2M
mangas M2M
favorites int
}
Table CharacterVoice {
id uuid [pk]
character_id FK
voice_id FK
}
Table CharacterAnime {
id uuid [pk]
character_id FK
anime_id FK
}
Table CharacterManga {
id uuid [pk]
character_id FK
manga_id FK
}
// Clubs App
Table Club {
id uuid [pk]
name varchar
description text
image image
category varchar
members int
created_by O2O
is_public bool
}
Table ClubMember {
id uuid [pk]
club_id FK
user_id FK
joined_at datetime
}
Table Event {
id uuid [pk]
club_id FK
name varchar
description text
date datetime
}
Table Topic {
id uuid [pk]
name varchar
club_id FK
created_by FK
}
Table Discussion {
id uuid [pk]
topic_id FK
content text
created_by FK
}
// Genres App
Table Genre {
id uuid [pk]
name varchar
}
Table Theme {
id uuid [pk]
name varchar
}
Table Demographic {
id uuid [pk]
name varchar
}
// Mangas App
Table Magazine {
id uuid [pk]
name varchar
count int
}
Table Manga {
id uuid [pk]
slug slug
name varchar
name_jpn varchar
name_rom varchar
alternative_names json
image image
synopsis text
background text
media_type varchar
chapters int
volumes int
status varchar
published_from date
published_to date
genres M2M
themes M2M
demographic_id FK
serialization_id FK
author_id FK
website url
is_recommended bool
score float
ranked int
popularity int
members int
favorites int
}
Table MangaStats {
id uuid [pk]
manga_id O2O
reading int
completed int
on_hold int
dropped int
plan_to_read int
total int
}
// News App
Table News {
id uuid [pk]
slug slug
name varchar
description text
content text
image image
source url
tag varchar
anime_relations M2M
manga_relations M2M
author_id FK
}
// Persons App
Table Person {
id uuid [pk]
slug slug
name varchar
given_name varchar
family_name varchar
image image
alternate_names json
birthday date
about text
website url
language varchar
category varchar
favorites int
}
Table StaffAnime {
id uuid [pk]
person_id FK
anime_id FK
}
// Playlists App
Table AnimeList {
id uuid [pk]
user_id FK
banner image
is_public bool
}
Table AnimeListItem {
id uuid [pk]
animelist_id FK
anime_id FK
status varchar
episodes_watched int
score int
start_date date
finish_date date
tags json
priority varchar
storage varchar
times_rewatched int
notes text
order int
is_watched bool
is_favorite bool
}
Table MangaList {
id uuid [pk]
user_id FK
banner image
is_public bool
}
Table MangaListItem {
id uuid [pk]
mangalist_id FK
manga_id FK
status varchar
volumes_read int
chapters_read int
score int
start_date date
finish_date date
tags json
priority varchar
storage varchar
times_reread int
notes text
order int
is_read bool
is_favorite bool
}
// Producers App
Table Producer {
id uuid [pk]
name varchar
name_jpn varchar
about text
established varchar
type varchar
image image
favorites int
}
// Profiles App
Table Profile {
id uuid [pk]
user_id O2O
first_name varchar
last_name varchar
birth_date date
bio text
image image
cover image
}
// Reviews App
Table Review {
id uuid [pk]
user_id FK
content_type FK
object_id uuid
content_object GFK
rating int
comment text
is_spoiler bool
helpful_count int
reported_count int
}
// Users App
Table User {
id uuid [pk]
email email
username varchar
role varchar
is_online bool
is_active bool
is_staff bool
created_at datetime
updated_at datetime
}
// Relations
Ref: Anime.broadcast_id < Broadcast.id
Ref: Anime.licensors_id < Producer.id
Ref: Anime.studio_id < Producer.id
Ref: AnimeStats.anime_id < Anime.id
Ref: CharacterVoice.character_id < Character.id
Ref: CharacterVoice.voice_id < Person.id
Ref: CharacterManga.character_id < Character.id
Ref: CharacterManga.manga_id < Manga.id
Ref: Club.created_by < User.id
Ref: ClubMember.club_id < Club.id
Ref: ClubMember.user_id < User.id
Ref: Event.club_id < Club.id
Ref: Topic.club_id < Club.id
Ref: Topic.created_by < User.id
Ref: Discussion.topic_id < Topic.id
Ref: Discussion.created_by < User.id
Ref: Manga.demographic_id < Demographic.id
Ref: Manga.serialization_id < Producer.id
Ref: Manga.author_id < Person.id
Ref: MangaStats.manga_id < Manga.id
Ref: News.author_id < User.id
Ref: StaffAnime.person_id < Person.id
Ref: StaffAnime.anime_id < Anime.id
Ref: AnimeList.user_id < User.id
Ref: AnimeListItem.animelist_id < AnimeList.id
Ref: AnimeListItem.anime_id < Anime.id
Ref: MangaList.user_id < User.id
Ref: MangaListItem.mangalist_id < MangaList.id
Ref: MangaListItem.manga_id < Manga.id
Ref: Profile.user_id < User.id