Bump sqlalchemy crud plus version to 1.10.0 (#668)

* Bump sqlalchemy crud plus version to 1.10.0

* Update filter style

* Update filters style
This commit is contained in:
Wu Clan
2025-06-14 12:35:19 +08:00
committed by GitHub
parent 6883ec34c6
commit 11d7792c0f
14 changed files with 107 additions and 147 deletions
+4 -2
View File
@@ -64,10 +64,12 @@ class CRUDConfig(CRUDPlus[Config]):
:return:
"""
filters = {'type__not_in': settings.CONFIG_BUILT_IN_TYPES}
if name is not None:
filters.update(name__like=f'%{name}%')
filters['name__like'] = f'%{name}%'
if type is not None:
filters.update(type__like=f'%{type}%')
filters['type__like'] = f'%{type}%'
return await self.select_order('created_time', 'desc', **filters)
async def create(self, db: AsyncSession, obj: CreateConfigParam) -> None:
+7 -14
View File
@@ -1,8 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sqlalchemy import Select, and_, desc, select
from sqlalchemy import Select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import noload, selectinload
from sqlalchemy_crud_plus import CRUDPlus
from backend.plugin.dict.model import DictData
@@ -31,20 +30,16 @@ class CRUDDictData(CRUDPlus[DictData]):
:param status: 字典状态
:return:
"""
stmt = select(self.model).options(noload(self.model.type)).order_by(desc(self.model.sort))
filters = {}
filters = []
if label is not None:
filters.append(self.model.label.like(f'%{label}%'))
filters['label__like'] = f'%{label}%'
if value is not None:
filters.append(self.model.value.like(f'%{value}%'))
filters['value__like'] = f'%{value}%'
if status is not None:
filters.append(self.model.status == status)
filters['status'] = status
if filters:
stmt = stmt.where(and_(*filters))
return stmt
return await self.select_order('id', 'desc', *filters)
async def get_by_label(self, db: AsyncSession, label: str) -> DictData | None:
"""
@@ -95,9 +90,7 @@ class CRUDDictData(CRUDPlus[DictData]):
:param pk: 字典数据 ID
:return:
"""
stmt = select(self.model).options(selectinload(self.model.type)).where(self.model.id == pk)
dict_data = await db.execute(stmt)
return dict_data.scalars().first()
return await self.select_model(db, pk, load_strategies=['type'])
dict_data_dao: CRUDDictData = CRUDDictData(DictData)
+6 -11
View File
@@ -1,8 +1,7 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sqlalchemy import Select, and_, desc, select
from sqlalchemy import Select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import noload
from sqlalchemy_crud_plus import CRUDPlus
from backend.plugin.dict.model import DictType
@@ -31,20 +30,16 @@ class CRUDDictType(CRUDPlus[DictType]):
:param status: 字典状态
:return:
"""
stmt = select(self.model).options(noload(self.model.datas)).order_by(desc(self.model.created_time))
filters = {}
filters = []
if name is not None:
filters.append(self.model.name.like(f'%{name}%'))
filters['name__like'] = f'%{name}%'
if code is not None:
filters.append(self.model.code.like(f'%{code}%'))
filters['code__like'] = f'%{code}%'
if status is not None:
filters.append(self.model.status == status)
filters['status'] = status
if filters:
stmt = stmt.where(and_(*filters))
return stmt
return await self.select_order('id', 'desc', **filters)
async def get_by_code(self, db: AsyncSession, code: str) -> DictType | None:
"""