Done
This commit is contained in:
@ -1,15 +1,12 @@
|
||||
from typing import Annotated
|
||||
|
||||
from litestar.contrib.repository import FilterTypes
|
||||
from litestar.contrib.sqlalchemy.base import BigIntBase
|
||||
from litestar.contrib.sqlalchemy.dto import SQLAlchemyDTO
|
||||
from litestar.contrib.sqlalchemy.repository import SQLAlchemyAsyncRepository
|
||||
from litestar.contrib.sqlalchemy.repository.types import SelectT
|
||||
from litestar.dto import DTOConfig
|
||||
from sqlalchemy import true
|
||||
from sqlalchemy.orm import Mapped
|
||||
|
||||
from app.lib import service
|
||||
from app.lib.filter_repository import FilterRepository
|
||||
|
||||
|
||||
class Company(BigIntBase):
|
||||
@ -25,23 +22,15 @@ class Company(BigIntBase):
|
||||
alive: Mapped[bool]
|
||||
|
||||
|
||||
class Repository(SQLAlchemyAsyncRepository[Company]):
|
||||
class Repository(FilterRepository[Company]):
|
||||
model_type = Company
|
||||
|
||||
def _apply_filters(
|
||||
self, *filters: FilterTypes, apply_pagination: bool = True, statement: SelectT
|
||||
) -> SelectT:
|
||||
statement = super()._apply_filters(
|
||||
*filters, apply_pagination=apply_pagination, statement=statement
|
||||
)
|
||||
statement = statement.where(self.model_type.alive == true())
|
||||
return statement
|
||||
alive_flag = "alive"
|
||||
|
||||
|
||||
class Service(service.Service[Company]):
|
||||
repository_type = Repository
|
||||
|
||||
|
||||
write_config = DTOConfig()
|
||||
write_config = DTOConfig(exclude={"id"})
|
||||
CompanyWriteDTO = SQLAlchemyDTO[Annotated[Company, write_config]]
|
||||
CompanyReadDTO = SQLAlchemyDTO[Company]
|
||||
|
||||
@ -2,17 +2,13 @@ from enum import Enum
|
||||
from typing import Annotated, Optional
|
||||
|
||||
import sqlalchemy
|
||||
from litestar.contrib.repository import FilterTypes
|
||||
from litestar.contrib.sqlalchemy.base import BigIntBase
|
||||
from litestar.contrib.sqlalchemy.dto import SQLAlchemyDTO
|
||||
from litestar.contrib.sqlalchemy.repository import SQLAlchemyAsyncRepository
|
||||
from litestar.contrib.sqlalchemy.repository.types import SelectT
|
||||
from litestar.dto import DTOConfig
|
||||
from sqlalchemy import ColumnElement
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.lib import service
|
||||
from app.lib.filters import ExactFilter
|
||||
from app.lib.filter_repository import FilterRepository
|
||||
|
||||
|
||||
class FiscalModuleEnum(str, Enum):
|
||||
@ -52,24 +48,9 @@ class FiscalPaymentMapping(BigIntBase):
|
||||
payment_device_code: Mapped[Optional[int]]
|
||||
|
||||
|
||||
class Repository(SQLAlchemyAsyncRepository[FiscalPaymentMapping]):
|
||||
class Repository(FilterRepository[FiscalPaymentMapping]):
|
||||
model_type = FiscalPaymentMapping
|
||||
|
||||
def _apply_filters(
|
||||
self, *filters: FilterTypes, apply_pagination: bool = True, statement: SelectT
|
||||
) -> SelectT:
|
||||
standard_filters = []
|
||||
for filter_ in filters:
|
||||
if isinstance(filter_, ExactFilter):
|
||||
field: ColumnElement = getattr(self.model_type, filter_.field_name)
|
||||
statement = statement.where(field == filter_.value)
|
||||
else:
|
||||
standard_filters.append(filter_)
|
||||
|
||||
return super()._apply_filters(
|
||||
*standard_filters, apply_pagination=apply_pagination, statement=statement
|
||||
)
|
||||
|
||||
|
||||
class Service(service.Service[FiscalPaymentMapping]):
|
||||
repository_type = Repository
|
||||
|
||||
@ -1,15 +1,12 @@
|
||||
from typing import Annotated
|
||||
|
||||
from litestar.contrib.repository import FilterTypes
|
||||
from litestar.contrib.sqlalchemy.base import BigIntBase
|
||||
from litestar.contrib.sqlalchemy.dto import SQLAlchemyDTO
|
||||
from litestar.contrib.sqlalchemy.repository import SQLAlchemyAsyncRepository
|
||||
from litestar.contrib.sqlalchemy.repository.types import SelectT
|
||||
from litestar.dto import DTOConfig
|
||||
from sqlalchemy import true
|
||||
from sqlalchemy.orm import Mapped
|
||||
|
||||
from app.lib import service
|
||||
from app.lib.company_owned_repository import CompanyOwnedRepository
|
||||
|
||||
|
||||
class Machine(BigIntBase):
|
||||
@ -20,26 +17,19 @@ class Machine(BigIntBase):
|
||||
alive: Mapped[bool]
|
||||
deleted: Mapped[bool]
|
||||
external_id: Mapped[str]
|
||||
owner_id: Mapped[int]
|
||||
|
||||
|
||||
class Repository(SQLAlchemyAsyncRepository[Machine]):
|
||||
class Repository(CompanyOwnedRepository[Machine]):
|
||||
model_type = Machine
|
||||
|
||||
def _apply_filters(
|
||||
self, *filters: FilterTypes, apply_pagination: bool = True, statement: SelectT
|
||||
) -> SelectT:
|
||||
statement = super()._apply_filters(
|
||||
*filters, apply_pagination=apply_pagination, statement=statement
|
||||
)
|
||||
statement = statement.where(self.model_type.alive == true())
|
||||
return statement
|
||||
alive_flag = "alive"
|
||||
company_id_field = "owner_id"
|
||||
|
||||
|
||||
class Service(service.Service[Machine]):
|
||||
repository_type = Repository
|
||||
|
||||
|
||||
# write_config = DTOConfig(exclude={"created_at", "updated_at", "nationality"})
|
||||
write_config = DTOConfig()
|
||||
write_config = DTOConfig(exclude={"id"})
|
||||
MachineWriteDTO = SQLAlchemyDTO[Annotated[Machine, write_config]]
|
||||
MachineReadDTO = SQLAlchemyDTO[Machine]
|
||||
|
||||
Reference in New Issue
Block a user