mirror of
https://github.com/beak-insights/felicity-lims.git
synced 2025-02-25 01:13:01 +08:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from felicity.apps.worksheet.entities import WorkSheet, WorkSheetTemplate
|
|
import sqlalchemy as sa
|
|
|
|
from felicity.database.paging import PageCursor
|
|
from felicity.apps.abstract.repository import BaseRepository
|
|
|
|
|
|
class WorkSheetRepository(BaseRepository[WorkSheet]):
|
|
def __init__(self) -> None:
|
|
super().__init__(WorkSheet)
|
|
|
|
async def paginate_with_cursors(
|
|
self,
|
|
page_size: int | None = None,
|
|
after_cursor: str | None = None,
|
|
before_cursor: str | None = None,
|
|
text: str | None = None,
|
|
status: str | None = None,
|
|
sort_by: list[str] | None = None,
|
|
) -> PageCursor:
|
|
pass
|
|
|
|
filters = []
|
|
|
|
_or_text_ = {}
|
|
if text:
|
|
arg_list = [
|
|
"state__ilike",
|
|
"worksheet_id__ilike",
|
|
"analyst___first_name__ilike",
|
|
"analyst___last_name__ilike",
|
|
"analyst___auth___user_name__ilike",
|
|
]
|
|
for _arg in arg_list:
|
|
_or_text_[_arg] = f"%{text}%"
|
|
|
|
text_filters = {sa.or_: _or_text_}
|
|
filters.append(text_filters)
|
|
|
|
if status:
|
|
filters.append({"state__exact": status})
|
|
|
|
# filters.append({'internal_use__ne': True})
|
|
return await super().paginate_with_cursors(
|
|
page_size, after_cursor, before_cursor, filters, sort_by
|
|
)
|
|
|
|
|
|
class WorkSheetTemplateRepository(
|
|
BaseRepository[WorkSheetTemplate]
|
|
):
|
|
def __init__(self) -> None:
|
|
super().__init__(WorkSheetTemplate)
|