Metadata-Version: 1.1
Name: zerorm
Version: 0.2.0
Summary: Looks like ORM and stores your data
Home-page: https://github.com/hedin/zerorm
Author: Aleksandr Mironov
Author-email: a.m.mironov@gmail.com
License: MIT
Description: Zerorm
        ======
        
        Zerorm is a simple wrapper for three amazing packages. This repository is the
        place where `TinyDB <https://github.com/msiemens/tinydb>`_, `Schematics <https://github.com/schematics/schematics>`_
        and `Lifter <https://github.com/EliotBerriot/lifter>`_ together look like Django ORM.
        
        It's still work in progress and not everything looks like Django ORM, but it will.
        
        Installation
        ------------
        
        .. code-block:: shell
        
             pip install zerorm
        
        Usage
        -----
        
        First create a file with models and database instance attached to every model:
        
        .. code-block:: python
        
            from zerorm import db, models
        
            database = db('db.json')
        
        
            class Message(models.Model):
                author = models.StringType(required=True)
                author_email = models.EmailType()
                text = models.StringType()
                views = models.IntType(min_value=0)
        
                class Meta:
                    database = database
        
        Now create some objects:
        
        .. code-block:: pycon
        
            >>> from models import Message
            >>>
            >>> bob_message = Message(author='Bob',
            ...                       author_email='bob@example.com',
            ...                       text='Hello, everyone!')
            >>> bob_message
            <Message: Message object>
            >>> bob_message.save()  # Save object
            1
            >>>
            >>> bob_message.views = 3
            >>> bob_message.save()  # Update object
            >>>
            >>> alice_message = Message.objects.create(author='Alice',
            ...                                        text='Hi, Bob!',
            ...                                        views=0)
            >>> alice_message
            <Message: Message object>
        
        And try to retrieve them via *objects*
        
        .. code-block:: pycon
        
            >>> Message.objects.all()
            <QuerySet, len() = 2>
            >>> list(Message.objects.all())
            [<Message: Message object>, <Message: Message object>]
            >>>
            >>> second_message = Message.objects.get(eid=2)
            >>> second_message.author
            'Alice'
            >>>
            >>> Message.objects.filter(views__gte=3)  # Only Bob's message has 3 views
            <QuerySet, len() = 1>
            >>> list(Message.objects.filter(views__gte=3))
            [<Message: Message object>]
        
        You can also redefine model's *__str__* method for better repr just like in Django.
        
        .. code-block:: python
        
            class Message(models.Model):
                ...
        
                def __str__(self):
                    return 'by {}'.format(self.author)
        
        .. code-block:: pycon
        
            >>> list(Message.objects.all())
            [<Message: by Bob>, <Message: by Alice>]
        
        License
        -------
        
        MIT. See LICENSE for details.
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Intended Audience :: Developers
