Simple Firestore ORM
Project description
Firedom
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)
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb5ce9dd7a218a43abe3cde96e82540830975488568328f5b40a3cca19daab36 |
|
MD5 | 843e7ba9d305cf6da9b22abced459c73 |
|
BLAKE2b-256 | ff48ce7e915b5b5b102ac1f874ca351d7c84654bfd549a564ef3dbc0e502eff7 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57be8720d571775cf3f1d4fe0e65a50f4006b5b46cae9fbbc204992131f213d5 |
|
MD5 | 337ab262a0df9a9754ebca93738ad5da |
|
BLAKE2b-256 | d785e872f5349c9ce3bddc4cf073386ebdebecc94a10697bc2295c795d4c8101 |