Skip to main content

No project description provided

Project description

Mongo Repository

This package provide a sync and async repositories utilities for mongodb.

Tutorial

=======

The first step is to create a schema inheriting from MongoBaseModel and then create a specialized repository inheriting from Repository or AsyncRepository according to the application.

Creating a db schema

from mongorepository.models import MongoBaseModel

class Person(MongoBaseModel):
    name: str
    age: int
    job: Optional[str]

Then create a person repository inheriting from Repository

import pymongo
from mongorepository.repositories.mongo import Repository

def get_database(db_name: str):
    client = pymongo.MongoClient("mongodb://localhost:2707")
    return client.get_database(db_name)

class PersonRepository(Repository[Person]):
    def __init__(self):
        super().__init__(get_database("my_db_name"))

    class Config:
        collection = "persons"

And then:


person = Person(name="John Doe", age=33)
repository = PersonRepository()

repository.save(person)

For async flow use this:

import asyncio
from motor.motor_asyncio import AsyncIOMotorClient
from mongorepository.repositories.async_mongo import AsyncRepository


def get_database(db_name):
    client = AsyncIOMotorClient("mongodb://localhost:27017")
    database = client.get_database(db_name)
    database.get_io_loop = asyncio.get_event_loop
    return database


class PersonRepository(AsyncRepository[Person]):

    def __init__(self):
        super().__init__(get_database("my_db_name"))

    class Config:
        collection = "persons"


person = Person(name="John Doe", age=33)
repository = PersonRepository()

asyncio.run(repository.save(person))

Project details


Download files

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

Source Distribution

mongorepository-0.6.4.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mongorepository-0.6.4-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file mongorepository-0.6.4.tar.gz.

File metadata

  • Download URL: mongorepository-0.6.4.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.12.3 Linux/6.8.0-1021-azure

File hashes

Hashes for mongorepository-0.6.4.tar.gz
Algorithm Hash digest
SHA256 1d78d06d77f989461518966149bf7abf725724fc0379bba6d2e330b51267f34d
MD5 67e145c681ade1925f4eb90d5f2abad8
BLAKE2b-256 660dcd990b0fdad3390f0ef6b940d70344970fe6839f08156c871f804add2dfa

See more details on using hashes here.

File details

Details for the file mongorepository-0.6.4-py3-none-any.whl.

File metadata

  • Download URL: mongorepository-0.6.4-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.12.3 Linux/6.8.0-1021-azure

File hashes

Hashes for mongorepository-0.6.4-py3-none-any.whl
Algorithm Hash digest
SHA256 95bb7faade26ba393309cd4f7575c27fc1e2ff4783f82d8a72282791938bb323
MD5 6f55b2868df26f4eb0c784fb98e4203e
BLAKE2b-256 6e1f06f0e2930a698f86a6ec302326db60b262126f1026ccf19671a745f4919a

See more details on using hashes here.

Supported by

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