Spaces:
Sleeping
Sleeping
| from typing import List | |
| from fastapi import APIRouter, Depends, HTTPException | |
| from sqlalchemy.orm import Session | |
| from app.engine.postgresdb import get_db | |
| from app.schema.index import UserCreate, User as UserSchema | |
| from app.model.user import User as UserModel | |
| user_router = r = APIRouter(prefix="/api/v1/users", tags=["users"]) | |
| async def create_user(user: UserCreate, db: Session = Depends(get_db)): | |
| try: | |
| db_user = ( | |
| db.query(UserModel).filter(UserModel.email == user.email).sort_by(UserModel.updated_at, desc=True).first() | |
| ) | |
| if db_user and not db_user.is_deleted: | |
| raise HTTPException(status_code=409, detail="User already exists") | |
| db_user = UserModel(**user.dict()) | |
| db.add(db_user) | |
| db.commit() | |
| db.refresh(db_user) | |
| return db_user | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| async def get_user(user_id: int, db: Session = Depends(get_db)): | |
| user = db.query(UserModel).get(user_id) | |
| if not user: | |
| raise HTTPException(status_code=404, detail="User not found") | |
| return user | |
| async def update_user(user_id: int, user_payload: UserCreate, db: Session = Depends(get_db)): | |
| user = db.query(UserModel).get(user_id) | |
| if not user: | |
| raise HTTPException(status_code=404, detail="User not found") | |
| user.name = user_payload.name | |
| user.email = user_payload.email | |
| db.commit() | |
| db.refresh(user) | |
| return user | |
| async def delete_user(user_id: int, db: Session = Depends(get_db)): | |
| user = db.query(UserModel).get(user_id) | |
| if not user: | |
| raise HTTPException(status_code=404, detail="User not found") | |
| user.is_deleted = True | |
| db.commit() | |
| db.refresh(user) | |
| return user | |