from sqlalchemy.orm import Session from model.advisors import Advisor from model.students import Student def create_advisor(db:Session,advisor_id:int,advisor_name:str): advisor = Advisor(advisor_id=advisor_id,advisor_name=advisor_name) db.add(advisor) db.commit() db.refresh(advisor) return advisor def search_advisor(db:Session,advisor_id:int|None=None,advisor_name:str|None=None): if advisor_id is None and advisor_name is None: return None query=db.query(Advisor) if advisor_id is not None: query = query.filter(Advisor.advisor_id == advisor_id) if advisor_name is not None: query = query.filter(Advisor.advisor_name==advisor_name) advisor = query.first() return advisor def list_advisors(db: Session,advisor_name: str|None =None): query = db.query(Advisor) if advisor_name is not None: query = query.filter(Advisor.advisor_name.like(f"%{advisor_name}%")) return query.all() def list_students_of_advisor(db: Session, advisor_id: int): """查这个顾问名下还没被逻辑删除的学生""" return db.query(Student).filter( Student.is_deleted == 0, Student.advisor_id == advisor_id, ).all() def update_advisor(db:Session,advisor_id:int,advisor_name:str|None=None): r_advisor = search_advisor(db=db,advisor_id=advisor_id) if r_advisor is None: return None if advisor_name is not None: r_advisor.advisor_name = advisor_name db.commit() return r_advisor def delete_advisor(db:Session,advisor_id:int): d_advisor = search_advisor(db=db,advisor_id=advisor_id) if d_advisor is None: return None db.delete(d_advisor) db.commit() return advisor_id