Skip to main content

A package to generating FastAPI CRUD operations and routes

Project description

API Forge

PyPI version Documentation Status

Overview

API Forge is a Python library built on top of FastAPI that streamlines database model management and API route generation. It provides a comprehensive type system for managing API responses, reducing boilerplate code, and ensuring type safety throughout your application.

The library automatically generates API routes, database models, and metadata endpoints, significantly reducing development time while maintaining code quality and type safety.

Key Features

  • Automatic Model Generation: Creates SQLAlchemy and Pydantic models from your existing database schema
  • Dynamic Route Generation: Automatically generates FastAPI routes for tables, views, and functions
  • Database Function Support: Native support for PostgreSQL functions, procedures, and triggers
  • Metadata API: Built-in routes to explore your database structure programmatically
  • Flexible Database Connection: Support for PostgreSQL, MySQL, and SQLite with connection pooling
  • Advanced Type System: Comprehensive type handling including JSONB and Array types
  • Schema-based Organization: Route organization based on database schemas
  • Full Type Hinting: Complete type hint support for better IDE integration

Installation

Install API Forge using pip:

pip install api-forge

Quick Start

Here's how to quickly set up an API with API Forge:

from forge import *  # import mod prelude (main structures)

# Initialize the main Forge application
app_forge = Forge(
    info=ForgeInfo(
        PROJECT_NAME="MyAPI",
        VERSION="1.0.0"
    )
)
app = app_forge.app

# Configure database connection
db_manager = DBForge(
    config=DBConfig(
        db_type="postgresql",
        driver_type="sync",
        database="mydb",
        user="user",
        password="password",
        host="localhost",
        port=5432,
        pool_config=PoolConfig(
            pool_size=5,
            max_overflow=10,
            pool_timeout=30,
            pool_pre_ping=True
        )
    )
)

# Initialize model management
model_forge = ModelForge(
    db_manager=db_manager,
    include_schemas=['public', 'app']
)

# Set up API routes
api_forge = APIForge(model_forge=model_forge)

# Generate all routes
# This will add the routes to it's respective router
api_forge.gen_table_routes()  # CRUD routes for tables
api_forge.gen_view_routes()   # Read routes for views
api_forge.gen_fn_routes()     # Routes for database functions

# Add the routes to the FastAPI app
[app.include_router(r) for r in api_forge.get_routers()]

Then run the application using Uvicorn:

uvicorn myapi:app --reload

Or run the script directly:

if __name__ == "__main__":
    import uvicorn  # import the Uvicorn server (ASGI)
    uvicorn.run(
        app=app,
        host=app_forge.uvicorn_config.host,
        port=app_forge.uvicorn_config.port,
        reload=app_forge.uvicorn_config.reload
    )

Generated Routes

API Forge automatically generates the following types of routes:

Table Routes

  • POST /{schema}/{table} - Create
  • GET /{schema}/{table} - Read (with filtering)
  • PUT /{schema}/{table} - Update
  • DELETE /{schema}/{table} - Delete

View Routes

  • GET /{schema}/{view} - Read with optional filtering

Function Routes

  • POST /{schema}/fn/{function} - Execute function
  • POST /{schema}/proc/{procedure} - Execute procedure

License

API Forge is released 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

api_forge-0.0.6.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

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

api_forge-0.0.6-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file api_forge-0.0.6.tar.gz.

File metadata

  • Download URL: api_forge-0.0.6.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.11

File hashes

Hashes for api_forge-0.0.6.tar.gz
Algorithm Hash digest
SHA256 b25baa0f2449369bf5cab5f34dbebc6b1d8741ed8b78b2f38b3c44f3926f9634
MD5 7f78754a9cc334e16fbd3fe552691745
BLAKE2b-256 548b57801f7a78344e95ca2eba5f1af08577b479f7cac641dd1abf906cfd516b

See more details on using hashes here.

File details

Details for the file api_forge-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: api_forge-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.11

File hashes

Hashes for api_forge-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a38227410eaf80d1f464592451727d3276d653941a9597f301fe514ea771ab1f
MD5 d5232b80c979ace9dbfd4b0485dc93d7
BLAKE2b-256 e61c5b7e08aa5c372172ec8e273166d71869a944529213e6b0c5731dde925a21

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