Metadata-Version: 2.1
Name: noseiquela_orm
Version: 0.0.7.dev2
Summary: Small and expressive ORM to interact with Google Datastore inspired by Django, Mongo-Engine and Peewee
Home-page: https://github.com/exageraldo/noseiquela-orm
Author: Geraldo Castro
Author-email: victormatheuscastro@gmail.com
License: BSD-3-Clause
Project-URL: Bug Tracker, https://github.com/exageraldo/noseiquela-orm/issues
Description: ## No SeiQueLa ORM
        > IN DEVELOPMENT
        
        [🇧🇷 Documentação em Português](/README.pt-br.md)
        
        **No** **S***ei***Q***ue***L***a* is a small and expressive ORM (Object Relational Mapper) to interact with Google Datastore inspired by Django, Mongo-Engine and Peewee.
        
        ## Requirements
        - [Google Cloud](https://cloud.google.com/) credentials
        - [Python>=3.8](https://www.python.org/downloads/)
        
        ## Installing
        
        The library can be installed using pip:
        
        `pip install noseiquela_orm`
        
        ## Usage
        
        Creating model classes:
        
        ```python
        from noseiquela_orm.entity import Model
        from noseiquela_orm.key import Key, ParentKey
        from noseiquela_orm import properties
        
        
        class Customer(Model):
            name = properties.StringProperty(required=True)
            age = properties.IntegerProperty(required=True)
            is_deleted = properties.BooleanProperty(default=False, required=True)
        
        
        class CustomerAddress(Model):
            __kind__ = "Address"
            __parent__ = properties.ParentKey(Customer, required=True)
        
            number = properties.IntegerProperty(required=True)
            address_one = properties.StringProperty(required=True)
            address_two = properties.StringProperty()
            is_default = properties.BooleanProperty(required=True)
            is_deleted = properties.BooleanProperty(default=False, required=True)
        ```
        
        In case the project name, namespace (or any other parameter of the [`google.cloud.datastore.Client`](https://googleapis.dev/python/datastore/latest/client.html)) needs to be changed, simply create a `Meta` class inside the template with the desired information.
        
        ```python
        class Product(Model):
            quantity = properties.IntegerProperty(required=True)
            name = properties.StringProperty(required=True)
            value = properties.FloatProperty(required=True)
        
            class Meta:
                namespace = "production"
                project = "products"
        ```
        
        Adding new entities:
        
        ```python
        new_customer = Customer(
            name="Geraldo Castro",
            age=29,
        )
        
        new_customer.save()
        
        new_address = CustomerAddress(
            parent_id=new_customer.id,
            number=199,
            address_one="Some St.",
            is_default=True
        )
        
        new_address.save()
        ```
        
        Query on database:
        
        ```python
        customer = Customer.query.filter(name="Geraldo Castro").first()
        customer_address = Customer.query.filter(parend_id=customer.id)
        
        less_than_or_eq_29 = Customer.query.filter(age__le=29) # age <= 29
        more_than_30 = Customer.query.filter(age__gt=30) # age > 30
        
        all_customers = [
            customer.to_dict()
            for customer in Customer.query.all()
        ]
        ```
        
        ## Authentication
        
        The library uses the standard way of authenticating Google libraries ([google-auth-library-python](https://github.com/googleapis/google-auth-library-python)).
        
        The search for credentials happens in the following order:
        
        1. If the environment variable `GOOGLE_APPLICATION_CREDENTIALS` is set to a valid service account path.
        
        2. If the `Google Cloud SDK` is installed and has the credentials of the application to be used, these will be loaded.
        
        3. If the application is running in the `App Engine standard environment` (first generation), then the credentials and project ID are taken from the `App Identity Service`.
        
        4. If the application is running in `Compute Engine`, `Cloud Run`, `App Engine flexible environment` or `App Engine standard environment` (second generation), then the credentials and project ID are taken from the `Metadata Service`.
        
        More details at [this link](https://github.com/googleapis/google-auth-library-python/blob/main/google/auth/_default.py#L356).
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
