A package to generating FastAPI CRUD operations and routes
Project description
API Forge
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}- CreateGET /{schema}/{table}- Read (with filtering)PUT /{schema}/{table}- UpdateDELETE /{schema}/{table}- Delete
View Routes
GET /{schema}/{view}- Read with optional filtering
Function Routes
POST /{schema}/fn/{function}- Execute functionPOST /{schema}/proc/{procedure}- Execute procedure
License
API Forge is released under the MIT License. See the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file api_forge-0.0.7a0.tar.gz.
File metadata
- Download URL: api_forge-0.0.7a0.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65af97002e84632bb30a04931d10016ebb38eb0bd93ee7fe6a28a7b53129527c
|
|
| MD5 |
0e3311a45f9e754cb69e4e28cdc85f62
|
|
| BLAKE2b-256 |
400e1d9b816c7249a79bdbbb6af7b721a3454679b0143a4823b15b243eaf43c1
|
File details
Details for the file api_forge-0.0.7a0-py3-none-any.whl.
File metadata
- Download URL: api_forge-0.0.7a0-py3-none-any.whl
- Upload date:
- Size: 30.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc78913717fc265d306e87b8e2c2d94a35c400c35e8a993ac14999adc8b03d6d
|
|
| MD5 |
e9b114a45629c120ea0bd1e9f6119345
|
|
| BLAKE2b-256 |
c21d2598ffe7189c9fd791a9b6c9132c9187ec4cb7c0f6d3af2ba3034de331f7
|