A package for generating FastAPI CRUD operations and routes
Project description
CRUD FORGE
Overview
CRUD FORGE is a powerful Python package that simplifies the creation of CRUD (Create, Read, Update, Delete) operations for FastAPI applications. It automatically generates API routes and database models based on your SQLAlchemy models, saving you time and reducing boilerplate code.
Features
- Automatic generation of CRUD routes for FastAPI
- Support for SQLAlchemy models and Pydantic schemas
- Flexible database connection management
- Easy-to-use API for creating models and routes
- Customizable route generation
- Built-in filtering for GET requests
- Comprehensive error handling
- Type hinting for better IDE support
Installation
Install FastAPI CRUD Generator using pip:
pip install crud-forge
Quick Start
Here's a simple example of how to use FastAPI CRUD Generator:
from fastapi import FastAPI
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from pydantic import BaseModel
from crud_forge.generators import generate_crud
from crud_forge.db import DatabaseManager
# Define your SQLAlchemy model
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
email = Column(String, unique=True, index=True)
# Define your Pydantic model
class UserSchema(BaseModel):
id: int
name: str
email: str
class Config:
orm_mode = True
# Set up FastAPI app and database
app = FastAPI()
db_manager = DatabaseManager(db_url="postgresql://user:password@localhost/dbname")
# Generate CRUD routes
generate_crud(User, UserSchema, app, db_manager.get_db)
# Run the app
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
This example sets up a simple User model and generates CRUD routes for it.
Usage
Setting up the Database Connection
Use the DatabaseManager
class to manage your database connection:
from crud_forge.db import DatabaseManager
db_manager = DatabaseManager(
user="myuser",
password="mypassword",
host="localhost",
database="mydatabase"
)
Or provide a complete database URL:
db_manager = DatabaseManager(db_url="postgresql://user:password@localhost/dbname")
Generating Models
Use the generators.models
module to generate SQLAlchemy & Pydantic models from your database:
from crud_forge.generators.models import generate_models, generate_views
from crud_forge.db import DatabaseManager
db_manager = DatabaseManager(db_url="postgresql://user:password@localhost/dbname")
store_models = generate_models(db_manager.engine, ['store'])
store_views = generate_views(db_manager.engine, ['store'])
Creating CRUD Routes
Use the create_crud_routes
function to automatically generate CRUD routes for your models:
from crud_forge.generators.crud import generate_crud
generate_crud(sqlalchemy_model, pydantic_model, router, db_dependency)
This will create the following routes:
GET /users/columns
: Get all columns of the User modelPOST /users
: Create a new userGET /users
: Get all users (with optional filtering)PUT /users
: Update users (with filtering)DELETE /users
: Delete users (with filtering)
Documentation
For more detailed information about the API and advanced usage, please refer to our documentation.
Contributing
We welcome contributions! Please see our Contributing Guide for more details.
License
FastAPI CRUD Generator is released under the MIT License. See the LICENSE file for more 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
File details
Details for the file crud_forge-0.1.2.tar.gz
.
File metadata
- Download URL: crud_forge-0.1.2.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f5a5169e11efb62285f75c7506d12777f074b7f11ccf75d218aaef0853eca3d |
|
MD5 | f07c01b6253829ed82752c3d5308d10a |
|
BLAKE2b-256 | a2dc2769e0130ef1ed6c5c9ffa826e228374ae81efb8667907f6cbc280e71540 |
File details
Details for the file crud_forge-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: crud_forge-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fea3a75eb73cc8d8bc8f4a5a5a36842f4cb0ee7a21966e60168e481db8fd25b4 |
|
MD5 | d474c51bd721050ae763918e05d6a577 |
|
BLAKE2b-256 | 4fd9c46642b7e477cbcfea2cde033bf2ffb69eb0c51671657c1a82eff38a7478 |