from sqlalchemy.orm import Session from sqlalchemy import desc, update from app.model.bussiness_model import ProjectInfo from app.model.schemas.project_info_schemas import ProjectInfoOut from app.model.schemas.project_info_schemas import ProjectInfoPager from app.db.page_util import get_pager def get_project_pager(info: ProjectInfoPager, session: Session): """分页查询项目信息""" query = session.query(ProjectInfo).order_by(desc(ProjectInfo.id)) filters = [] if info.project_name is not None: filters.append(ProjectInfo.project_name.ilike(f"%{info.project_name}%")) if len(filters) > 0: query.filter(*filters) pager = get_pager(query, info.pagerNum, info.pagerSize) pager.data = [ProjectInfoOut.from_orm(info).dict() for info in pager.data] return pager def get_project_by_id(project_id: str, session: Session): info = session.query(ProjectInfo).filter_by(id=project_id).first() info_out = ProjectInfoOut.from_orm(info) return info_out def add_project(info: ProjectInfo, session: Session): """新建项目,并在对应文件夹下面创建文件夹""" session.add(info) session.commit() return info def check_project_name(project_name: str, session: Session): """检验是否存在重名的项目名称""" count = session.query(ProjectInfo).filter(ProjectInfo.project_name == project_name).count() if count > 0: return True else: return False def update_project_status(project_id: int, project_status: str, session: Session): """ 更新项目训练状态,如果是已完成的话,train_version自动+1 :param project_id: :param project_status: 0-未运行,1-运行中,2-已完成,-1-执行失败 :param session: :return: """ if project_status == '2': stmt = update(ProjectInfo).where(ProjectInfo.id == project_id).values({ 'train_status': project_status, 'train_version': ProjectInfo.train_version + 1 }) session.execute(stmt) else: stmt = update(ProjectInfo).where(ProjectInfo.id == project_id).values({ 'train_status': project_status }) session.execute(stmt) session.commit()