package schema import ( "time" ) type Publisher struct { Base Name string `gorm:"uniqueIndex" json:"name"` WebLink string `json:"weblink"` ParentPublisherID *string `json:"parent_publisher_id"` ParentPublisher *Publisher `gorm:"foreignKey:ParentPublisherID"` Imprints []Publisher `gorm:"foreignKey:ParentPublisherID"` Comics []Comic `gorm:"foreignKey:PublisherID"` } func (publisher *Publisher) TableName() string { return "publisher" } type Comic struct { Base Title string `gorm:"uniqueIndex" json:"title"` CurrentOrder bool `json:"current_order"` Completed bool `json:"completed"` WebLink string `json:"weblink"` PublisherID *string `json:"publisher_id"` Publisher *Publisher `gorm:"foreignKey:PublisherID"` Issues []Issue `gorm:"foreignKey:ComicID"` StoryArcs []StoryArc `gorm:"foreignKey:ComicID"` TradePaperbacks []TradePaperback `gorm:"foreignKey:ComicID"` Volumes []Volume `gorm:"foreignKey:ComicID"` ComicWorks []ComicWork `gorm:"foreignKey:ComicID"` } func (comic *Comic) TableName() string { return "comic" } type Artist struct { Base Name string `gorm:"uniqueIndex" json:"name"` WebLink string `json:"weblink"` } func (artist *Artist) TableName() string { return "artist" } type Issue struct { Base InStock bool `json:"in_stock"` IsRead bool `json:"is_read"` IssueNumber string `json:"issue_number"` Title string `json:"title"` PublishedOn time.Time `json:"published_on"` ComicID *string `json:"comic_id"` Comic *Comic `gorm:"foreignKey:ComicID"` StoryArcID *string `json:"story_arc_id"` StoryArc *StoryArc `gorm:"foreignKey:StoryArcID"` VolumeID *string `json:"volume_id"` Volume *Volume `gorm:"foreignKey:VolumeID"` } func (issue *Issue) TableName() string { return "issue" } type StoryArc struct { Base Name string `gorm:"uniqueIndex" json:"name"` ComicID *string `json:"comic_id"` Comic *Comic `gorm:"foreignKey:ComicID"` VolumeID *string `json:"volume_id"` Volume *Volume `gorm:"foreignKey:VolumeID"` } func (story_arc *StoryArc) TableName() string { return "story_arc" } type TradePaperback struct { Base Name string `gorm:"uniqueIndex" json:"name"` IssueStart int `json:"issue_start"` IssueEnd int `json:"issue_end"` ComicID *string `json:"comic_id"` Comic *Comic `gorm:"foreignKey:ComicID"` } func (trade_paperback *TradePaperback) TableName() string { return "trade_paperback" } type Volume struct { Base Name string `gorm:"uniqueIndex" json:"name"` ComicID *string `json:"comic_id"` Comic *Comic `gorm:"foreignKey:ComicID"` } func (volume *Volume) TableName() string { return "volume" } type WorkType struct { Base Name string `gorm:"uniqueIndex" json:"name"` } func (worktype *WorkType) TableName() string { return "worktype" } type ComicWork struct { Base ArtistID *string `json:"artist_id"` Artist *Artist `gorm:"foreignKey:ArtistID"` ComicID *string `json:"comic_id"` Comic *Comic `gorm:"foreignKey:ComicID"` WorkTypeID *string `json:"work_type_id"` WorkType *WorkType `gorm:"foreignKey:WorkTypeID"` } func (comic_work *ComicWork) TableName() string { return "comic_work" } type IssueWork struct { Base ArtistID *string `json:"artist_id"` Artist *Artist `gorm:"foreignKey:ArtistID"` IssueID *string `json:"issue_id"` Issue *Issue `gorm:"foreignKey:IssueID"` WorkTypeID *string `json:"work_type_id"` WorkType *WorkType `gorm:"foreignKey:WorkTypeID"` } func (issue_work *IssueWork) TableName() string { return "issue_work" }