Files
fastapi_tutor_yb/router/dbopt/order.py
T

52 lines
1.8 KiB
Python

# 编写更订单相关的增删改查接口,结合数据库
from fastapi import FastAPI, APIRouter, Depends
from sqlalchemy import *
from sqlalchemy.orm import declarative_base,sessionmaker
from datetime import datetime
from pydantic import BaseModel
from model.order import OrderRequest,Order,get_session,OrderResponse
route = APIRouter(prefix="/order",tags=["orders"])
# 模糊查询
@route.get('/',response_model=list[OrderResponse])
def orders(id:int=None, user_id:int=None, title:str=None,session=Depends(get_session)):
q = session.query(Order)
if id: q = q.filter( Order.id == id )
if user_id: q = q.filter( Order.userid == userid )
if title: q = q.where(Order.title.like('%'+title+'%'))
r = q.all()
session.close()
return r
@route.get('/{id}',response_model=OrderResponse)
def orders(id:int):
session = Session()
r = session.query(Order).filter( Order.id == id ).all()
session.close()
return [ {"order_id":i.id,'order_title':i.title,"user_id":i.userid,"create_date":i.create_date,"update_date":i.update_date} for i in r]
@route.delete('/',response_model=OrderResponse)
def orders(session=Depends(get_session)):
return '删除订单'
@route.post('/',response_model=OrderResponse)
def orders(order:OrderRequest,session=Depends(get_session)):
d = order.model_dump() # d = {"title":xxx,"userid":xxx}
o1 = Order( **d )
session.add(o1)
session.commit()
session.close()
return {'code':200,'detail':'添加成功!'}
@route.put('/{id}',response_model=OrderResponse)
def orders(order:OrderRequest,id:int,session=Depends(get_session)):
session.query( Order ).filter( Order.id == id ).update( order.model_dump(exclude_unset=True) )
session.commit()
res = session.query(Order).filter(Order.id == id).first()
session.close()
return res