refactor(services): shared pagination cursor (DRY sweep)
CI / lint (push) Successful in 3s
CI / frontend-build (push) Successful in 22s
CI / backend-lint-and-test (push) Successful in 43s
CI / integration (push) Successful in 3m21s

encode_cursor/decode_cursor (base64 <iso8601>|<id>) were defined identically in
gallery_service AND post_feed_service, with artist_service importing gallery's
copy. Two implementations of one cursor format silently break pagination in
whichever feed drifts. Extract to services/pagination.py; gallery/post_feed/
artist all import it. Dropped now-unused base64/datetime imports.

§8b: encode_cursor/decode_cursor now defined only in pagination.py. Existing
cursor round-trip tests still cover it via the re-export. Catalog updated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-10 00:10:57 -04:00
parent f1a664e5a7
commit 074c5868fb
4 changed files with 38 additions and 40 deletions
+2 -1
View File
@@ -24,7 +24,8 @@ from ..models import (
from ..models.tag import image_tag
from ..utils.slug import slugify
from .db_helpers import get_or_create
from .gallery_service import decode_cursor, encode_cursor, thumbnail_url
from .gallery_service import thumbnail_url
from .pagination import decode_cursor, encode_cursor
@dataclass(frozen=True)