Skip to main content

Simple Firestore ORM

Project description

Firedom

Tests

Simple Firestore ORM for Python.

Installation

pip install firedom

Getting started

Initialize Firedom

from firedom import Firedom


firedom = Firedom(service_account_json_path='your-credentials.json')

Define your models

Create a model for your Firestore collection by inheriting from Model:

from dataclasses import dataclass
from firedom import Firedom


firedom = Firedom(service_account_json_path='your-credentials.json')


@dataclass
class Company(firedom.Model):
    name: str


@dataclass
class User(firedom.Model):
    username: str
    email: int
    country: str
    city: str
    is_active: bool = True
    number_of_pets: int = 0
    company: Company

    class Config:
        # Required: Field to be used as document ID
        document_id_field = 'username'

Manipulate documents

Create

company = Company.collection.create(name='Example Company')

user = User.collection.create(
    username='afuenzalida',
    email='afuenzalida@example.com',
    country='Chile',
    city='Santiago',
    company=company,
)

Retrieve

users = User.collection.all()

user = User.collection.get('afuenzalida')

Filter

# All arguments are considered as AND:
users = User.collection.where(
    User.country == 'Chile',
    User.is_active == True,
    User.city.is_in(['Santiago', 'Valparaíso']),
    User.number_of_pets > 1,
)

# You can filter with OR using the | operator:
users = User.collection.where(
    (User.country == 'Chile') |
    (User.country == 'China'),
)

# And you can also filter explicitly with AND using the & operator:
users = User.collection.where(
    (User.city == 'Santiago') &
    (User.number_of_pets == 0),
)

# Full example: Filter by active users from Chile or China:
users = User.collection.where(
    (User.is_active == True) &
    (
        (User.country == 'Chile') |
        (User.country == 'China')
    ),
)

Sort

users = User.collection.where(
    User.country == 'Chile',
).order_by(
    'email',
    desc=True,
)

Update

user = User.collection.get('afuenzalida')
user.country = 'Australia'
user.save()

Delete

user = User.collection.get('afuenzalida')
user.delete()

User.collection.all().delete()

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

firedom-1.3.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distribution

firedom-1.3.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file firedom-1.3.0.tar.gz.

File metadata

  • Download URL: firedom-1.3.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for firedom-1.3.0.tar.gz
Algorithm Hash digest
SHA256 cb5ce9dd7a218a43abe3cde96e82540830975488568328f5b40a3cca19daab36
MD5 843e7ba9d305cf6da9b22abced459c73
BLAKE2b-256 ff48ce7e915b5b5b102ac1f874ca351d7c84654bfd549a564ef3dbc0e502eff7

See more details on using hashes here.

File details

Details for the file firedom-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: firedom-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for firedom-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57be8720d571775cf3f1d4fe0e65a50f4006b5b46cae9fbbc204992131f213d5
MD5 337ab262a0df9a9754ebca93738ad5da
BLAKE2b-256 d785e872f5349c9ce3bddc4cf073386ebdebecc94a10697bc2295c795d4c8101

See more details on using hashes here.

Supported by

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