Files
gitlab-instance-0a899031_an…/app/main.py
2024-07-15 20:39:16 +08:00

80 lines
2.6 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
from fastapi.middleware.cors import CORSMiddleware
# 初始化数据库
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
# 允许所有来源跨域访问(不推荐用于生产环境)
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"], # 允许所有HTTP方法
allow_headers=["*"], # 允许所有HTTP头
)
# 依赖注入
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/hello")
async def hello():
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)