Files
gitlab-instance-0a899031_an…/app/main.py
hackrobot 7f9f3bbb49 update
2024-07-15 18:50:47 +08:00

66 lines
2.2 KiB
Python

from fastapi import FastAPI, HTTPException, Depends
from sqlalchemy.orm import Session
from typing import List, Optional
from app import models, schemas, crud
from app.database import SessionLocal, engine
# 初始化数据库
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
# 依赖注入
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/add", response_model=schemas.User)
def add_user(
nickname: Optional[str] = None,
remark: Optional[str] = None,
wechat_number: Optional[str] = None,
wxid: Optional[str] = None,
gender: Optional[str] = None,
friend_add_time: Optional[str] = None,
openid: Optional[str] = None,
db: Session = Depends(get_db)
):
return crud.create_user(db=db, user=schemas.UserCreate(
nickname=nickname, remark=remark, wechat_number=wechat_number,
wxid=wxid, gender=gender, friend_add_time=friend_add_time,
openid=openid))
@app.get("/users/", response_model=List[schemas.User])
def read_users(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
return crud.get_users(db=db, skip=skip, limit=limit)
@app.get("/user/{identifier}", response_model=schemas.User)
def read_user(identifier: str, db: Session = Depends(get_db)):
user = crud.get_user_by_openid_or_wxid(db, identifier=identifier)
if user is None:
raise HTTPException(status_code=404, detail="User not found")
return user
@app.delete("/user/{user_id}", response_model=schemas.User)
def delete_user(user_id: int, db: Session = Depends(get_db)):
user = crud.get_user(db=db, user_id=user_id)
if user is None:
raise HTTPException(status_code=404, detail="User not found")
return crud.delete_user(db=db, user=user)
@app.put("/user/{identifier}", response_model=schemas.User)
def update_user(identifier: str, user_update: schemas.UserUpdate, db: Session = Depends(get_db)):
user = crud.get_user_by_openid_or_wxid(db, identifier=identifier)
if user is None:
raise HTTPException(status_code=404, detail="User not found")
return crud.update_user(db=db, user=user, user_update=user_update)