diff --git a/api/class_api.py b/api/class_api.py index e69de29..d5af66f 100644 --- a/api/class_api.py +++ b/api/class_api.py @@ -0,0 +1,25 @@ +from fastapi import APIRouter,Depends,HTTPException +from schemas.class_schema import * +from core.database import get_db +from dao.class_dao import * + +classes_router = APIRouter() + +@classes_router.post('/',response_model=ClassResponse) +def post_classes(classes:ClassCreate,db=Depends(get_db)): + c = classes.model_dump() + r = post_classes_dao( c , db ) + if r : + return ClassResponse( total=1,data=c ) + else : + raise HTTPException(status_code=500,detail='添加失败,服务器繁忙,请稍后添加!') + + +@classes_router.put('/{id}',response_model=ClassResponse) +def put_classes(id:int,classes:ClassUpdate,db=Depends(get_db)): + updates = classes.model_dump( exclude_unset=True ) + r = update_classes_dao( id , db , updates ) + if r : + return ClassResponse( total=1,data=updates ) + else : + raise HTTPException(status_code=500, detail='更新失败,该班级已不存在或服务器繁忙,请稍后更新!') \ No newline at end of file diff --git a/dao/class_dao.py b/dao/class_dao.py index e69de29..e1f93a0 100644 --- a/dao/class_dao.py +++ b/dao/class_dao.py @@ -0,0 +1,29 @@ +from models.class_model import Classes + + +def post_classes_dao( c , db ): + try : + cc = Classes( **c ) + db.add( cc ) + except : + db.rollback() + return False + else : + db.commit() + return True + +def update_classes_dao( class_id , db , updates ): + try : + db.query( Classes ).filter( Classes.id==class_id , Classes.is_deleted==0 ) .update( updates ) + except : + db.rollback() + return False + else : + db.commit() + return True + +# def get_classes_dao( class_id , class_name , db ): +# try : +# r = db.query( Classes ).filter( Classes.id==class_id , Classes.is_deleted==0 ) .all() +# except : +# db.rollback() \ No newline at end of file diff --git a/main.py b/main.py index fe32962..51048c7 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,8 @@ app = FastAPI() app.middleware("http")(log_middleware) #-------------朱婷婷-------------- +from api.class_api import classes_router +app.include_router(classes_router,tags=['班级接口'],prefix="/classes") #-------------李玉杰-------------- diff --git a/models/class_model.py b/models/class_model.py index efd97c7..8c7935d 100644 --- a/models/class_model.py +++ b/models/class_model.py @@ -1,7 +1,6 @@ -from sqlalchemy import * -from datetime import datetime,time,date - -Base = declarative_base() # 执行函数,返回一个基类 +from sqlalchemy import * # 导入sqlalchemy模块下所有的类,以便下面创建班级表模型和声明表的字段 +from datetime import datetime # 导入datetime模块下的datetime类 +from core.database import Base # 从core软件包下的database模块导入Base class Classes( Base ): # 在python里的名字 __tablename__ = 'classes' # 在数据库中表的名字 diff --git a/schemas/class_schema.py b/schemas/class_schema.py index e69de29..05029b6 100644 --- a/schemas/class_schema.py +++ b/schemas/class_schema.py @@ -0,0 +1,24 @@ +from pydantic import BaseModel # 导入pydantic模块下的BaseModel类 +from datetime import datetime,date # 导入datetime模块下的datetime,date类 + + +# ————定义"创建班级"的"请求体"模型———— +class ClassCreate( BaseModel ): + class_no: str + class_name: str + +# ————定义"更新班级"的"请求体"模型———— +class ClassUpdate( BaseModel ): + class_no: str|None = None + class_name: str|None = None + start_date : date|None = None + end_date : date|None = None + created_at : datetime|None = None + update_at : datetime|None = None + +# ————定义"班级"的"响应体"模型———— +class ClassResponse( BaseModel ): + code:int = 200 + detail:str = '执行成功' + total:int = 0 + data:str|dict|list|tuple