"""Cursor pagination yardımcısı."""
from base64 import urlsafe_b64decode, urlsafe_b64encode
from dataclasses import dataclass


def encode_cursor(value: str) -> str:
    return urlsafe_b64encode(value.encode()).decode()


def decode_cursor(cursor: str | None) -> str | None:
    if not cursor:
        return None
    try:
        return urlsafe_b64decode(cursor.encode()).decode()
    except Exception:
        return None


@dataclass
class Page:
    items: list
    next_cursor: str | None
    has_more: bool
    limit: int

    def meta(self) -> dict:
        return {
            "next_cursor": self.next_cursor,
            "has_more": self.has_more,
            "limit": self.limit,
        }
