57 lines
1.7 KiB
Python
57 lines
1.7 KiB
Python
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
|