fastapi_contrib.db package¶
Submodules¶
fastapi_contrib.db.client module¶
- class fastapi_contrib.db.client.MongoDBClient[source]¶
Bases:
object
Singleton client for interacting with MongoDB. Operates mostly using models, specified when making DB queries.
Implements only part of internal motor methods, but can be populated more
Please don’t use it directly, use fastapi_contrib.db.utils.get_db_client.
- async count(model: fastapi_contrib.db.models.MongoDBModel, session: Optional[pymongo.client_session.ClientSession] = None, **kwargs) → int[source]¶
- async delete(model: fastapi_contrib.db.models.MongoDBModel, session: Optional[pymongo.client_session.ClientSession] = None, **kwargs) → pymongo.results.DeleteResult[source]¶
- async get(model: fastapi_contrib.db.models.MongoDBModel, session: Optional[pymongo.client_session.ClientSession] = None, **kwargs) → dict[source]¶
- async insert(model: fastapi_contrib.db.models.MongoDBModel, session: Optional[pymongo.client_session.ClientSession] = None, include=None, exclude=None) → pymongo.results.InsertOneResult[source]¶
- list(model: fastapi_contrib.db.models.MongoDBModel, session: Optional[pymongo.client_session.ClientSession] = None, _offset: int = 0, _limit: int = 0, _sort: Optional[list] = None, **kwargs) → pymongo.cursor.Cursor[source]¶
- async update_many(model: fastapi_contrib.db.models.MongoDBModel, filter_kwargs: dict, session: Optional[pymongo.client_session.ClientSession] = None, **kwargs) → pymongo.results.UpdateResult[source]¶
- async update_one(model: fastapi_contrib.db.models.MongoDBModel, filter_kwargs: dict, session: Optional[pymongo.client_session.ClientSession] = None, **kwargs) → pymongo.results.UpdateResult[source]¶
fastapi_contrib.db.models module¶
- class fastapi_contrib.db.models.MongoDBModel(*, id: int = None)[source]¶
Bases:
pydantic.main.BaseModel
Base Model to use for any information saving in MongoDB. Provides id field as a base, populated by id-generator. Use it as follows:
class MyModel(MongoDBModel): additional_field1: str optional_field2: int = 42 class Meta: collection = "mymodel_collection" mymodel = MyModel(additional_field1="value") mymodel.save() assert mymodel.additional_field1 == "value" assert mymodel.optional_field2 == 42 assert isinstance(mymodel.id, int)
- async classmethod get(**kwargs) → Optional[fastapi_contrib.db.models.MongoDBModel][source]¶
- id: int¶
- classmethod set_id(v, values, **kwargs) → int[source]¶
If id is supplied (ex. from DB) then use it, otherwise generate new.
- class fastapi_contrib.db.models.MongoDBTimeStampedModel(*, id: int = None, created: datetime.datetime = None)[source]¶
Bases:
fastapi_contrib.db.models.MongoDBModel
TimeStampedModel to use when you need to have created field, populated at your model creation time.
Use it as follows:
class MyTimeStampedModel(MongoDBTimeStampedModel): class Meta: collection = "timestamped_collection" mymodel = MyTimeStampedModel() mymodel.save() assert isinstance(mymodel.id, int) assert isinstance(mymodel.created, datetime)
- created: datetime.datetime¶
fastapi_contrib.db.serializers module¶
fastapi_contrib.db.utils module¶
- async fastapi_contrib.db.utils.create_indexes() → List[str][source]¶
Gets all models in project and then creates indexes for each one of them. :return: list of indexes that has been invoked to create
(could’ve been created earlier, it doesn’t raise in this case)
- fastapi_contrib.db.utils.default_id_generator(bit_size: int = 32) → int[source]¶
Generator of IDs for newly created MongoDB rows.
- Returns
bit_size long int
- fastapi_contrib.db.utils.get_db_client()[source]¶
Gets instance of MongoDB client for you to make DB queries. :return: MongoDBClient
- fastapi_contrib.db.utils.get_models() → list[source]¶
Scans settings.apps_folder_name. Find models modules in each of them and get all attributes there. Last step is to filter attributes to return only those, subclassed from MongoDBModel (or timestamped version).
Used internally only by create_indexes function.
- Returns
list of user-defined models (subclassed from MongoDBModel) in apps
- fastapi_contrib.db.utils.get_next_id() → int[source]¶
Retrieves ID generator function from the path, specified in project’s conf. :return: newly generated ID
- fastapi_contrib.db.utils.setup_mongodb(app: fastapi.applications.FastAPI) → None[source]¶
Helper function to setup MongoDB connection & motor client during setup. Use during app startup as follows:
app = FastAPI() @app.on_event('startup') async def startup(): setup_mongodb(app)
- Parameters
app – app object, instance of FastAPI
- Returns
None