Automated Action 7fdb11e728 Create FastAPI REST API with SQLite database and CRUD operations
- Set up project structure with FastAPI, SQLAlchemy, and Alembic
- Create database models for User and Item
- Implement CRUD operations for all models
- Create API endpoints with validation
- Add health check endpoint
- Configure CORS middleware
- Set up database migrations
- Add comprehensive documentation in README
2025-05-21 08:51:23 +00:00

98 lines
2.2 KiB
Python

from typing import Any, List
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from app import schemas
from app.api import deps
from app.crud.crud_user import user
router = APIRouter()
@router.get("/", response_model=List[schemas.User])
def read_users(
db: Session = Depends(deps.get_db),
skip: int = 0,
limit: int = 100,
) -> Any:
"""
Retrieve users.
"""
users = user.get_multi(db, skip=skip, limit=limit)
return users
@router.post("/", response_model=schemas.User)
def create_user(
*,
db: Session = Depends(deps.get_db),
user_in: schemas.UserCreate,
) -> Any:
"""
Create new user.
"""
user_obj = user.get_by_email(db, email=user_in.email)
if user_obj:
raise HTTPException(
status_code=400,
detail="The user with this email already exists in the system.",
)
user_obj = user.create(db, obj_in=user_in)
return user_obj
@router.get("/{user_id}", response_model=schemas.User)
def read_user_by_id(
user_id: int,
db: Session = Depends(deps.get_db),
) -> Any:
"""
Get a specific user by id.
"""
user_obj = user.get(db, id=user_id)
if not user_obj:
raise HTTPException(
status_code=404,
detail="User not found",
)
return user_obj
@router.put("/{user_id}", response_model=schemas.User)
def update_user(
*,
db: Session = Depends(deps.get_db),
user_id: int,
user_in: schemas.UserUpdate,
) -> Any:
"""
Update a user.
"""
user_obj = user.get(db, id=user_id)
if not user_obj:
raise HTTPException(
status_code=404,
detail="User not found",
)
user_obj = user.update(db, db_obj=user_obj, obj_in=user_in)
return user_obj
@router.delete("/{user_id}", response_model=schemas.User)
def delete_user(
*,
db: Session = Depends(deps.get_db),
user_id: int,
) -> Any:
"""
Delete a user.
"""
user_obj = user.get(db, id=user_id)
if not user_obj:
raise HTTPException(
status_code=404,
detail="User not found",
)
user_obj = user.remove(db, id=user_id)
return user_obj