package source const ( StatusUnknown = 0 StatusOngoing = 1 StatusCompleted = 2 StatusLicensed = 3 StatusHiatus = 5 StatusCancelled = 6 ) type SManga struct { URL string Title string Artist string Author string Description string Genre string // comma-separated Status int ThumbnailURL string Initialized bool } type SChapter struct { URL string Name string DateUpload int64 // unix milliseconds ChapterNumber float32 Scanlator string } type Page struct { Index int URL string ImageURL string } type MangasPage struct { Mangas []SManga HasNextPage bool } // Filter interface type Filter interface { Name() string Value() any } // TextFilter — free-text input type TextFilter struct { FilterName string Text string } func (f *TextFilter) Name() string { return f.FilterName } func (f *TextFilter) Value() any { return f.Text } // CheckboxFilter — boolean type CheckboxFilter struct { FilterName string State bool } func (f *CheckboxFilter) Name() string { return f.FilterName } func (f *CheckboxFilter) Value() any { return f.State } // TriStateFilter — 0=ignore, 1=include, 2=exclude type TriStateFilter struct { FilterName string State int } func (f *TriStateFilter) Name() string { return f.FilterName } func (f *TriStateFilter) Value() any { return f.State } // SelectFilter — dropdown type SelectFilter struct { FilterName string Values []string Selected int } func (f *SelectFilter) Name() string { return f.FilterName } func (f *SelectFilter) Value() any { return f.Selected } // SortFilter type SortSelection struct { Index int Ascending bool } type SortFilter struct { FilterName string Values []string Selection SortSelection } func (f *SortFilter) Name() string { return f.FilterName } func (f *SortFilter) Value() any { return f.Selection } // GroupFilter — container of sub-filters type GroupFilter struct { FilterName string Filters []Filter } func (f *GroupFilter) Name() string { return f.FilterName } func (f *GroupFilter) Value() any { return f.Filters }