from fastapi import FastAPI, Depends, HTTPException
from sqlalchemy.orm import Session
from database import SessionLocal, engine, Base
from schemas import UserCreate, UserUpdate, UserOut, UserListOut
import crud
# 建表
Base.metadata.create_all(bind=engine)
app = FastAPI()
# ---------- 依赖注入(和 01 一样)----------
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# ---------- 创建用户 ----------
@app.post("/users/", response_model=UserOut)
def create_user(user_in: UserCreate, db: Session = Depends(get_db)):
return crud.create_user(db=db, user_in=user_in)
# ---------- 查询用户列表 ----------
@app.get("/users/", response_model=UserListOut)
def list_users(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
total = crud.count_users(db)
items = crud.get_users(db, skip=skip, limit=limit)
return {"total": total, "items": items}
# ---------- 查询单个用户 ----------
@app.get("/users/{user_id}", response_model=UserOut)
def get_user(user_id: int, db: Session = Depends(get_db)):
user = crud.get_user(db, user_id=user_id)
if not user:
raise HTTPException(status_code=404, detail="用户不存在")
return user
# ---------- 更新用户 ----------
@app.patch("/users/{user_id}", response_model=UserOut)
def update_user(user_id: int, user_in: UserUpdate, db: Session = Depends(get_db)):
user = crud.update_user(db, user_id=user_id, user_in=user_in)
if not user:
raise HTTPException(status_code=404, detail="用户不存在")
return user
# ---------- 删除用户 ----------
@app.delete("/users/{user_id}")
def delete_user(user_id: int, db: Session = Depends(get_db)):
success = crud.delete_user(db, user_id=user_id)
if not success:
raise HTTPException(status_code=404, detail="用户不存在")
return {"detail": "删除成功"}