Add models in the autosync module

This commit is contained in:
Zoe Roux 2024-03-20 19:35:18 +01:00
parent 1f3a985d3a
commit 31d8dcd6a8
No known key found for this signature in database
6 changed files with 103 additions and 0 deletions

View File

@ -0,0 +1,10 @@
from typing import Literal
from dataclasses import dataclass
from .metadataid import MetadataID
@dataclass
class Episode:
external_id: dict[str, MetadataID]
kind: Literal["episode"]

View File

@ -0,0 +1,8 @@
from dataclasses import dataclass
from typing import Optional
@dataclass
class MetadataID:
data_id: str
link: Optional[str]

View File

@ -0,0 +1,17 @@
from typing import Literal, Optional
from datetime import date
from dataclasses import dataclass
from .metadataid import MetadataID
@dataclass
class Movie:
name: str
air_date: Optional[date]
external_id: dict[str, MetadataID]
kind: Literal["movie"]
@property
def year(self):
return self.air_date.year if self.air_date is not None else None

View File

@ -0,0 +1,17 @@
from typing import Literal, Optional
from datetime import date
from dataclasses import dataclass
from .metadataid import MetadataID
@dataclass
class Show:
name: str
start_air: Optional[date]
external_id: dict[str, MetadataID]
kind: Literal["show"]
@property
def year(self):
return self.start_air.year if self.start_air is not None else None

View File

@ -0,0 +1,30 @@
from datetime import datetime, time
from dataclasses import dataclass
from typing import Optional
@dataclass
class JwtToken:
token_type: str
access_token: str
refresh_token: str
expire_in: time
expire_at: datetime
@dataclass
class ExternalToken:
id: str
username: str
profileUrl: Optional[str]
token: JwtToken
@dataclass
class User:
id: str
username: str
email: str
permissions: list[str]
settings: dict[str, str]
external_id: dict[str, ExternalToken]

View File

@ -0,0 +1,21 @@
from datetime import date
from dataclasses import dataclass
from typing import Optional
from enum import Enum
class Status(str, Enum):
COMPLETED = "completed"
WATCHING = "watching"
DROPED = "droped"
PLANNED = "planned"
DELETED = "deleted"
@dataclass
class WatchStatus:
added_date: date
played_date: date
status: Status
watched_time: Optional[int]
watched_percent: Optional[int]