from sqlalchemy.orm import Session from sqlalchemy.exc import IntegrityError from dao.advisor import crud from scheme.advisors import AdvisorIn # 成功 (数据, None);失败 (None, "错误码")。 def create_advisor(db:Session,advisor_id:int,advisor_name:str): exist=crud.search_advisor(db,advisor_id=advisor_id) if exist is not None: return None,"DUPLICATE" #ID主键已被占用 try: advisor = crud.create_advisor(db,advisor_id,advisor_name) except IntegrityError: db.rollback() return None, "DUPLICATE" return advisor, None def update_advisor(db:Session,advisor_id:int,advisor_in:AdvisorIn): exist = crud.search_advisor(db,advisor_id=advisor_id) if exist is None: return None, "NOT_FOUND" u_advisor=crud.update_advisor(db,advisor_id=advisor_id,advisor_name=advisor_in.advisor_name) if u_advisor is None: return None, "NOT_FOUND" # 查过之后被并发删掉了 return u_advisor,None #删除成功返回Advisor ID,删除失败返回None。顾问如连接学生,则拒绝删除。 def delete_advisor(db: Session, advisor_id: int): exist = crud.search_advisor(db=db, advisor_id=advisor_id) if exist is None: return None, "NOT_FOUND" # 查一下这个顾问名下有没有学生 if crud.list_students_of_advisor(db, advisor_id): return None, "HAS_STUDENTS" result = crud.delete_advisor(db=db, advisor_id=advisor_id) if result is None: return None, "NOT_FOUND" # 查过之后被并发删掉了 return result, None