Automated Action 0186fc8e70 Create movie database backend with FastAPI and SQLite
This commit implements a simple movie database backend inspired by IMDb. It includes:
- API endpoints for movies, actors, directors and genres
- SQLAlchemy models with relationships
- Alembic migrations
- Pydantic schemas for request/response validation
- Search and filtering functionality
- Health check endpoint
- Complete documentation
2025-05-19 20:28:07 +00:00
2025-05-19 20:15:13 +00:00

Movie Database API

A simple backend for a movie website inspired by IMDb, built with FastAPI and SQLite.

Features

  • Movies: Create, read, update, and delete movie information
  • Actors: Manage actor profiles and their roles in movies
  • Directors: Manage director profiles and their filmography
  • Genres: Categorize movies by genre
  • Search: Search for movies by title or overview
  • Filtering: Filter movies by various criteria (title, director, actor, genre, rating, year)

Technical Stack

  • Framework: FastAPI
  • Database: SQLite with SQLAlchemy ORM
  • Migrations: Alembic
  • Validation: Pydantic
  • Linting: Ruff

Getting Started

Prerequisites

  • Python 3.8 or higher

Installation

  1. Clone the repository
git clone <repository-url>
cd moviedbbackendservice-kduc3s
  1. Install dependencies
pip install -r requirements.txt
  1. Run database migrations
alembic upgrade head
  1. Start the server
uvicorn main:app --reload

The API will be available at http://localhost:8000

API Documentation

Once the server is running, you can access the interactive API documentation:

Database Schema

The application uses the following database schema:

  • Movie: Stores movie information (title, release date, overview, poster, runtime, rating)
  • Actor: Stores actor information (name, birth date, bio, photo)
  • Director: Stores director information (name, birth date, bio, photo)
  • Genre: Stores genre categories (name)
  • MovieActor: Junction table for the many-to-many relationship between movies and actors
  • MovieGenre: Junction table for the many-to-many relationship between movies and genres

API Endpoints

Health Check

  • GET /health: Check the health status of the API

Movies

  • GET /api/movies: List all movies with pagination and filtering
  • POST /api/movies: Create a new movie
  • GET /api/movies/{movie_id}: Get details of a specific movie
  • PUT /api/movies/{movie_id}: Update a movie
  • DELETE /api/movies/{movie_id}: Delete a movie
  • GET /api/movies/search/{query}: Search for movies by title or overview

Actors

  • GET /api/actors: List all actors with pagination and filtering
  • POST /api/actors: Create a new actor
  • GET /api/actors/{actor_id}: Get details of a specific actor
  • PUT /api/actors/{actor_id}: Update an actor
  • DELETE /api/actors/{actor_id}: Delete an actor

Directors

  • GET /api/directors: List all directors with pagination and filtering
  • POST /api/directors: Create a new director
  • GET /api/directors/{director_id}: Get details of a specific director
  • PUT /api/directors/{director_id}: Update a director
  • DELETE /api/directors/{director_id}: Delete a director

Genres

  • GET /api/genres: List all genres with pagination and filtering
  • POST /api/genres: Create a new genre
  • GET /api/genres/{genre_id}: Get details of a specific genre
  • PUT /api/genres/{genre_id}: Update a genre
  • DELETE /api/genres/{genre_id}: Delete a genre
Description
Project: MovieDB Backend Service
Readme 50 KiB
Languages
Python 98.5%
Mako 1.5%