* chore: update copyright year in license headers
* Revert "chore: update copyright year in license headers"
This reverts commit 3e58129c431b9a491089ce36b908f9bb6ba38ed3.
* chore: update copyright year in license headers
* fix: sort go imports
* fix: add missing license headers
* feat(filters): skip duplicates
* fix: add interface instead of any
* fix(filters): tonullint
* feat(filters): skip dupes check month day
* chore: cleanup
* feat(db): set autoincrement id
* feat(filters): add repack and proper to dupe profile
* feat(filters): add default dupe profiles
* feat(duplicates): check audio and website
* feat(duplicates): update tests
* feat(duplicates): add toggles on addform
* feat(duplicates): fix sqlite upgrade path and initialize duplicate profiles
* feat(duplicates): simplify sqlite upgrade
avoiding temp table and unwieldy select. Besides, FK constraints
are turned off anyway in #229.
* feat(duplicates): change CheckIsDuplicateRelease treatment of PROPER and REPACK
"Proper" and "Repack" are not parallel to the other conditions like "Title",
so they do not belong as dedup conditions. "PROPER" means there was an issue in
the previous release, and so a PROPER is never a duplicate, even if it replaces
another PROPER. Similarly, "REPACK" means there was an issue in the previous
release by that group, and so it is a duplicate only if we previously took a
release from a DIFFERENT group.
I have not removed Proper and Repack from the UI or the schema yet.
* feat(duplicates): update postgres schema to match sqlite
* feat(duplicates): fix web build errors
* feat(duplicates): fix postgres errors
* feat(filters): do leftjoin for duplicate profile
* fix(filters): partial update dupe profile
* go fmt `internal/domain/filter.go`
* feat(duplicates): restore straightforward logic for proper/repack
* feat(duplicates): remove mostly duplicate TV duplicate profiles
Having one profile seems the cleanest. If somebody wants multiple
resolutions then they can add Resolution to the duplicate profile.
Tested this profile with both weekly episodic releases and daily
show releases.
* feat(release): add db indexes and sub_title
* feat(release): add IsDuplicate tests
* feat(release): update action handler
* feat(release): add more tests for skip duplicates
* feat(duplicates): check audio
* feat(duplicates): add more tests
* feat(duplicates): match edition cut and more
* fix(duplicates): tests
* fix(duplicates): missing imports
* fix(duplicates): tests
* feat(duplicates): handle sub_title edition and language in ui
* fix(duplicates): tests
* feat(duplicates): check name against normalized hash
* fix(duplicates): tests
* chore: update .gitignore to ignore .pnpm-store
* fix: tests
* fix(filters): tests
* fix: bad conflict merge
* fix: update release type in test
* fix: use vendored hot-toast
* fix: release_test.go
* fix: rss_test.go
* feat(duplicates): improve title hashing for unique check
* feat(duplicates): further improve title hashing for unique check with lang
* feat(duplicates): fix tests
* feat(duplicates): add macros IsDuplicate and DuplicateProfile ID and name
* feat(duplicates): add normalized hash match option
* fix: headlessui-state prop warning
* fix(duplicates): add missing year in daily ep normalize
* fix(duplicates): check rejections len
---------
Co-authored-by: ze0s <ze0s@riseup.net>
* feat(qbittorrent): add priority handling
* fix: check if torrent queueing is enabled
* fix: only check for torrent queueing if priority is set
* fix: improve tooltip message
* feat: enable torrent queueing if disabled
* change to SetPreferencesQueueingEnabled
* feat(actions): rename field
* chore: bump pkg go-qbittorrent to v1.8.0
* chore(deps): update go-qbittorrent to v1.8.1
* chore(deps): go mod tidy
---------
Co-authored-by: ze0s <ze0s@riseup.net>
* feat(filters): reflect enabled actions
* dont store release unless enabled action found
* store the release after the delay
* add new parameter to FindByFilterID method
* fix(database): hot fix for deleting filter.
This fixes the no sql row set, no idea why it does that but removing the row check I added fixes it, Not sure if it affects others rowsAffected in the delete function.
* fix: imports
---------
Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
* refactor: this should be Debug() just like the rest.
* feat: catch error when updating client table.
Before if we provided the wrong ID it will just say it's successful when it shouldn't.
* chore: handle the errors.
* fix: defer tx.Rollback().
When I try handling the error we always hit the error no matter what even though there wasn't any error, This is due that defer block being executed unconditionally so even after we commit it successfully it will just give error. So add checking then commit it if all good.
* feat: added testing env.
This way we can use in memory sqlite.
* chore: Delete log should be debug as well.
* feat: enable foreign keys for testing for sqlite.
I recommend enabling all together. Not sure why it's commented but for now will keep it the same and only enable for testing.
* chore: catch error, if deleting a record fails.
* chore: catch error, if deleting a record fails.
* chore: catch error, when failed to enable toggle.
* chore: catch error, if updating failed.
* chore(filter): catch error, if deleting failed.
* chore(filter): catch error, if row is not modified for ToggleEnabled.
* chore(feed): Should be debug level to match with others.
* chore(feed): catch error when nothing is updated.
* chore: update docker-compose.yml add test_db for postgres.
* chore(ci): update include postgres db service before running tests.
* feat(database): Added database testing.
* feat(database): Added api integration testing.
* feat(database): Added action integration testing.
* feat(database): Added download_client integration testing.
* feat(database): Added filter integration testing.
* test(database): initial tests model (WIP)
* chore(feed): handle error when nothing is deleted.
* tests(feed): added delete testing.
* chore(feed): handle error when nothing is updated.
* chore(feed): handle error when nothing is updated.
* chore(feed): handle error when nothing is updated.
* feat(database): Added feed integration testing.
* fix(feed_cache): This should be time.Time not time.Duration.
* chore(feed_cache): handle error when deleting fails.
* feat(database): Added feed_cache integration testing.
* chore: add EOL
* feat: added indexer_test.go
* feat: added mock irc data
* fix: the column is not pass anymore it's password.
* chore: added assertion.
* fix: This is password column not pass test is failing because of it.
* feat: added tests cases for irc.
* feat: added test cases for release.
* feat: added test cases for notifications.
* feat: added Delete to the User DB that way it can be used for testing.
* feat: added user database tests.
* refactor: Make setupLogger and setupDatabase private also renamed them.
Changed the visibility of `setupLogger` to private based on feedback. Also renamed the function to `setupLoggerForTest` and `setupDatabaseForTest` to make its purpose more descriptive.
* fix(database): tests postgres ssl mode disable
* refactor(database): setup and teardown
---------
Co-authored-by: ze0s <43699394+zze0s@users.noreply.github.com>
* fix(filters): store and update
* fix(filters): bad fmt var
* fix(filters): store expect status
* fix(filters): store expect status
* fix(filters): external filter always rejected
* fix(database): build WHERE using squirrel
* flip LIKEs
* change sql.LevelReadCommitted
* feat(db): add missing commits
* implement single query for releases
* cleanup
* feat(releases): properly handle limit for Find
* feat(releases): make dynamic ILike helper
* feat(releases): check for empty ReleaseActionStatus
* add values as sql.NullX
* check if ID is non 0
* feat(releases): improve find