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 User(UUIDBase): __tablename__ = "users" # type: ignore[assignment] first_name: Mapped[str] last_name: Mapped[str] created_at: Mapped[datetime] modified_at: Mapped[datetime] class Repository(FilterRepository[User]): model_type = User class Service(service.Service[User]): repository_type = Repository write_config = DTOConfig(exclude={"id"}) UserWriteDTO = SQLAlchemyDTO[Annotated[User, write_config]] UserReadDTO = SQLAlchemyDTO[User]