indexstore/AppIndicators/Crud.py

109 lines
3.6 KiB
Python
Raw Permalink Normal View History

2022-11-08 09:43:43 +08:00
from sqlalchemy import or_
from sqlalchemy.orm import Session
2022-11-08 23:48:57 +08:00
from Utils.DataBase.SqlAlchemyUtils import set_next_id
2022-11-20 17:25:40 +08:00
from AppIndicators import Models, Schemas
2022-11-08 09:43:43 +08:00
from Utils.UniqueCoder.TimeSerialNumUtils import create_time_serial_num
2022-11-08 23:48:57 +08:00
from .Models import IndicatorCategory
2022-11-08 09:43:43 +08:00
def get_indicator_by_iid(db: Session, iid: str):
return db.query(Models.Indicator).filter(Models.Indicator.iid == iid).first()
def get_indicator_by_ename(db: Session, ename: str):
return db.query(Models.Indicator).filter(Models.Indicator.ename == ename).first()
2022-11-08 23:48:57 +08:00
def search_indicators(db: Session, schema: Schemas.SearchIndicatorReqBody):
2022-11-08 09:43:43 +08:00
2022-11-08 23:48:57 +08:00
page = 1 if schema.page < 1 else (100 if schema.page > 100 else schema.page)
pagesize = 5 if schema.pagesize < 5 else (20 if schema.pagesize > 20 else schema.pagesize)
2022-11-08 09:43:43 +08:00
items = db.query(Models.Indicator).filter(
2022-11-08 23:48:57 +08:00
or_(Models.Indicator.cname.like("%{}%".format("" if schema.name is None else schema.name)), schema.name is None),
or_(Models.Indicator.nature == schema.nature, schema.nature is None),
or_(Models.Indicator.category_id == schema.category_id, schema.category_id is None)
2022-11-08 09:43:43 +08:00
).offset((page-1)*pagesize).limit(pagesize).all()
count = db.query(Models.Indicator).filter(
2022-11-08 23:48:57 +08:00
or_(Models.Indicator.cname.like("%{}%".format("" if schema.name is None else schema.name)), schema.name is None),
or_(Models.Indicator.nature == schema.nature, schema.nature is None),
or_(Models.Indicator.category_id == schema.category_id, schema.category_id is None)
2022-11-08 09:43:43 +08:00
).count()
return items, count
2022-11-08 23:48:57 +08:00
def create_indicator(db: Session, schema: Schemas.CreateIndicatorReqBody):
item = Models.Indicator(**schema.to_dict())
2022-11-08 09:43:43 +08:00
item.iid = create_time_serial_num(prefix="IID", suffix="")
db.add(item)
db.commit()
db.refresh(item)
return item
def delete_indicator(db: Session, iid: str):
db.query(Models.Indicator).filter_by(iid=iid).delete()
db.commit()
2022-11-08 23:48:57 +08:00
return True
2022-11-08 09:43:43 +08:00
2022-11-08 23:48:57 +08:00
def edit_indicator(db: Session, iid: str, schema: Schemas.EditIndicatorReqBody):
db.query(Models.Indicator).filter_by(iid=iid).update(schema.del_null_value())
2022-11-08 09:43:43 +08:00
db.commit()
2022-11-08 23:48:57 +08:00
return True
2022-11-08 09:43:43 +08:00
2022-11-08 23:48:57 +08:00
def create_parameter(db: Session, schema: Schemas.EditParamReqBody, _iid: str):
item = Models.Parameters(**schema.dict())
2022-11-08 09:43:43 +08:00
item._iid = _iid
item.pid = create_time_serial_num(prefix="PID", suffix="")
db.add(item)
db.commit()
2022-11-08 23:48:57 +08:00
return True
2022-11-08 09:43:43 +08:00
2022-11-08 23:48:57 +08:00
def delete_parameter(db: Session, pid: str):
2022-11-08 09:43:43 +08:00
db.query(Models.Parameters).filter_by(pid=pid).delete()
db.commit()
2022-11-08 23:48:57 +08:00
def edit_parameter(db: Session, pid: str, schema: Schemas.EditParamReqBody):
2022-11-08 15:25:28 +08:00
db.query(Models.Parameters).filter_by(pid=pid).update(schema.dict())
2022-11-08 09:43:43 +08:00
db.commit()
def get_parameter_by_pid(db: Session, pid: str):
return db.query(Models.Parameters).filter_by(pid=pid).first()
2022-11-08 23:48:57 +08:00
def create_category(db: Session, schema: Schemas.CreateCategoryReqBody):
item = IndicatorCategory(**schema.dict())
item.id = set_next_id(db=db, num_len=3, prefix="CATEGORY", model=IndicatorCategory)
db.add(item)
db.commit()
return True
def get_category_by_name(db: Session, title: str):
item = db.query(Models.IndicatorCategory).filter_by(title=title).first()
return item
def get_category_by_id(db: Session, category_id: str):
item = db.query(Models.IndicatorCategory).filter_by(id=category_id).first()
return item
def delete_category(db: Session, category_id: str):
db.query(Models.IndicatorCategory).filter_by(id=category_id).delete()
db.commit()
return True
def list_category(db: Session):
return db.query(Models.IndicatorCategory).order_by(Models.IndicatorCategory.id.asc()).all()