63 lines
2.1 KiB
Python
63 lines
2.1 KiB
Python
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':
|
||
session.query(ProjectInfo).filter_by(id=project_id).update({
|
||
'project_status': project_status,
|
||
'train_version': ProjectInfo.train_version + 1
|
||
})
|
||
else:
|
||
session.query(ProjectInfo).filter_by(id=project_id).update({
|
||
'project_status': project_status
|
||
})
|
||
session.commit()
|