Prosba z apki 2026-09-02: ulubione strony maja siedziec na gorze zakladki Sites. Po stronie serwera jak reszta ulubionych, bo kod synchronizacji to device_id i tabele kluczowane po nim przechodza na nowe urzadzenie razem. Origin bez klucza obcego (zrodla nie maja tabeli po origin), za to przy dodawaniu sprawdzany w playback_sources, a sam napis ograniczony wzorcem, zeby nie dalo sie wpisac smieci. Migracja 0034 (create table, bez blokad). Sprawdzone TestClientem w kontenerze api: dodanie, powtorne dodanie (created=false), lista w kolejnosci dodania, nieznany origin 404, zly wzorzec 422, usuniecie 204.
25 lines
945 B
Python
25 lines
945 B
Python
"""Ulubione strony (origins), single-user, in-app. Mirror FavoriteStudio struktury.
|
|
|
|
Prosba z apki 2026-09-02: przypiac wybrane strony na gorze zakladki Sites. Po stronie
|
|
serwera, a nie w SecureStore, bo reszta ulubionych tez jest tu i przechodzi na inne
|
|
urzadzenie kodem synchronizacji (kod = device_id). Origin to zwykly napis
|
|
(`tube:hqpornercom`), bez FK: zrodla nie maja tabeli kluczowanej po origin.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import DateTime, String, func
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.models.base import Base
|
|
|
|
|
|
class FavoriteSite(Base):
|
|
__tablename__ = "favorite_sites"
|
|
|
|
device_id: Mapped[str] = mapped_column(String(64), primary_key=True)
|
|
origin: Mapped[str] = mapped_column(String(64), primary_key=True)
|
|
created_at: Mapped[datetime] = mapped_column(
|
|
DateTime(timezone=True), server_default=func.now(), nullable=False
|
|
)
|