import datetime from fastapi import APIRouter,Depends,HTTPException from dao import * from stu_jiuye.request import PostRequest, EmpResponse, AddRequest,AddResponse,CompRequest,CompResponse from database import get_db CURD=APIRouter() @CURD.get('/emp',tags=['查询就业信息']) def get_stuinfo( #查询学生就业信息 stuname:str| None = None ,stuclass:str| None = None ,compname:str|None=None ,min_salary:int=0 ,max_salary:int|None=None ,somewhere:str|None=None ,employment_open_date:datetime.date|None=None ,offer_date:datetime.date|None=None ,db=Depends(get_db) ): #查询条件 r=get_emp_dao( #调用函数 stuname, stuclass, compname, min_salary, max_salary, somewhere, employment_open_date, offer_date, db ) if r: return r #成功返回 raise HTTPException(status_code=404, detail='名单不存在!') #失败返回错误信息 @CURD.post('/emp',response_model=EmpResponse,tags=['新增就业信息']) def add_stuinfo( #新增学生就业信息 p:PostRequest,db=Depends(get_db) ): #调用请求体 d=p.model_dump() #解析成字典 r=add_employment_dao(o=d,db=db) #调用函数 if not r: raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') #失败返回错误 return EmpResponse(totals=1, data=d) #成功返回响应体 @CURD.post('/emp/company',response_model=CompResponse,tags=['新增公司信息']) def add_company( #新增公司表信息 c:CompRequest,db=Depends(get_db) ): d = c.model_dump() #解析 r = add_company_dao(o=d, db=db) #调用添加公司函数 if not r: raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') #失败返回错误信息 return CompResponse(totals=1, data=d) #成功返回响应体 @CURD.post('/emp/company/address',response_model=AddResponse,tags=['新增公司所在区域']) def add_address( #新增公司地址区域信息 add:AddRequest,db=Depends(get_db) ): d = add.model_dump() #解析 r = add_address_dao(o=d, db=db) #调用添加地址函数 if not r: raise HTTPException(status_code=500, detail='服务器繁忙,请稍后添加!') #失败返回错误信息 return AddResponse(totals=1, data=d) #成功返回响应体 @CURD.put('/emp',tags=['更改就业信息']) def updata_stuinfo( #更新数据模块 up:PostRequest ,id:int ,db=Depends(get_db) ): #根据id选择对象 d = up.model_dump(exclude_unset=True) #解析 r = update_emp_dao(id=id, update_data=d, db=db) #调用更新函数 if not r: raise HTTPException(status_code=500, detail='没有更新!') #失败返回错误信息 return {'code': 200, 'totals': r, 'detail': '更新成功'} #成功返回信息 @CURD.delete('/emp/{id}',tags=['删除就业信息']) def delete_stuinfo( #删除模块 id:int ,db=Depends(get_db) ): #根据id选择对象 rows = delete_emp_dao(id, db) #调用删除函数 if not rows: raise HTTPException(status_code=500, detail='没有删除!') #失败返回错误信息 return {'code': 200, 'totals': rows, 'detail': '删除成功'} #成功返回信息