Simple lib that dynamically creates repositories for MongoDB
Project description
mongorepo
Simple lib for python & mongodb, provides auto repository factory based on DTO type
Example with class
from mongorepo.classes import BaseMongoRepository
def mongo_client(mongo_uri: str = 'mongodb://mongodb:27017/') -> pymongo.MongoClient:
client: pymongo.MongoClient = pymongo.MongoClient(mongo_uri)
return client
@dataclass
class UserDTO:
username: str = ''
password: str = ''
class SimpleMongoRepository(BaseMongoRepository[UserDTO]):
...
repo = SimpleMongoRepository(collection=mongo_client().users_db.users)
new_user = UserDTO(username='admin', password='1234')
repo.add(new_user)
user = repo.get(username='admin')
print(user)
UserDTO(username='admin', password='1234')
Example with decorator
from mongorepo.asyncio.decorators import async_mongo_repository
def async_mongo_client(mongo_uri: str = 'mongodb://mongodb:27017/') -> AsyncIOMotorClient:
async_client = AsyncIOMotorClient(mongo_uri)
return async_client
@dataclass
class Person:
id: str
name: str
skills: list[str] = field(default_factory=list)
@async_mongo_repository(array_fields=['skills'])
class MongoRepository:
class Meta:
dto = Person
collection = async_mongo_client().people_db.people
repo = MongoRepository()
person = Person(id='289083', name='Artorias', skills=['python', 'c++', 'java', 'rust'])
await repo.add(person)
await repo.skills__append('c', id='289083')
await repo.skills__remove('python', id='289083')
artorias = await repo.get(id='289083')
print(artorias.skills)
['c++', 'java', 'rust', 'c']
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
mongorepo-0.1.0.tar.gz
(10.3 kB
view hashes)
Built Distribution
mongorepo-0.1.0-py3-none-any.whl
(16.4 kB
view hashes)
Close
Hashes for mongorepo-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86f4aa287bd34661a8c8a4244169699567fcd7a6c4d0e8ba96b5ebb0b0e6ff51 |
|
MD5 | 46280fed12ff91009d9f18e5efc18871 |
|
BLAKE2b-256 | 86931bde924945a96110c38812ae42fb4fb95d46f96d7e9f0d2176ebba9340e0 |