aaa
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# dao/teache_dao.py
|
||||
# 本文件封装对老师表的所有数据库操作(增、删、改、查)
|
||||
from fastapi import HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from model.teacher import Teacher
|
||||
from scheme.teachers import TeacherCreate, TeacherUpdate
|
||||
|
||||
|
||||
class TeacherDAO:
|
||||
|
||||
# 多条件查询老师列表
|
||||
@staticmethod
|
||||
def get_list(db: Session, teacher_name=None, is_headteacher=None, page=1, size=10):
|
||||
query = db.query(Teacher).filter(Teacher.flag == 1)
|
||||
if teacher_name:
|
||||
query = query.filter(Teacher.teacher_name.like(f"%{teacher_name}%"))
|
||||
if is_headteacher:
|
||||
query = query.filter(Teacher.is_headteacher == is_headteacher)
|
||||
total = query.count()
|
||||
items = (query.order_by(Teacher.teacher_id).offset((page - 1) * size).limit(size).all())
|
||||
return total, items
|
||||
|
||||
# 按老师编号查单个老师
|
||||
@staticmethod
|
||||
def get_by_id(db: Session, teacher_id: int):
|
||||
teacher = db.query(Teacher).filter(Teacher.teacher_id == teacher_id, Teacher.flag == 1).first()
|
||||
if not teacher:
|
||||
raise HTTPException(status_code=404, detail=f"老师 {teacher_id} 不存在")
|
||||
return teacher
|
||||
|
||||
# 新增老师
|
||||
@staticmethod
|
||||
def create(db: Session, data: TeacherCreate):
|
||||
teacher = Teacher(**data.model_dump())
|
||||
teacher.flag = 1
|
||||
db.add(teacher)
|
||||
db.commit()
|
||||
db.refresh(teacher)
|
||||
return teacher
|
||||
|
||||
# 更新老师信息
|
||||
@staticmethod
|
||||
def update(db: Session, teacher_id: int, data: TeacherUpdate):
|
||||
update_data = data.model_dump(exclude_unset=True)
|
||||
db.query(Teacher) \
|
||||
.filter(Teacher.teacher_id == teacher_id) \
|
||||
.update(update_data)
|
||||
db.commit()
|
||||
return TeacherDAO.get_by_id(db, teacher_id)
|
||||
|
||||
# 逻辑删除老师
|
||||
@staticmethod
|
||||
def delete(db: Session, teacher_id: int):
|
||||
teacher = TeacherDAO.get_by_id(db, teacher_id)
|
||||
teacher.flag = 0
|
||||
db.commit()
|
||||
db.refresh(teacher)
|
||||
return teacher
|
||||
Reference in New Issue
Block a user