Skip to main content

A FastAPI-based CRUD API generator for MySQL databases

Project description

smart-api-bridge

A flexible and dynamic CRUD (Create, Read, Update, Delete) operations library for FastAPI applications with MySQL database support.

Features

  • Dynamic CRUD operations for any MySQL table
  • Simple integration with FastAPI
  • Automatic pagination
  • Supports both hard delete and soft delete operations
  • Partial updates via the PATCH method
  • Configurable database connection
  • Secure authentication and authorization support

Installation

pip install smart-api-bridge

Quick Start

from fastapi import FastAPI
from api_bridge import APIBridge

app = FastAPI()

# Configure database connection
db_config = {
    "host": "localhost",
    "port": 3306,
    "database": "mydb",
    "user": "username",
    "password": "password@123",
}


# Initialize APIBridge
api_bridge = APIBridge(db_config)

# Create FastAPI app
app = FastAPI()
app.include_router(api_bridge.router)

# Run with uvicorn
# uvicorn main:app --reload

Available Endpoints

Method Endpoint Description
GET /api/test Test database connection
GET /api/{table_name} Fetch all records (supports pagination)
POST /api/{table_name} Insert a new record
PUT /api/{table_name}/{record_id} Update an existing record
PATCH /api/{table_name}/{record_id} Partially update a record
DELETE /api/{table_name}/{record_id} Soft delete a record
DELETE /api/{table_name}/{record_id}/hard Permanently delete a record

Example Applications

1. E-commerce Product Management System

Manage products, categories, inventory, and orders using dynamic CRUD operations:

import os
from fastapi import FastAPI
from api_bridge import APIBridge

app = FastAPI(title="E-commerce API")

# Load database config
db_config = {
    "host": os.getenv("DB_HOST", "localhost"),
    "port": int(os.getenv("DB_PORT", 3306)),
    "database": os.getenv("DB_NAME", "ecommerce"),
    "user": os.getenv("DB_USER", "user"),
    "password": os.getenv("DB_PASS", "password"),
}

# Initialize APIBridge
api_bridge = APIBridge(db_config)

app.include_router(api_bridge.router)

@app.get("/")
def read_root():
    return {"message": "E-commerce API ready"}

2. Content Management System (CMS)

Manage blog posts, pages, users, and media files:

from fastapi import FastAPI
from api_bridge import 
from fastapi.middleware.cors import CORSMiddleware
import os

app = FastAPI(title="CMS API")

# Configure CORS
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# Load database config
db_config = {
    "host": os.getenv("DB_HOST", "localhost"),
    "port": int(os.getenv("DB_PORT", 3306)),
    "database": os.getenv("DB_NAME", "cms"),
    "user": os.getenv("DB_USER", "user"),
    "password": os.getenv("DB_PASS", "password"),
}

# Initialize APIBridge
api_bridge = APIBridge(db_config)

app.include_router(api_bridge.router)

@app.get("/")
def read_root():
    return {"message": "CMS API ready"}

Workflow to Publish as a PyPI Package

  1. Prepare Your Package Structure:

    smart-api-bridge/
    ├── smart_api_bridge/
    │   ├── __init__.py
    │   ├── db.py
    │   ├── router.py
    ├── setup.py
    ├── README.md
    ├── LICENSE
    └── requirements.txt
    
  2. Test Your Package Locally:

    pip install -e .
    
  3. Build Your Package:

    pip install build
    python -m build
    
  4. Upload to PyPI Test:

    pip install twine
    twine upload --repository-url https://test.pypi.org/legacy/ dist/*
    
  5. Test Your Package from TestPyPI:

    pip install --index-url https://test.pypi.org/simple/ smart-api-bridge
    
  6. Upload to PyPI:

    twine upload dist/*
    

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smart_api_bridge-0.1.3.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smart_api_bridge-0.1.3-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file smart_api_bridge-0.1.3.tar.gz.

File metadata

  • Download URL: smart_api_bridge-0.1.3.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.18

File hashes

Hashes for smart_api_bridge-0.1.3.tar.gz
Algorithm Hash digest
SHA256 9c185e5d2a8a63db7348b6da0cd19917d2cb9e1a96134d5f15564aa129634254
MD5 5c54706e9e58009d28919504721c5025
BLAKE2b-256 c38be08b0276546b005ec979541921a963544e7a94588ecbf511e6b7ecfe91f1

See more details on using hashes here.

File details

Details for the file smart_api_bridge-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for smart_api_bridge-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7d31bbe094835cf72ee442cad2a370a70327418cdc4e340f164b7c4d274f677a
MD5 53550b5acd26e054344ad76a5d97399b
BLAKE2b-256 546064166041325c85164a0108232a84995755463a3384e510a927a9c6efc27d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page