Skip to content

Update CRUDBase to sqlalchemy-crud-plus #317

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 7 additions & 9 deletions backend/app/admin/crud/crud_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

from sqlalchemy import Select, and_, delete, desc, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import Api
from backend.app.admin.schema.api import CreateApiParam, UpdateApiParam
from backend.common.msd.crud import CRUDBase


class CRUDApi(CRUDBase[Api, CreateApiParam, UpdateApiParam]):
class CRUDApi(CRUDPlus[Api]):
async def get(self, db: AsyncSession, pk: int) -> Api | None:
"""
获取 API
Expand All @@ -19,7 +19,7 @@ async def get(self, db: AsyncSession, pk: int) -> Api | None:
:param pk:
:return:
"""
return await self.get_(db, pk=pk)
return await self.select_model_by_id(db, pk)

async def get_list(self, name: str = None, method: str = None, path: str = None) -> Select:
"""
Expand Down Expand Up @@ -49,8 +49,7 @@ async def get_all(self, db: AsyncSession) -> Sequence[Api]:
:param db:
:return:
"""
apis = await db.execute(select(self.model))
return apis.scalars().all()
return await self.select_models(db)

async def get_by_name(self, db: AsyncSession, name: str) -> Api | None:
"""
Expand All @@ -60,8 +59,7 @@ async def get_by_name(self, db: AsyncSession, name: str) -> Api | None:
:param name:
:return:
"""
api = await db.execute(select(self.model).where(self.model.name == name))
return api.scalars().first()
return await self.select_model_by_column(db, 'name', name)

async def create(self, db: AsyncSession, obj_in: CreateApiParam) -> None:
"""
Expand All @@ -71,7 +69,7 @@ async def create(self, db: AsyncSession, obj_in: CreateApiParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)

async def update(self, db: AsyncSession, pk: int, obj_in: UpdateApiParam) -> int:
"""
Expand All @@ -82,7 +80,7 @@ async def update(self, db: AsyncSession, pk: int, obj_in: UpdateApiParam) -> int
:param obj_in:
:return:
"""
return await self.update_(db, pk, obj_in)
return await self.update_model(db, pk, obj_in)

async def delete(self, db: AsyncSession, pk: list[int]) -> int:
"""
Expand Down
8 changes: 4 additions & 4 deletions backend/app/admin/crud/crud_casbin.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

from sqlalchemy import Select, and_, delete, or_, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import CasbinRule
from backend.app.admin.schema.casbin_rule import CreatePolicyParam, DeleteAllPoliciesParam, UpdatePolicyParam
from backend.common.msd.crud import CRUDBase
from backend.app.admin.schema.casbin_rule import DeleteAllPoliciesParam


class CRUDCasbin(CRUDBase[CasbinRule, CreatePolicyParam, UpdatePolicyParam]):
class CRUDCasbin(CRUDPlus[CasbinRule]):
async def get_list(self, ptype: str, sub: str) -> Select:
"""
获取策略列表
Expand All @@ -19,7 +19,7 @@ async def get_list(self, ptype: str, sub: str) -> Select:
:param sub:
:return:
"""
se = select(self.model).order_by(self.model.id)
se = select(self.model).order_by(self.model.id.desc())
where_list = []
if ptype:
where_list.append(self.model.ptype == ptype)
Expand Down
14 changes: 7 additions & 7 deletions backend/app/admin/crud/crud_dept.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
from sqlalchemy import and_, asc, or_, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import Dept, User
from backend.app.admin.schema.dept import CreateDeptParam, UpdateDeptParam
from backend.common.msd.crud import CRUDBase


class CRUDDept(CRUDBase[Dept, CreateDeptParam, UpdateDeptParam]):
class CRUDDept(CRUDPlus[Dept]):
async def get(self, db: AsyncSession, dept_id: int) -> Dept | None:
"""
获取部门
Expand All @@ -20,7 +20,7 @@ async def get(self, db: AsyncSession, dept_id: int) -> Dept | None:
:param dept_id:
:return:
"""
return await self.get_(db, pk=dept_id, del_flag=0)
return await self.select_model_by_columns(db, id=dept_id, del_flag=0)

async def get_by_name(self, db: AsyncSession, name: str) -> Dept | None:
"""
Expand All @@ -30,7 +30,7 @@ async def get_by_name(self, db: AsyncSession, name: str) -> Dept | None:
:param name:
:return:
"""
return await self.get_(db, name=name, del_flag=0)
return await self.select_model_by_columns(db, name=name, del_flag=0)

async def get_all(
self, db: AsyncSession, name: str = None, leader: str = None, phone: str = None, status: int = None
Expand Down Expand Up @@ -76,7 +76,7 @@ async def create(self, db: AsyncSession, obj_in: CreateDeptParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)

async def update(self, db: AsyncSession, dept_id: int, obj_in: UpdateDeptParam) -> int:
"""
Expand All @@ -87,7 +87,7 @@ async def update(self, db: AsyncSession, dept_id: int, obj_in: UpdateDeptParam)
:param obj_in:
:return:
"""
return await self.update_(db, dept_id, obj_in)
return await self.update_model(db, dept_id, obj_in)

async def delete(self, db: AsyncSession, dept_id: int) -> int:
"""
Expand All @@ -97,7 +97,7 @@ async def delete(self, db: AsyncSession, dept_id: int) -> int:
:param dept_id:
:return:
"""
return await self.delete_(db, dept_id, del_flag=1)
return await self.delete_model(db, dept_id, del_flag=1)

async def get_relation(self, db: AsyncSession, dept_id: int) -> list[User]:
"""
Expand Down
18 changes: 9 additions & 9 deletions backend/app/admin/crud/crud_dict_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
from sqlalchemy import Select, and_, delete, desc, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import DictData
from backend.app.admin.schema.dict_data import CreateDictDataParam, UpdateDictDataParam
from backend.common.msd.crud import CRUDBase


class CRUDDictData(CRUDBase[DictData, CreateDictDataParam, UpdateDictDataParam]):
class CRUDDictData(CRUDPlus[DictData]):
async def get(self, db: AsyncSession, pk: int) -> DictData | None:
"""
获取字典数据
Expand All @@ -18,7 +18,7 @@ async def get(self, db: AsyncSession, pk: int) -> DictData | None:
:param pk:
:return:
"""
return await self.get_(db, pk=pk)
return await self.select_model_by_id(db, pk)

async def get_list(self, label: str = None, value: str = None, status: int = None) -> Select:
"""
Expand Down Expand Up @@ -49,8 +49,7 @@ async def get_by_label(self, db: AsyncSession, label: str) -> DictData | None:
:param label:
:return:
"""
api = await db.execute(select(self.model).where(self.model.label == label))
return api.scalars().first()
return await self.select_model_by_column(db, 'label', label)

async def create(self, db: AsyncSession, obj_in: CreateDictDataParam) -> None:
"""
Expand All @@ -60,7 +59,7 @@ async def create(self, db: AsyncSession, obj_in: CreateDictDataParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)

async def update(self, db: AsyncSession, pk: int, obj_in: UpdateDictDataParam) -> int:
"""
Expand All @@ -71,7 +70,7 @@ async def update(self, db: AsyncSession, pk: int, obj_in: UpdateDictDataParam) -
:param obj_in:
:return:
"""
return await self.update_(db, pk, obj_in)
return await self.update_model(db, pk, obj_in)

async def delete(self, db: AsyncSession, pk: list[int]) -> int:
"""
Expand All @@ -92,8 +91,9 @@ async def get_with_relation(self, db: AsyncSession, pk: int) -> DictData | None:
:param pk:
:return:
"""
where = [self.model.id == pk]
dict_data = await db.execute(select(self.model).options(selectinload(self.model.type)).where(*where))
dict_data = await db.execute(
select(self.model).options(selectinload(self.model.type)).where(self.model.id == pk)
)
return dict_data.scalars().first()


Expand Down
13 changes: 6 additions & 7 deletions backend/app/admin/crud/crud_dict_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
# -*- coding: utf-8 -*-
from sqlalchemy import Select, delete, desc, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import DictType
from backend.app.admin.schema.dict_type import CreateDictTypeParam, UpdateDictTypeParam
from backend.common.msd.crud import CRUDBase


class CRUDDictType(CRUDBase[DictType, CreateDictTypeParam, UpdateDictTypeParam]):
class CRUDDictType(CRUDPlus[DictType]):
async def get(self, db: AsyncSession, pk: int) -> DictType | None:
"""
获取字典类型
Expand All @@ -17,7 +17,7 @@ async def get(self, db: AsyncSession, pk: int) -> DictType | None:
:param pk:
:return:
"""
return await self.get_(db, pk=pk)
return await self.select_model_by_id(db, pk)

async def get_list(self, *, name: str = None, code: str = None, status: int = None) -> Select:
"""
Expand Down Expand Up @@ -48,8 +48,7 @@ async def get_by_code(self, db: AsyncSession, code: str) -> DictType | None:
:param code:
:return:
"""
dept = await db.execute(select(self.model).where(self.model.code == code))
return dept.scalars().first()
return await self.select_model_by_column(db, 'code', code)

async def create(self, db: AsyncSession, obj_in: CreateDictTypeParam) -> None:
"""
Expand All @@ -59,7 +58,7 @@ async def create(self, db: AsyncSession, obj_in: CreateDictTypeParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)

async def update(self, db: AsyncSession, pk: int, obj_in: UpdateDictTypeParam) -> int:
"""
Expand All @@ -70,7 +69,7 @@ async def update(self, db: AsyncSession, pk: int, obj_in: UpdateDictTypeParam) -
:param obj_in:
:return:
"""
return await self.update_(db, pk, obj_in)
return await self.update_model(db, pk, obj_in)

async def delete(self, db: AsyncSession, pk: list[int]) -> int:
"""
Expand Down
8 changes: 4 additions & 4 deletions backend/app/admin/crud/crud_login_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
# -*- coding: utf-8 -*-
from sqlalchemy import Select, and_, delete, desc, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import LoginLog
from backend.app.admin.schema.login_log import CreateLoginLogParam, UpdateLoginLogParam
from backend.common.msd.crud import CRUDBase
from backend.app.admin.schema.login_log import CreateLoginLogParam


class CRUDLoginLog(CRUDBase[LoginLog, CreateLoginLogParam, UpdateLoginLogParam]):
class CRUDLoginLog(CRUDPlus[LoginLog]):
async def get_list(self, username: str | None = None, status: int | None = None, ip: str | None = None) -> Select:
"""
获取登录日志列表
Expand Down Expand Up @@ -38,7 +38,7 @@ async def create(self, db: AsyncSession, obj_in: CreateLoginLogParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)
await db.commit()

async def delete(self, db: AsyncSession, pk: list[int]) -> int:
Expand Down
12 changes: 6 additions & 6 deletions backend/app/admin/crud/crud_menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

from sqlalchemy import and_, asc, select
from sqlalchemy.orm import selectinload
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import Menu
from backend.app.admin.schema.menu import CreateMenuParam, UpdateMenuParam
from backend.common.msd.crud import CRUDBase


class CRUDMenu(CRUDBase[Menu, CreateMenuParam, UpdateMenuParam]):
class CRUDMenu(CRUDPlus[Menu]):
async def get(self, db, menu_id: int) -> Menu | None:
"""
获取菜单
Expand All @@ -19,7 +19,7 @@ async def get(self, db, menu_id: int) -> Menu | None:
:param menu_id:
:return:
"""
return await self.get_(db, pk=menu_id)
return await self.select_model_by_id(db, menu_id)

async def get_by_title(self, db, title: str) -> Menu | None:
"""
Expand Down Expand Up @@ -77,7 +77,7 @@ async def create(self, db, obj_in: CreateMenuParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)

async def update(self, db, menu_id: int, obj_in: UpdateMenuParam) -> int:
"""
Expand All @@ -88,7 +88,7 @@ async def update(self, db, menu_id: int, obj_in: UpdateMenuParam) -> int:
:param obj_in:
:return:
"""
count = await self.update_(db, menu_id, obj_in)
count = await self.update_model(db, menu_id, obj_in)
return count

async def delete(self, db, menu_id: int) -> int:
Expand All @@ -99,7 +99,7 @@ async def delete(self, db, menu_id: int) -> int:
:param menu_id:
:return:
"""
return await self.delete_(db, menu_id)
return await self.delete_model(db, menu_id)

async def get_children(self, db, menu_id: int) -> list[Menu]:
"""
Expand Down
8 changes: 4 additions & 4 deletions backend/app/admin/crud/crud_opera_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
# -*- coding: utf-8 -*-
from sqlalchemy import Select, and_, delete, desc, select
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy_crud_plus import CRUDPlus

from backend.app.admin.model import OperaLog
from backend.app.admin.schema.opera_log import CreateOperaLogParam, UpdateOperaLogParam
from backend.common.msd.crud import CRUDBase
from backend.app.admin.schema.opera_log import CreateOperaLogParam


class CRUDOperaLogDao(CRUDBase[OperaLog, CreateOperaLogParam, UpdateOperaLogParam]):
class CRUDOperaLogDao(CRUDPlus[OperaLog]):
async def get_list(self, username: str | None = None, status: int | None = None, ip: str | None = None) -> Select:
"""
获取操作日志列表
Expand Down Expand Up @@ -38,7 +38,7 @@ async def create(self, db: AsyncSession, obj_in: CreateOperaLogParam) -> None:
:param obj_in:
:return:
"""
await self.create_(db, obj_in)
await self.create_model(db, obj_in)

async def delete(self, db: AsyncSession, pk: list[int]) -> int:
"""
Expand Down
Loading
Loading