Files
folkugat-web/folkugat_web/dal/sql/sessions/conversion.py
2025-03-22 23:06:34 +01:00

43 lines
1.1 KiB
Python

import datetime
from typing import TypedDict
from folkugat_web.model import sessions as model
SessionRowTuple = tuple[int, str, str, str, str | None, str | None, bool]
class SessionRowDict(TypedDict):
id: int | None
date: str
start_time: str
end_time: str
venue_name: str | None
venue_url: str | None
is_live: bool
def session_to_row(sessio: model.Session) -> SessionRowDict:
return {
'id': sessio.id,
'date': sessio.date.isoformat(),
'start_time': sessio.start_time.isoformat(),
'end_time': sessio.end_time.isoformat(),
'venue_name': sessio.venue.name,
'venue_url': sessio.venue.url,
'is_live': sessio.is_live,
}
def row_to_session(row: SessionRowTuple) -> model.Session:
return model.Session(
id=row[0],
date=datetime.date.fromisoformat(row[1]),
start_time=datetime.time.fromisoformat(row[2]),
end_time=datetime.time.fromisoformat(row[3]),
venue=model.SessionVenue(
name=row[4],
url=row[5],
),
is_live=row[6],
)