57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
|
from sqlalchemy.orm import Session
|
||
|
from . import Schemas
|
||
|
from .Models import DailyPdfFile
|
||
|
|
||
|
|
||
|
def daily_pdf_file_add(db: Session, data: Schemas.DailyPdfFileAddInfo):
|
||
|
item = DailyPdfFile(**data.dict())
|
||
|
db.add(item)
|
||
|
db.commit()
|
||
|
db.refresh(item)
|
||
|
return item
|
||
|
|
||
|
|
||
|
def daily_pdf_file_delete(db: Session, item_id: int):
|
||
|
db.query(DailyPdfFile).filter_by(id=item_id).delete()
|
||
|
db.commit()
|
||
|
|
||
|
|
||
|
def daily_pdf_file_update(db: Session, data: Schemas.DailyPdfFileUpdateInfo):
|
||
|
db.query(DailyPdfFile).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(DailyPdfFile).filter_by(id=data.id).first()
|
||
|
return item
|
||
|
|
||
|
|
||
|
def daily_pdf_file_get(db: Session, item_id: int):
|
||
|
item = db.query(DailyPdfFile).filter_by(id=item_id).first()
|
||
|
return item
|
||
|
|
||
|
|
||
|
def daily_pdf_file_query(db: Session, params: Schemas.DailyPdfFileQuery):
|
||
|
params_dict = params.dict()
|
||
|
query = db.query(DailyPdfFile)
|
||
|
db_model = DailyPdfFile
|
||
|
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
|
||
|
if page is not None and page_size is not None:
|
||
|
page_size = min(page_size, 100)
|
||
|
query = query.offset((page - 1) * page_size).limit(page_size).all()
|
||
|
return count, query
|
||
|
|
||
|
|
||
|
################
|