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 :
-
Base projet and idea : awtkns
-
Convert _id to id : mclate github guide
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 datetime import datetime
from typing import List, Optional, Union
from fastapi import FastAPI
from pydantic import Field
from fastapi_crudrouter_mongodb import CRUDRouter, MongoModel, MongoObjectId, CRUDLookup
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.
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 fastapi-crudrouter-mongodb-0.0.2.tar.gz
.
File metadata
- Download URL: fastapi-crudrouter-mongodb-0.0.2.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 03c61c541e252dfab6913943c96326fda9cd358b0fd24c325be3cb07ecb8f7b4 |
|
MD5 | 36db086912fe452e2a6d4109bf6862d1 |
|
BLAKE2b-256 | 8f99b06949fad08ac2adc14302be23ceddec87908d65c5dbd8bad604f1660a1a |
File details
Details for the file fastapi_crudrouter_mongodb-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: fastapi_crudrouter_mongodb-0.0.2-py3-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e9f6bef12e8cb8c43df72293fc7a279dbcbab6d5f8798945713f6ca6fc49715 |
|
MD5 | 2f45178f7d44465a3cb8d16bc123ab47 |
|
BLAKE2b-256 | 4fc6e97f1363d1539878e182f4f4f98cd397bcfaeddf3b16bedcbd9cb7c647d5 |