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')
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()
admin = Person(id='289083', name='admin', skills=['python', 'c++', 'java', 'rust'])
await repo.add(admin)
await repo.skills__append('c', id='289083')
await repo.skills__remove('python', id='289083')
user = await repo.get(id='289083')
user.skills) # ['c++', 'java', 'rust', 'c']
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
mongorepo-0.1.6.tar.gz
(13.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
mongorepo-0.1.6-py3-none-any.whl
(19.8 kB
view details)
File details
Details for the file mongorepo-0.1.6.tar.gz.
File metadata
- Download URL: mongorepo-0.1.6.tar.gz
- Upload date:
- Size: 13.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.0-39-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f75168c9888d3bfcb292c745cef7a7db8c05c273b1b926609b41f6d8eeefb5b2
|
|
| MD5 |
7695ed97bf66296dc453143bfe848b87
|
|
| BLAKE2b-256 |
f91ae93103d988a6d05c8a381a6ebb2373b24508c8684e86da9e4808950a5b0a
|
File details
Details for the file mongorepo-0.1.6-py3-none-any.whl.
File metadata
- Download URL: mongorepo-0.1.6-py3-none-any.whl
- Upload date:
- Size: 19.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.3 Linux/6.8.0-39-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d0e528e1fef3c8505d2bc40b09a65f969c000f210d287f98a8c2dd3e66118c5
|
|
| MD5 |
3a791dac016e48ab253438eeb669f17e
|
|
| BLAKE2b-256 |
01ceeea86b492936fde12a275ff9c00a544c9bf283fecddab18a8d8a510513ad
|