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
|
package entities
import (
"time"
)
type AnimeTitle struct {
English string `json:"english,omitempty"`
Japanese string `json:"japanese,omitempty"`
Romaji string `json:"romaji,omitempty"`
Synonyms []string `gorm:"serializer:json" json:"synonyms,omitempty"`
}
type AnimeScores struct {
Score float64 `json:"score,omitempty"`
ScoredBy int `json:"scored_by,omitempty"`
Rank int `json:"rank,omitempty"`
Popularity int `json:"popularity,omitempty"`
Members int `json:"members,omitempty"`
Favorites int `json:"favorites,omitempty"`
}
type AnimeImages struct {
Small string `json:"small,omitempty"`
Large string `json:"large,omitempty"`
Original string `json:"original,omitempty"`
}
type AnimeLogos struct {
Small string `json:"small,omitempty"`
Medium string `json:"medium,omitempty"`
Large string `json:"large,omitempty"`
XLarge string `json:"xlarge,omitempty"`
Original string `json:"original,omitempty"`
}
type AnimeBroadcast struct {
Day string `json:"day,omitempty"`
Time string `json:"time,omitempty"`
Timezone string `json:"timezone,omitempty"`
String string `json:"string,omitempty"`
}
type AnimeAired struct {
From *time.Time `json:"from,omitempty"`
To *time.Time `json:"to,omitempty"`
String string `json:"string,omitempty"`
}
type AnimeTrailer struct {
YoutubeID string `json:"youtube_id,omitempty"`
URL string `json:"url,omitempty"`
EmbedURL string `json:"embed_url,omitempty"`
}
type Anime struct {
BaseModel
MALID int `gorm:"uniqueIndex" json:"id"`
MappingID uint `json:"-"`
Synopsis string `gorm:"type:text" json:"synopsis,omitempty"`
Type string `json:"type,omitempty"`
Source string `json:"source,omitempty"`
Airing bool `json:"airing,omitempty"`
Status string `json:"status,omitempty"`
Duration string `json:"duration,omitempty"`
Color string `json:"color,omitempty"`
Season string `json:"season,omitempty"`
Year int `json:"year,omitempty"`
Rating string `json:"rating,omitempty"`
Background string `gorm:"type:text" json:"background,omitempty"`
SubbedCount int `json:"subbed_count,omitempty"`
DubbedCount int `json:"dubbed_count,omitempty"`
TotalEpisodes int `json:"total_episodes,omitempty"`
AiredEpisodes int `json:"aired_episodes,omitempty"`
SeasonNumber int `json:"season_number,omitempty"`
NextAiringAt int `json:"next_airing_at,omitempty"`
NextAiringEpisode int `json:"next_airing_episode,omitempty"`
LastUpdated time.Time `json:"-"`
EnrichedAt *time.Time `json:"-"`
Title AnimeTitle `gorm:"embedded;embeddedPrefix:title_" json:"titles"`
Scores AnimeScores `gorm:"embedded;embeddedPrefix:score_" json:"scores"`
Images AnimeImages `gorm:"embedded;embeddedPrefix:image_" json:"images"`
Covers AnimeImages `gorm:"embedded;embeddedPrefix:cover_" json:"covers"`
Logos AnimeLogos `gorm:"embedded;embeddedPrefix:logo_" json:"logos"`
Broadcast AnimeBroadcast `gorm:"embedded;embeddedPrefix:broadcast_" json:"broadcast"`
Aired AnimeAired `gorm:"embedded;embeddedPrefix:aired_" json:"aired"`
Trailer AnimeTrailer `gorm:"embedded;embeddedPrefix:trailer_" json:"trailer"`
Mapping *Mapping `gorm:"foreignKey:MappingID" json:"mappings,omitempty"`
Genres []Genre `gorm:"many2many:anime_genres;" json:"genres,omitempty"`
Themes []Genre `gorm:"many2many:anime_themes;" json:"themes,omitempty"`
Demographics []Genre `gorm:"many2many:anime_demographics;" json:"demographics,omitempty"`
Seasons []Season `gorm:"foreignKey:ParentAnimeID" json:"seasons,omitempty"`
Producers []Producer `gorm:"many2many:anime_producers;" json:"producers,omitempty"`
Studios []Producer `gorm:"many2many:anime_studios;" json:"studios,omitempty"`
Licensors []Producer `gorm:"many2many:anime_licensors;" json:"licensors,omitempty"`
Episodes []Episode `gorm:"foreignKey:AnimeID" json:"episodes,omitempty"`
Characters []Character `gorm:"-" json:"characters,omitempty"`
Schedule []EpisodeSchedule `gorm:"foreignKey:AnimeID;constraint:OnDelete:CASCADE" json:"airing_schedule,omitempty"`
}
|