from sqlalchemy import and_ from sqlalchemy.orm import Session from model.classes import Class # ← 必须:操作 ORM 模型 from scheme.classes import ClassCreate, ClassUpdate # ← 必须:类型注解 class ClassDao: # 新增 @staticmethod def create_class_list(db:Session,data:ClassCreate): cls = Class( cid=data.cid, class_name=data.class_name, start_time=data.start_time, headteacher=data.headteacher, flag=1 ) db.add(cls) db.commit() db.refresh(cls) return cls # 查询,查询单个 @staticmethod def get_class(db:Session,class_id:int): return db.query(Class).filter(and_(Class.cid==class_id,Class.flag==1)).first() # def get_all_class(db:Session): # return db.query(Class).filter(Class.flag==1).all() @staticmethod def get_class_list(db:Session,cid:None,class_name:None,headteacher:None,page=1, size=10): query = db.query(Class).filter(Class.flag == 1) if cid: query=query.filter(Class.cid == cid) if class_name: query=query.filter(Class.class_name == class_name) if headteacher: query=query.filter(Class.headteacher == headteacher) total = query.count() items=query.order_by(Class.cid).offset((page-1)*size).limit(size).all() return total, items # 查询全部 @staticmethod def get_all_class(db:Session): return db.query(Class).filter(Class.flag==1).all() # 查询学生 @staticmethod def get_class_student(db:Session,class_id:int): cls = ClassDao.get_class(db,class_id) if not cls: return None return {"id": Class.student.sid, "name": Class.student.name, "age": Class.student.age, "gender": Class.student.gender} #查询老师 @staticmethod def get_class_teacher(db:Session,class_id:int): cls = ClassDao.get_class(db,class_id) if not cls: return None return {"id":Class.teachers.id,"name":Class.teachers.name} # 更新 @staticmethod def update_class(db:Session,class_id:int,data:ClassUpdate): cls = ClassDao.get_class(db,class_id) if not cls: return None if cls.class_name: cls.class_name = data.class_name if cls.headteacher: cls.headteacher = data.headteacher db.commit() return cls # 删除 @staticmethod def delete_class(db:Session,cid:int): cls = ClassDao.get_class(db,cid) if not cls: return False cls.flag=0 db.commit() db.refresh(cls) return cls