from datetime import datetime from typing import Annotated from litestar.contrib.sqlalchemy.base import UUIDAuditBase 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(UUIDAuditBase): __tablename__ = "cities" # type: ignore[assignment] name: Mapped[str] postal_code: Mapped[str] created_at: Mapped[datetime] updated_at: Mapped[datetime] class Repository(FilterRepository[City]): model_type = City class Service(service.Service[City]): repository_type = Repository write_config = DTOConfig(exclude={"id", "created_at", "updated_at"}) CityWriteDTO = SQLAlchemyDTO[Annotated[City, write_config]] CityReadDTO = SQLAlchemyDTO[City]