Rental Services API

This is a FastAPI application for managing rental services. It provides endpoints for managing rental items, categories, customers, and rental records.

Features

  • Rental items management (with categories)
  • Customer management
  • Rental records tracking
  • SQLite database with SQLAlchemy ORM
  • Alembic for database migrations
  • OpenAPI documentation

API Endpoints

Health Check

  • GET /health - Check API health

Categories

  • GET /api/v1/rentals/categories/ - List all categories
  • GET /api/v1/rentals/categories/{category_id} - Get category by ID

Rental Items

  • GET /api/v1/rentals/items/ - List all rental items
    • Query params:
      • category_id - Filter by category
      • available_only - Filter by availability
  • GET /api/v1/rentals/items/{item_id} - Get rental item by ID

Customers

  • GET /api/v1/rentals/customers/ - List all customers
  • GET /api/v1/rentals/customers/{customer_id} - Get customer by ID
  • GET /api/v1/rentals/customers/email/{email} - Get customer by email

Rental Records

  • GET /api/v1/rentals/records/ - List all rental records
    • Query params:
      • customer_id - Filter by customer
      • item_id - Filter by rental item
      • active_only - Filter active rentals only
  • GET /api/v1/rentals/records/{record_id} - Get rental record by ID

Project Structure

├── app/
│   ├── api/
│   │   └── v1/
│   │       ├── endpoints/
│   │       │   └── rentals.py      # API endpoints
│   │       └── api.py              # API router
│   ├── core/
│   │   └── config.py               # Application configuration
│   ├── crud/
│   │   ├── base.py                 # Base CRUD operations
│   │   ├── crud_category.py        # Category CRUD operations
│   │   ├── crud_customer.py        # Customer CRUD operations
│   │   ├── crud_rental_item.py     # Rental item CRUD operations
│   │   └── crud_rental_record.py   # Rental record CRUD operations
│   ├── db/
│   │   └── session.py              # Database session
│   ├── models/
│   │   ├── base.py                 # Base model
│   │   └── rental.py               # Database models
│   └── schemas/
│       ├── category.py             # Category schemas
│       ├── customer.py             # Customer schemas
│       ├── rental_item.py          # Rental item schemas
│       └── rental_record.py        # Rental record schemas
├── migrations/                     # Alembic migrations
│   ├── versions/
│   │   └── 001_initial_schema.py   # Initial database schema
│   ├── env.py                      # Migration environment
│   └── script.py.mako              # Migration script template
├── alembic.ini                     # Alembic configuration
├── main.py                         # Application entry point
└── requirements.txt                # Python dependencies

Setup and Running

  1. Install dependencies:

    pip install -r requirements.txt
    
  2. Run database migrations:

    alembic upgrade head
    
  3. Start the API server:

    uvicorn main:app --reload
    
  4. Access the API documentation:

Environment Variables

The application uses environment variables for configuration. Create a .env file in the root directory with the following variables:

PROJECT_NAME=Rental Services API
API_V1_STR=/api/v1

Database

The application uses SQLite as the database. The database file is stored at /app/storage/db/db.sqlite. Make sure the directory exists or is created at runtime.

License

This project is licensed under the MIT License.

Description
Project: Rental Services API
Readme 44 KiB
Languages
Python 98.2%
Mako 1.8%