Files
ohm_streaming/app/models/AGENTS.md
T
root 3dc5dd8fe9
CI / Test (Python 3.11) (push) Has been cancelled
CI / Test (Python 3.12) (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Summary (push) Has been cancelled
feat: fix auth, provider health checks, search, and redesign UI
- Fix register/login: dict-style access on UserTable ORM objects
- Fix HTMX auth: inject JWT token in all HTMX request headers
- Fix FS7 search: use DLE AJAX endpoint /engine/ajax/search.php
- Fix ZT search: use ?p=series&search=QUERY (not DLE format)
- Fix provider health: load hardcoded providers + domain manager
- Add self.id to all anime/series providers
- Redesign homepage: Netflix-style horizontal scroll cards (.hc)
- Redesign search results: grouped by title, poster + synopsis + 3 buttons
- Add Télécharger dropdown: season download + episode picker
- Fix navbar CSS: restore .tabs flex layout, remove orphan rules
- Fix HTMX spinner: remove inline display:none, use CSS indicator
- Add AGENTS.md files across project for developer documentation
2026-03-28 00:14:31 +00:00

2.1 KiB

Models (app/models/)

OVERVIEW

SQLModel/Pydantic models combining database tables (SQLModel) and API schemas (Pydantic). Each domain has a Base → Table → Schema pattern.

STRUCTURE

models/
├── __init__.py        # Core: DownloadStatus, DownloadTask, DownloadRequest, AnimeMetadata, AnimeSearchResult
├── auth.py            # User, UserCreate, UserLogin, Token, UserTable, UserInDB
├── watchlist.py       # WatchlistItem, WatchlistSettings, AutoDownloadResult (+ Table variants)
├── sonarr.py          # SonarrWebhookPayload, SonarrMapping, SonarrConfig, SonarrSeries (+ Table variants)
├── favorites.py       # Favorites-related models
└── settings.py        # AppSettings, AppSettingsUpdate (+ Table variant)

WHERE TO LOOK

Need File Key Classes
Download task __init__.py DownloadTask, DownloadStatus, DownloadRequest
Anime metadata __init__.py AnimeMetadata, AnimeSearchResult
User/auth auth.py User, UserCreate, UserLogin, Token, UserTable
Watchlist watchlist.py WatchlistItem, WatchlistSettings, WatchlistItemTable
Sonarr sonarr.py SonarrWebhookPayload, SonarrMapping, SonarrConfig, SonarrSeries
App settings settings.py AppSettings, AppSettingsUpdate

CONVENTIONS

Triple-class pattern (for DB-backed models):

  1. *Base — Pydantic base with shared fields
  2. *Table — SQLModel table class (__tablename__, id, FK columns)
  3. Final class — API schema (inherits from both, adds Config)

Enums: PascalCase class, UPPER_SNAKE values (e.g., DownloadStatus.PENDING, WatchlistStatus.ACTIVE).

JSON columns: Stored as JSON strings in SQLite, accessed via @property methods (e.g., WatchlistItemTable.genres parses genres_json).

Config classes: Each API schema has class Config: from_attributes = True for ORM mode.

ANTI-PATTERNS

  • Do NOT add new fields to *Base without updating corresponding *Table and schema classes
  • Do NOT use Optional for required API fields — use Pydantic defaults
  • Empty except: in settings.py:22 — known tech debt