Skip to main content

Implementation of entities concept on top of Google cloud firestore

Project description

Firestore Entities (BETA)(Docs)

PyPI version CircleCI codecov Known Vulnerabilities

Implementation of models concept on top of Google cloud firestore. Firestore entities try to make interaction with firestore as simple as possible for the developer.

Installation

pip install firestore-entities

Examples

"""
This code creates a model with some possible scenarios when working with firestore.Entity

Assume a case where a user can have
- Single login
- Be in multiple projects
- Have an account in each project
"""

from firestore import Entity, SERVER_TIMESTAMP
from firestore import db

class User(Entity):
    user_name = db.TextProperty( required=True)
    email = db.TextProperty(required=True)
    full_name = db.TextProperty(required=True)
    password = db.TextProperty(required=False)
    date_registered = db.DateTimeProperty(default=SERVER_TIMESTAMP)
    __sub_collection__ = "user_data"


class Project(Entity):
    name = db.TextProperty(required=True)
    logo = db.BlobProperty()

    def create_account(self, user, roles = None ):
        if roles is None:
            roles = ["admin"]
        account = Account(user=user, roles=roles)
        account.put()
        return account


class Account(Entity):
    __sub_collection__ = Project
    user = db.ReferenceProperty(User)
    roles = db.ListProperty(db.TextProperty())
    date_added = db.DateTimeProperty(auto_add_now=True)
    last_updated = db.DateTimeProperty(auto_now=True)

# Then we can
user = User(user_name="john", email="john@doe.fam", password="123456")
user.full_name = "John Doe"
user.put()
# Get an existing user
john = User.get(user.id)

# Query users
user2 = User.query().equal("email", "jane@doe.fam")[0]
users = User.query()
for _user in users:
    print(_user.email)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

firestore-entities-0.2.5.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

firestore_entities-0.2.5-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file firestore-entities-0.2.5.tar.gz.

File metadata

  • Download URL: firestore-entities-0.2.5.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.8.1

File hashes

Hashes for firestore-entities-0.2.5.tar.gz
Algorithm Hash digest
SHA256 8f21d53ef731b74b2f95fd50a3163b80b3a31134df4c04324fdd3b32f0276028
MD5 711302708913cd69dc73ac9d48404a9f
BLAKE2b-256 649fa936b93ab01b5ea3c6f74ca546983f6202cefd51be9b6750c554daf525de

See more details on using hashes here.

File details

Details for the file firestore_entities-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: firestore_entities-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.8.1

File hashes

Hashes for firestore_entities-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5404ccc4aa7806232029c3329a6069eff1838c8c87b2987898e2c1837df2e7c6
MD5 776d37ee73a488880cd8f00dfbc19d7e
BLAKE2b-256 c464c3150bc958412c0a4eb1fa7429271f4051d4cbbbcf9ea72c0a630f1ede61

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page