from datetime import datetime from typing import Annotated from litestar.contrib.sqlalchemy.base import UUIDBase from litestar.contrib.sqlalchemy.dto import SQLAlchemyDTO from litestar.dto import DTOConfig from sqlalchemy.orm import Mapped from app.lib import service from app.lib.filter_repository import FilterRepository class City(UUIDBase): __tablename__ = "cities" # type: ignore[assignment] name: Mapped[str] postal_code: Mapped[str] created_at: Mapped[datetime] modified_at: Mapped[datetime] class Repository(FilterRepository[City]): model_type = City class Service(service.Service[City]): repository_type = Repository write_config = DTOConfig(exclude={"id"}) CityWriteDTO = SQLAlchemyDTO[Annotated[City, write_config]] CityReadDTO = SQLAlchemyDTO[City]