from fastapi import APIRouter, Depends, HTTPException from .. import models, schemas from ..database import SessionLocal, engine from sqlalchemy.orm import Session from ..crud import users import hashlib def get_db(): db = SessionLocal() try: yield db finally: db.close() router = APIRouter() # 根据user id查询用户 @router.get("/users/{user_id}", tags=["users"], response_model=schemas.users.User) async def get_user(user_id: int, db: Session = Depends(get_db)): user = users.get_user(db, user_id) if user is None: raise HTTPException(status_code=404, detail="User not found") return user # 查询用户列表 @router.get("/users", tags=["users"], response_model=schemas.users.UserList) async def get_users(skip: int = 0, limit: int = 100, db: Session= Depends(get_db)): userLst = users.get_users(db, skip=skip, limit=limit) return userLst # 新建用户 @router.post("/users", tags=["users"], response_model=schemas.users.User) def create_user(user: schemas.users.UserCreate, db: Session= Depends(get_db)): db_user = users.get_user_by_email(db, email=user.email) if db_user: raise HTTPException(status_code=400, detail="Email already registered") return users.create_user(db, user) # 删除用户 @router.delete("/users/{user_id}", response_model={}) def delete_user(user_id: int, db: Session = Depends(get_db)): del_count = users.delete_user(db, user_id) return {"count": del_count} # 修改用户(有问题) @router.put("/users/{user_id}", response_model={}) def modify_user(user_id:int, user: schemas.users.UserCreate, db: Session= Depends(get_db)): count = users.modify_user(db, user_id, user) return {"count": count} # 用户登录 @router.post("/login", response_model=schemas.users.User) def login(email: str,password:str, db: Session= Depends(get_db)): db_user = users.get_user_by_email(db, email=email) if db_user is None: raise HTTPException(status_code=400, detail="Email not registered") md5 = hashlib.md5() md5.update(password.encode('utf-8')) passwordMD5 = md5.hexdigest() if passwordMD5 != db_user.password: raise HTTPException(status_code=404, detail="Email or Password is error") return db_user