Simple DRM for motor client
Project description
MDocument
Simple DRM for async mongo motor client
Usage
import asyncio
from mdocument import Document, DatabaseClient
client1 = DatabaseClient(uri="localhost")
class Comment(Document):
_collection_ = "comments"
_database_ = "mdocument"
_client_ = client1
class Video(Document):
_collection_ = "videos"
_database_ = "mdocument"
_client_ = client1
@Document.related(self_field="_id", other_field="video")
def comments(self):
return Comment
loop = asyncio.get_event_loop()
Document.setup(loop, "localhost", "test_database")
async def main():
video = await Video.create(
title="Test",
)
comment1 = await Comment.create(
video=video._id,
message="First!",
)
comment2 = await Comment.create(
video=video._id,
message="Second!"
)
loop.run_until_complete(main())
Now we can easily access our comments using our related documents
print(await video.comments)
[
Comment(_id=5e7533d55eb6a8c6d24d3cc7, video=5e7533d55eb6a8c6d24d3cc6, message=First!),
Comment(_id=5e7533d55eb6a8c6d24d3cc8, video=5e7533d55eb6a8c6d24d3cc6, message=Second!)
]
Document methods
Here is a list of Document basic methods
.create
async def create(cls, loop=None, update_immediately=False, **kwargs):
If you want to create a new document you can do it easily with .create method. Example:
import asyncio
from mdocument import Document, DatabaseClient
class Message(Document):
_collection_ = "messages"
_database_ = "mdocument"
_client_ = DatabaseClient(host="localhost")
Document.setup(loop, "localhost", "test_database")
loop.run_until_complete(
Message.create(from_user="admin", text="Test message!")
)
This will create document in database:
{
'_id': ObjectId('5e75373e5eb6a8c6d14d3ccd'),
'from_user': 'admin',
'text': "Test message!"
}
.push_update
Updates document and all @related fields.
await Message.push_update()
.delete
Deletion of document from database. Based on your set @related rules all related documents will be modified too.
message = await Message.one(from_user="admin")
await message.delete()
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 mdocument-2.0.1585096896.tar.gz
.
File metadata
- Download URL: mdocument-2.0.1585096896.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa98f8cce8d1b6c4d9c092a59d3cac9be97a22bad5cfd710e108b3d0e1b6cbfd |
|
MD5 | 5e7121683836fa8f9d5b0157295a2f38 |
|
BLAKE2b-256 | 7abe01a5311b089ca268ffcc66f9cad599cbb3acb818200aab05ee8828dcd129 |
File details
Details for the file mdocument-2.0.1585096896-py3-none-any.whl
.
File metadata
- Download URL: mdocument-2.0.1585096896-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd82c5730c18aeb48a4c59c947a9881e672f199373e6eaa4c786542322f8d4c0 |
|
MD5 | 9a092df80fe2f886d68097062ec379fc |
|
BLAKE2b-256 | e7d720b9886fb6923e9fb63a1411b37e86ef1d6d644edb9068c1f944cbb45774 |