mini-rbac/backend/core/service.py
zy7y 547a4eeae6
Refactor backend MVC (#2)
* docs(requirements.txt):升级fastapi、uvicorn版本

* refactor(user):重构用户router、service

* ref: role list api

* doc: 1

* refactor(backend): mvc ref
2022-10-04 18:19:26 +08:00

64 lines
1.7 KiB
Python

from core.dbhelper import DbHelper
class Service:
filter_del = {"status__not": 9}
def __init__(self, dao: DbHelper):
self.dao = dao
async def get_items(self, offset, limit):
"""
分页获取数据, 过滤掉删除
:param offset: 起始值
:param limit: 偏移量
:return:
"""
skip = (offset - 1) * limit
return dict(data=await self.dao.selects(skip, limit, Service.filter_del))
async def query_items(self, query):
"""
根据条件查询结果
:param query:
:return:
"""
size = query.limit
skip = (query.offset - 1) * size
del query.offset, query.limit
filters = {f"{k}__contains": v for k, v in query.dict().items()}
filters.update(Service.filter_del)
return dict(data=await self.dao.selects(skip, size, filters))
async def delete_item(self, pk):
"""
逻辑删除数据
:param pk:主键
:return:
"""
filters = {"id": pk}
filters.update(Service.filter_del)
if await self.dao.update(filters, {"status": 9}) == 0:
return dict(code=400, msg="数据不存在")
return dict()
async def update_item(self, pk, data):
"""
更新数据,不通用,可重写
:param pk: 主键
:param data: pydantic model
:return:
"""
if await self.dao.update({"id": pk}, data.dict()) == 0:
return dict(code=400, msg="数据不存在")
return dict()
async def create_item(self, data):
"""
创建数据,不通用可重写
:param data: pydantic model
:return:
"""
return await self.dao.insert(data.dict())