Simple DRM for motor client
Project description
MDocument
Simple DRM for async mongo motor client
Usage
import asyncio
import motor.motor_asyncio
from mdocument import Document
client = motor.motor_asyncio.AsyncIOMotorClient()
class Comment(Document):
collection = "comments"
database = "mdocument"
client = client
class Video(Document):
collection = "videos"
database = "mdocument"
client = client
@Document.related(Comment.Field.video, self_field_name="_id")
def comments(self):
pass
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 = asyncio.get_event_loop()
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
@classmethod
async def create(cls, **kwargs):
If you want to create a new document you can do it easily with .create method. Example:
import asyncio
from mdocument import Document
import motor.motor_asyncio
client = motor.motor_asyncio.AsyncIOMotorClient()
class Message(Document):
collection = "messages"
database = "mdocument"
client = client
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-3.0.1592410567.tar.gz
.
File metadata
- Download URL: mdocument-3.0.1592410567.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 441f09c4cc545300b64a51762224b1687d5dbdae769cc9380715921cfb3e3ba9 |
|
MD5 | 7abc6a8d7311f9ea81c75d3dcf4a843a |
|
BLAKE2b-256 | 743383c18144e2f0340edaa0f946858df89b8756c41cbf194da4d61d2b9e4049 |
Provenance
File details
Details for the file mdocument-3.0.1592410567-py3-none-any.whl
.
File metadata
- Download URL: mdocument-3.0.1592410567-py3-none-any.whl
- Upload date:
- Size: 8.0 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/47.3.1 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44a4ee8097f731bca2ee615c166bd51731a43786b76a54a7ea519a2205c7d7fa |
|
MD5 | c7ed38dfc1d4183b2dd985cf1c4e2704 |
|
BLAKE2b-256 | 07411a6f0647ba5f36178fb0c579a722bad8a62f066e7e49e9fb9e7911a467a7 |