from typing import List from sqlalchemy.orm import Session from sqlalchemy import asc, and_ from fastapi.encoders import jsonable_encoder from fastapi import UploadFile from app.model.bussiness_model import ProjectDetect, ProjectDetectImg, ProjectDetectLog, ProjectDetectLogImg from app.model.schemas.project_detect_schemas import ProjectDetectOut, ProjectDetectPager from app.db.page_util import get_pager def add_detect(detect: ProjectDetect, session: Session): """ 新增推理集合 :param detect: :param session: :return: """ session.add(detect) session.commit() return detect def get_detect_pager(detect_pager: ProjectDetectPager, session: Session): """ 查询推理集合分页数据 :param detect_pager: :param session: :return: """ query = session.query(ProjectDetect).order_by(asc(ProjectDetect.id)) filters = [ProjectDetect.project_id == detect_pager.project_id] if detect_pager.detect_name is not None: filters.append(ProjectDetect.detect_name.ilike(f"%{detect_pager.detect_name}%")) query = query.filter(and_(*filters)) pager = get_pager(query, detect_pager.pagerNum, detect_pager.pagerSize) pager.data = [ProjectDetectOut.from_orm(user) for user in pager.data] pager.data = jsonable_encoder(pager.data) return pager def check_img_name(detect_id: int, file_name: str, session: Session): """ 校验上传的图片名称是否重名 :param detect_id: :param file_name: :param session: :return: """ image = session.query(ProjectDetectImg).filter_by(detect_id=detect_id).filter_by(file_name=file_name).first() if image is None: return True, None else: return False, image.file_name def add_detect_imgs(detect_imgs: List[ProjectDetectImg], session: Session): """ 添加推理集合中的图片 :param detect_imgs: :param session: :return: """ session.add_all(detect_imgs) session.commit() def add_detect_log(detect_log: ProjectDetectLog, session: Session): """ 新增推理记录 :param detect_log: :param session: :return: """ session.add(detect_log) session.commit() return detect_log def add_detect_log_imgs(detect_log_imgs: List[ProjectDetectLogImg], session: Session): """ 新增推理记录中的照片 :param detect_log_imgs: :param session: :return: """ session.add_all(detect_log_imgs) session.commit()