Skip to main content

A dynamic FastAPI router that automatically creates CRUD routes for your mongodb models

Project description

⚡ Create CRUD routes with lighting speed
A dynamic FastAPI router that automatically creates CRUD routes for your Mongodb models


Documentation:

Source Code: https://github.com/pierrod/fastapi-crudrouter-mongodb

Credits :


Tired of rewriting generic CRUD routes? Need to rapidly prototype a feature for a presentation or a hackathon? Thankfully, fastapi-crudrouter-mongodb has your back.

As an extension to the APIRouter included with FastAPI, the FastAPI CRUDRouter will automatically generate and document your CRUD routes for you, all you have to do is pass your model and maybe your database connection.

Installation

pip install fastapi-crudrouter-mongodb

Basic Usage

I will provide more examples in the future, but for now, here is a basic example of how to use the FastAPI CRUDRouter for Mongodb.

from fastapi import FastAPI
from fastapi_crudrouter_mongodb import CRUDRouter, CRUDLookup, MongoModel, MongoObjectId
import motor.motor_asyncio

# Database connection using motor 
client = motor.motor_asyncio.AsyncIOMotorClient(
    "mongodb://localhost:27017/local")

db = client.local

# Models
class MessageModel(MongoModel):
    id: Optional[MongoObjectId] = Field()
    message: str
    user_id: MongoObjectId
    created_at: Optional[str] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    updated_at: Optional[str] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

class AddressModel(MongoModel):
    id: Optional[MongoObjectId] = Field()
    street: str
    city: str
    state: str
    zip: str

class UserModel(MongoModel):
    id: Optional[MongoObjectId] = Field()
    name: str
    email: str
    addresses: Optional[List[AddressModel]]
    messages: Optional[Union[List[MessageModel], MessageModel]] = None
    

# Instantiating the CRUDRouter, and a lookup for the messages 
# a User is a model that contains a list of embedded addresses and related to multiple messages
messages_lookup = CRUDLookup(
        model=MessageModel,
        collection_name="messages",
        prefix="messages",
        local_field="_id",
        foreign_field="user_id"
    )

users_controller = CRUDRouter(
    model=UserModel,
    db=db,
    collection_name="users",
    lookups=[messages_lookup],
    prefix="/users",
    tags=["users"],
)

# Instantiating the FastAPI app
app = FastAPI()
app.include_router(users_controller)

OpenAPI Support

By default, all routes generated by the CRUDRouter will be documented according to OpenAPI spec.

Below are the default routes created by the CRUDRouter shown in the generated OpenAPI documentation.

Download files

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

Source Distribution

fastapi-crudrouter-mongodb-0.0.1.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file fastapi-crudrouter-mongodb-0.0.1.tar.gz.

File metadata

File hashes

Hashes for fastapi-crudrouter-mongodb-0.0.1.tar.gz
Algorithm Hash digest
SHA256 484fe8886a7de2c926bb366242cbcfcb51409c5e30295c64cd74eda76194d23e
MD5 0185766426de79d05e12b8862b4c32d9
BLAKE2b-256 8a59df3f27349db498b5ccea76299e87339dc16d6636a64b755575ff6449430c

See more details on using hashes here.

File details

Details for the file fastapi_crudrouter_mongodb-0.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_crudrouter_mongodb-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 139c4bbca80dbc9d0f0afd9c04d4529f76462485ff844fab3cc82d8bc9081dec
MD5 13a32bbcaa46f9401a5b47d2b7d1ae46
BLAKE2b-256 760a5b86a5d9f133eef095d967acfa19cb80fccec1eeb6cc0bcdb3bd85429afd

See more details on using hashes here.

Supported by

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