67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
from datetime import datetime
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
from fastapi.params import Depends
|
|
from sqlalchemy.orm import Session
|
|
|
|
from dao.teachers_dao import add_teachers, del_teachers, update_teachers, search_teachers, \
|
|
search_teachers_by_id, get_teacher_classes
|
|
from database import get_db
|
|
from schemas.req import AddTeacher, DeleteTeacher, UpdateTeacher
|
|
|
|
router=APIRouter(prefix="/teacher",tags=["老师管理"])
|
|
@router.post("/teachers")
|
|
async def create_teacher(tea:AddTeacher,db:Session=Depends(get_db)):
|
|
date_obj=datetime.strptime(tea.t_created,"%Y-%m-%d") # 将字符串转时间
|
|
data={
|
|
"t_name":tea.t_name,
|
|
"t_gender":tea.t_gender,
|
|
"t_phone":tea.t_phone,
|
|
"t_subject":tea.t_subject,
|
|
"t_created":date_obj
|
|
}
|
|
res=add_teachers(db, data["t_name"],data["t_gender"],data["t_phone"],data["t_subject"],data["t_created"])
|
|
return {"msg":"新增成功","data":res}
|
|
|
|
@router.delete("/{t_id}")
|
|
def delete_teacher(dele:DeleteTeacher,db:Session=Depends(get_db)):
|
|
res=del_teachers(db,t_id=dele.t_id,t_name=dele.t_name)
|
|
if res.get("msg") == "没找到老师信息":
|
|
raise HTTPException(404, detail="老师不存在")
|
|
return {"msg": "删除成功"}
|
|
|
|
|
|
@router.put("/{t_id}")
|
|
async def update_tea(t_id:int,update:UpdateTeacher,db:Session=Depends(get_db)):
|
|
date_obj = datetime.strptime(update.t_created, "%Y-%m-%d")
|
|
res=update_teachers(db,t_id=t_id,
|
|
new_name=update.t_name,
|
|
new_gender=update.t_gender,
|
|
new_phone=update.t_phone,
|
|
new_subject=update.t_subject,
|
|
new_created=date_obj
|
|
)
|
|
if res.get("msg")=="没找到老师信息":
|
|
raise HTTPException(404,detail="老师不存在")
|
|
return {"msg":"修改成功","data":res}
|
|
|
|
@router.get("/list")
|
|
def list_teachers(db:Session=Depends(get_db),page:int=1,size:int=3):
|
|
res=search_teachers(db,page,size)
|
|
return res
|
|
|
|
|
|
@router.get("/{t_id}")
|
|
def get_one(t_id:int, db:Session=Depends(get_db)):
|
|
tea = search_teachers_by_id(db, t_id)
|
|
if not tea:
|
|
raise HTTPException(404,detail="老师不存在")
|
|
return {"data":tea}
|
|
|
|
@router.get("/{t_id}/classes")
|
|
async def get_classes(t_id:int, db:Session=Depends(get_db)):
|
|
data=get_teacher_classes(db, t_id)
|
|
if not data:
|
|
raise HTTPException(404,detail="老师不存在")
|
|
return {"data":data}
|