from typing import Annotated, Optional import sqlalchemy from litestar.contrib.sqlalchemy.base import BigIntBase from litestar.contrib.sqlalchemy.dto import SQLAlchemyDTO from litestar.dto import DTOConfig from sqlalchemy.orm import Mapped, mapped_column from app.domain.enums import FiscalModuleEnum, PaymentTypeEnum from app.lib import service from app.lib.filter_repository import FilterRepository class FiscalPaymentMapping(BigIntBase): __tablename__ = "fiscal_payment_mapping" # type: ignore[assignment] fiscal_module: Mapped[FiscalModuleEnum] = mapped_column( sqlalchemy.Enum(FiscalModuleEnum, name="fiscal_module_enum") ) code: Mapped[str] payment_type: Mapped[PaymentTypeEnum] = mapped_column( sqlalchemy.Enum(PaymentTypeEnum, name="televend_payment_type") ) operation_mode_code: Mapped[int] payment_device_code: Mapped[Optional[int]] class Repository(FilterRepository[FiscalPaymentMapping]): model_type = FiscalPaymentMapping class Service(service.Service[FiscalPaymentMapping]): repository_type = Repository write_config = DTOConfig(exclude={"id"}) FiscalPaymentMappingWriteDTO = SQLAlchemyDTO[ Annotated[FiscalPaymentMapping, write_config] ] FiscalPaymentMappingReadDTO = SQLAlchemyDTO[FiscalPaymentMapping]