42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
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
|