mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 00:39:13 +00:00
feat(filters): support partial update (#409)
This commit is contained in:
parent
fa20978d58
commit
3a334121f7
4 changed files with 349 additions and 8 deletions
|
@ -23,6 +23,7 @@ type FilterRepo interface {
|
|||
ListFilters(ctx context.Context) ([]Filter, error)
|
||||
Store(ctx context.Context, filter Filter) (*Filter, error)
|
||||
Update(ctx context.Context, filter Filter) (*Filter, error)
|
||||
UpdatePartial(ctx context.Context, filter FilterUpdate) error
|
||||
ToggleEnabled(ctx context.Context, filterID int, enabled bool) error
|
||||
Delete(ctx context.Context, filterID int) error
|
||||
StoreIndexerConnection(ctx context.Context, filterID int, indexerID int) error
|
||||
|
@ -116,6 +117,70 @@ type Filter struct {
|
|||
Downloads *FilterDownloads `json:"-"`
|
||||
}
|
||||
|
||||
type FilterUpdate struct {
|
||||
ID int `json:"id"`
|
||||
Name *string `json:"name,omitempty"`
|
||||
Enabled *bool `json:"enabled,omitempty"`
|
||||
MinSize *string `json:"min_size,omitempty"`
|
||||
MaxSize *string `json:"max_size,omitempty"`
|
||||
Delay *int `json:"delay,omitempty"`
|
||||
Priority *int32 `json:"priority,omitempty"`
|
||||
MaxDownloads *int `json:"max_downloads,omitempty"`
|
||||
MaxDownloadsUnit *FilterMaxDownloadsUnit `json:"max_downloads_unit,omitempty"`
|
||||
MatchReleases *string `json:"match_releases,omitempty"`
|
||||
ExceptReleases *string `json:"except_releases,omitempty"`
|
||||
UseRegex *bool `json:"use_regex,omitempty"`
|
||||
MatchReleaseGroups *string `json:"match_release_groups,omitempty"`
|
||||
ExceptReleaseGroups *string `json:"except_release_groups,omitempty"`
|
||||
Scene *bool `json:"scene,omitempty"`
|
||||
Origins *[]string `json:"origins,omitempty"`
|
||||
ExceptOrigins *[]string `json:"except_origins,omitempty"`
|
||||
Bonus *[]string `json:"bonus,omitempty"`
|
||||
Freeleech *bool `json:"freeleech,omitempty"`
|
||||
FreeleechPercent *string `json:"freeleech_percent,omitempty"`
|
||||
Shows *string `json:"shows,omitempty"`
|
||||
Seasons *string `json:"seasons,omitempty"`
|
||||
Episodes *string `json:"episodes,omitempty"`
|
||||
Resolutions *[]string `json:"resolutions,omitempty"` // SD, 480i, 480p, 576p, 720p, 810p, 1080i, 1080p.
|
||||
Codecs *[]string `json:"codecs,omitempty"` // XviD, DivX, x264, h.264 (or h264), mpeg2 (or mpeg-2), VC-1 (or VC1), WMV, Remux, h.264 Remux (or h264 Remux), VC-1 Remux (or VC1 Remux).
|
||||
Sources *[]string `json:"sources,omitempty"` // DSR, PDTV, HDTV, HR.PDTV, HR.HDTV, DVDRip, DVDScr, BDr, BD5, BD9, BDRip, BRRip, DVDR, MDVDR, HDDVD, HDDVDRip, BluRay, WEB-DL, TVRip, CAM, R5, TELESYNC, TS, TELECINE, TC. TELESYNC and TS are synonyms (you don't need both). Same for TELECINE and TC
|
||||
Containers *[]string `json:"containers,omitempty"`
|
||||
MatchHDR *[]string `json:"match_hdr,omitempty"`
|
||||
ExceptHDR *[]string `json:"except_hdr,omitempty"`
|
||||
MatchOther *[]string `json:"match_other,omitempty"`
|
||||
ExceptOther *[]string `json:"except_other,omitempty"`
|
||||
Years *string `json:"years,omitempty"`
|
||||
Artists *string `json:"artists,omitempty"`
|
||||
Albums *string `json:"albums,omitempty"`
|
||||
MatchReleaseTypes *[]string `json:"match_release_types,omitempty"` // Album,Single,EP
|
||||
ExceptReleaseTypes *string `json:"except_release_types,omitempty"`
|
||||
Formats *[]string `json:"formats,omitempty"` // MP3, FLAC, Ogg, AAC, AC3, DTS
|
||||
Quality *[]string `json:"quality,omitempty"` // 192, 320, APS (VBR), V2 (VBR), V1 (VBR), APX (VBR), V0 (VBR), q8.x (VBR), Lossless, 24bit Lossless, Other
|
||||
Media *[]string `json:"media,omitempty"` // CD, DVD, Vinyl, Soundboard, SACD, DAT, Cassette, WEB, Other
|
||||
PerfectFlac *bool `json:"perfect_flac,omitempty"`
|
||||
Cue *bool `json:"cue,omitempty"`
|
||||
Log *bool `json:"log,omitempty"`
|
||||
LogScore *int `json:"log_score,omitempty"`
|
||||
MatchCategories *string `json:"match_categories,omitempty"`
|
||||
ExceptCategories *string `json:"except_categories,omitempty"`
|
||||
MatchUploaders *string `json:"match_uploaders,omitempty"`
|
||||
ExceptUploaders *string `json:"except_uploaders,omitempty"`
|
||||
Tags *string `json:"tags,omitempty"`
|
||||
ExceptTags *string `json:"except_tags,omitempty"`
|
||||
TagsAny *string `json:"tags_any,omitempty"`
|
||||
ExceptTagsAny *string `json:"except_tags_any,omitempty"`
|
||||
ExternalScriptEnabled *bool `json:"external_script_enabled,omitempty"`
|
||||
ExternalScriptCmd *string `json:"external_script_cmd,omitempty"`
|
||||
ExternalScriptArgs *string `json:"external_script_args,omitempty"`
|
||||
ExternalScriptExpectStatus *int `json:"external_script_expect_status,omitempty"`
|
||||
ExternalWebhookEnabled *bool `json:"external_webhook_enabled,omitempty"`
|
||||
ExternalWebhookHost *string `json:"external_webhook_host,omitempty"`
|
||||
ExternalWebhookData *string `json:"external_webhook_data,omitempty"`
|
||||
ExternalWebhookExpectStatus *int `json:"external_webhook_expect_status,omitempty"`
|
||||
Actions []*Action `json:"actions,omitempty"`
|
||||
Indexers []Indexer `json:"indexers,omitempty"`
|
||||
}
|
||||
|
||||
func (f Filter) CheckFilter(r *Release) ([]string, bool) {
|
||||
// reset rejections first to clean previous checks
|
||||
r.resetRejections()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue