添加修改记录增删改查接口
This commit is contained in:
parent
557249420d
commit
229fa2b226
|
@ -1,9 +1,9 @@
|
|||
from sqlalchemy.orm import Session
|
||||
from .Schemas import EditItemTypeQuery, EditItemTypeAddInfo, EditItemTypeUpdateInfo
|
||||
from . import Schemas
|
||||
from .Models import EditRecord, EditItemType
|
||||
|
||||
|
||||
def edit_item_type_add(db: Session, data: EditItemTypeAddInfo):
|
||||
def edit_item_type_add(db: Session, data: Schemas.EditItemTypeAddInfo):
|
||||
item = EditItemType(**data.dict())
|
||||
db.add(item)
|
||||
db.commit()
|
||||
|
@ -16,8 +16,8 @@ def edit_item_type_delete(db: Session, item_id: int):
|
|||
db.commit()
|
||||
|
||||
|
||||
def edit_item_type_update(db: Session, data: EditItemTypeUpdateInfo):
|
||||
db.query(EditItemType).filter_by(id=data.id).update(data.dict())
|
||||
def edit_item_type_update(db: Session, data: Schemas.EditItemTypeUpdateInfo):
|
||||
db.query(EditItemType).filter_by(id=data.id).update({key: v for key, v in data.dict().items() if v is not None})
|
||||
db.commit()
|
||||
item = db.query(EditItemType).filter_by(id=data.id).first()
|
||||
return item
|
||||
|
@ -28,7 +28,7 @@ def edit_item_type_get(db: Session, item_id: int):
|
|||
return item
|
||||
|
||||
|
||||
def edit_item_type_query(db: Session, params: EditItemTypeQuery):
|
||||
def edit_item_type_query(db: Session, params: Schemas.EditItemTypeQuery):
|
||||
params_dict = params.dict()
|
||||
query = db.query(EditItemType)
|
||||
db_model = EditItemType
|
||||
|
@ -47,6 +47,62 @@ def edit_item_type_query(db: Session, params: EditItemTypeQuery):
|
|||
page = params_dict['page']
|
||||
if 'page_size' in params_dict:
|
||||
page_size = params_dict['page_size']
|
||||
# 页数不超过100
|
||||
page_size = min(page_size, 100)
|
||||
if page is not None and page_size is not None:
|
||||
query = query.offset((page - 1) * page_size).limit(page_size).all()
|
||||
return count, query
|
||||
|
||||
|
||||
#################
|
||||
|
||||
|
||||
def edit_record_add(db: Session, data: Schemas.EditRecordAddInfo):
|
||||
item = EditRecord(**data.dict())
|
||||
db.add(item)
|
||||
db.commit()
|
||||
db.refresh(item)
|
||||
return item
|
||||
|
||||
|
||||
def edit_record_delete(db: Session, item_id: int):
|
||||
db.query(EditRecord).filter_by(id=item_id).delete()
|
||||
db.commit()
|
||||
|
||||
|
||||
def edit_record_update(db: Session, data: Schemas.EditRecordUpdateInfo):
|
||||
db.query(EditRecord).filter_by(id=data.id).update({key: v for key, v in data.dict().items() if v is not None})
|
||||
db.commit()
|
||||
item = db.query(EditRecord).filter_by(id=data.id).first()
|
||||
return item
|
||||
|
||||
|
||||
def edit_record_get(db: Session, item_id: int):
|
||||
item = db.query(EditRecord).filter_by(id=item_id).first()
|
||||
return item
|
||||
|
||||
|
||||
def edit_record_query(db: Session, params: Schemas.EditRecordQuery):
|
||||
params_dict = params.dict()
|
||||
query = db.query(EditRecord)
|
||||
db_model = EditRecord
|
||||
for key, value in params_dict.items():
|
||||
if key not in ['page', 'page_size'] and value is not None:
|
||||
if type(value) == str:
|
||||
query = query.filter(getattr(db_model, key).like(f'%{value}%'))
|
||||
elif type(value) in [int, float, bool]:
|
||||
query = query.filter_by(**{key: value})
|
||||
else:
|
||||
query = query.filter(getattr(db_model, key) == value)
|
||||
count = query.count()
|
||||
page = None
|
||||
page_size = None
|
||||
if 'page' in params_dict:
|
||||
page = params_dict['page']
|
||||
if 'page_size' in params_dict:
|
||||
page_size = params_dict['page_size']
|
||||
# 页数不超过100
|
||||
page_size = min(page_size, 100)
|
||||
if page is not None and page_size is not None:
|
||||
query = query.offset((page - 1) * page_size).limit(page_size).all()
|
||||
return count, query
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from sqlalchemy.orm import relationship
|
||||
|
||||
from Context.common import common_db
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, Text
|
||||
from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, func
|
||||
from Mods.User.Models import User
|
||||
|
||||
|
||||
|
@ -11,20 +11,22 @@ class EditRecord(common_db.Base):
|
|||
"""
|
||||
__tablename__ = "edit_record"
|
||||
id = Column(Integer, primary_key=True)
|
||||
edit_user = Column(String(128), ForeignKey('user.email'), comment="填报人")
|
||||
edit_user = Column(String(128), ForeignKey('user.email'), comment="填报人", nullable=False)
|
||||
user_info = relationship('User', uselist=False, backref='user')
|
||||
item_id = Column(Integer, comment="编辑项id")
|
||||
item_type_id = Column(Integer, ForeignKey('edit_item_type.id'), comment="编辑项类型信息")
|
||||
item_id = Column(Integer, comment="编辑项id", nullable=False)
|
||||
item_type_id = Column(Integer, ForeignKey('edit_item_type.id'), comment="编辑项类型信息", nullable=False)
|
||||
item_type_info = relationship('EditItemType', uselist=False, backref='edit_item_type')
|
||||
before_edit_data = Column(Text, comment="编辑前的信息json")
|
||||
after_edit_data = Column(Text, comment="编辑后的信息json")
|
||||
edit_time = Column(DateTime, server_default=func.now(), comment='编辑时间')
|
||||
create_time = Column(DateTime, server_default=func.now(), comment='创建时间')
|
||||
|
||||
def to_dict(self):
|
||||
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
user_info = getattr(self, 'user_info')
|
||||
data['user_info'] = user_info.to_dict()
|
||||
item_type_info = getattr(self, 'item_type_info')
|
||||
data['item_type_info'] = item_type_info.to_dict()
|
||||
user_info = getattr(self, 'user_info')
|
||||
data['user_info'] = user_info.to_dict()
|
||||
return data
|
||||
|
||||
|
||||
|
@ -34,8 +36,8 @@ class EditItemType(common_db.Base):
|
|||
"""
|
||||
__tablename__ = "edit_item_type"
|
||||
id = Column(Integer, primary_key=True)
|
||||
name = Column(String(255), comment="名称")
|
||||
category = Column(String(255), comment="类别")
|
||||
name = Column(String(255), comment="名称", nullable=False)
|
||||
category = Column(String(255), comment="类别", nullable=False)
|
||||
|
||||
def to_dict(self):
|
||||
data = {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from Context.common import common_db
|
||||
|
@ -28,8 +28,10 @@ def edit_item_type_update(req: Schemas.EditItemTypeUpdateReq, db: Session = Depe
|
|||
|
||||
|
||||
@router.post("/edit_item_type/get", summary="获取修改项类型", response_model=Schemas.EditItemTypeGetRes)
|
||||
def edit_item_type_update(req: Schemas.EditItemTypeGetReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.edit_item_type_get(db, req)
|
||||
def edit_item_type_get(req: Schemas.EditItemTypeGetReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.edit_item_type_get(db, req.id)
|
||||
if not item:
|
||||
raise HTTPException(detail="未查询到信息", status_code=404)
|
||||
return Schemas.EditItemTypeGetRes(**item.to_dict())
|
||||
|
||||
|
||||
|
@ -37,4 +39,39 @@ def edit_item_type_update(req: Schemas.EditItemTypeGetReq, db: Session = Depends
|
|||
def edit_item_type_query(req: Schemas.EditItemTypeQueryReq, db: Session = Depends(common_db.get_db)):
|
||||
count, query = Crud.edit_item_type_query(db, req)
|
||||
items = [Schemas.EditItemTypeInfo(**item.to_dict()) for item in query]
|
||||
return Schemas.EditItemTypeQueryRes(count, items)
|
||||
return Schemas.EditItemTypeQueryRes(count=count, items=items)
|
||||
|
||||
|
||||
#########
|
||||
|
||||
@router.post("/edit_record/add", summary="添加编辑记录", response_model=Schemas.EditRecordAddRes)
|
||||
def edit_record_query(req: Schemas.EditRecordAddReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.edit_record_add(db, req)
|
||||
return Schemas.EditRecordAddRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/edit_record/delete", summary="删除编辑记录")
|
||||
def edit_record_delete(req: Schemas.EditRecordDeleteReq, db: Session = Depends(common_db.get_db)):
|
||||
Crud.edit_record_delete(db, req.id)
|
||||
return "删除成功"
|
||||
|
||||
|
||||
@router.post("/edit_record/update", summary="更新编辑记录", response_model=Schemas.EditRecordUpdateRes)
|
||||
def edit_record_update(req: Schemas.EditRecordUpdateReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.edit_record_update(db, req)
|
||||
return Schemas.EditRecordUpdateRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/edit_record/get", summary="获取编辑记录", response_model=Schemas.EditRecordGetRes)
|
||||
def edit_record_get(req: Schemas.EditRecordGetReq, db: Session = Depends(common_db.get_db)):
|
||||
item = Crud.edit_record_get(db, req.id)
|
||||
if not item:
|
||||
raise HTTPException(detail="未查询到信息", status_code=404)
|
||||
return Schemas.EditRecordGetRes(**item.to_dict())
|
||||
|
||||
|
||||
@router.post("/edit_record/query", summary="查询编辑记录", response_model=Schemas.EditRecordQueryRes)
|
||||
def edit_record_query(req: Schemas.EditRecordQueryReq, db: Session = Depends(common_db.get_db)):
|
||||
count, query = Crud.edit_record_query(db, req)
|
||||
items = [Schemas.EditRecordFullInfo(**item.to_dict()) for item in query]
|
||||
return Schemas.EditRecordQueryRes(count=count, items=items)
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
from typing import Optional, List
|
||||
|
||||
from Mods.User.Schemas import UserInfo
|
||||
|
||||
|
||||
class EditItemTypeInfo(BaseModel):
|
||||
id: Optional[int]
|
||||
|
@ -56,3 +60,76 @@ class EditItemTypeQueryRes(BaseModel):
|
|||
|
||||
class EditItemTypeDeleteReq(BaseModel):
|
||||
id: int
|
||||
|
||||
|
||||
#######################
|
||||
|
||||
class EditRecordInfo(BaseModel):
|
||||
id: Optional[int]
|
||||
edit_user: Optional[str]
|
||||
item_id: Optional[int]
|
||||
item_type_id: Optional[int]
|
||||
before_edit_data: Optional[str]
|
||||
after_edit_data: Optional[str]
|
||||
edit_time: Optional[datetime]
|
||||
create_time: Optional[datetime]
|
||||
|
||||
|
||||
class EditRecordFullInfo(EditRecordInfo):
|
||||
user_info: Optional[UserInfo]
|
||||
item_type_info: EditItemTypeInfo
|
||||
|
||||
|
||||
class EditRecordAddInfo(BaseModel):
|
||||
edit_user: str
|
||||
item_id: int
|
||||
item_type_id: int
|
||||
before_edit_data: Optional[str]
|
||||
after_edit_data: Optional[str]
|
||||
|
||||
|
||||
class EditRecordAddReq(EditRecordAddInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordAddRes(EditRecordInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordUpdateInfo(EditRecordInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordUpdateReq(EditRecordUpdateInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordUpdateRes(EditRecordInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordQuery(EditRecordInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordQueryReq(EditRecordQuery):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordGetReq(BaseModel):
|
||||
id: int
|
||||
|
||||
|
||||
class EditRecordGetRes(EditRecordFullInfo):
|
||||
pass
|
||||
|
||||
|
||||
class EditRecordQueryRes(BaseModel):
|
||||
count: int
|
||||
items: List[EditRecordFullInfo]
|
||||
|
||||
|
||||
class EditRecordDeleteReq(BaseModel):
|
||||
id: int
|
||||
|
||||
##########
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class UserInfo(BaseModel):
|
||||
email: str
|
||||
name: str
|
||||
post: str
|
||||
department: str
|
||||
registered: bool
|
Loading…
Reference in New Issue