mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-14 05:06:16 -08:00
fix(portals): clear a playlist's pins by playlist, not by key list
Restoring over a playlist reused the keyed clear, which caps its input at MAX_KEYS_PER_LOOKUP to bound an IN clause. A playlist with more than eight pinned movies therefore kept the surplus while the call still reported success, and the restore then wrote the archive's pins on top — leaving the union of two states, which is neither the one the user asked for. Clearing is now a dedicated delete-by-playlist operation with no key list to truncate, and it refuses a blank playlist id rather than deleting everything. A failure fails the entry instead of being swallowed: `listForPlaylist` returns `[]` on error and `clear` returns `false`, so ignoring the result made a failed read indistinguishable from "there was nothing to clear". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3fa7007592
commit
e0ebbeafed
14 files changed
+162
-9
No files matched your search
@@ -162,6 +162,12 @@ worker IPC boundary in the snake_case wire shape declared by
|
||||
`XCategoryFromDb`/`XtreamCategoryFromDb`; the category operations project
|
||||
their Drizzle rows explicitly to keep that contract true.
|
||||
|
||||
Clearing the playlist's existing pins goes through a dedicated
|
||||
delete-by-playlist operation, not the keyed clear: that one caps its key list
|
||||
to bound an IN clause, so a playlist with more pinned movies than the cap kept
|
||||
the surplus while still reporting success. A failure now fails the entry
|
||||
rather than leaving the union of old and archived pins.
|
||||
|
||||
`sourcePins` (VOD multi-source) is the one **optional** collection, and the
|
||||
normalizer preserves that: an absent field stays absent rather than becoming
|
||||
`[]`, because restore treats a PRESENT collection as authoritative and clears
|
||||
|
||||
Reference in new issue
Block a user