Skip to main content

Repository Patterns for Python

Project description

Red Bird: Repository Patterns for Python

Generic database implemetation for SQL, MongoDB and in-memory lists

NOTE: Experimential.

Examples

class Person(BaseModel):
    id: str
    name: str
    age: int

Creating

>>> repo = Repository()

# Add some items
>>> repo.add(Person(id="11-11-11", name="Jack", age=30, language="English"))
>>> repo.add(Person(id="22-22-22", name="John", age=33, language="English"))
>>> repo.add(Person(id="33-33-33", name="James", age=36, language="English"))
>>> repo.add(Person(id="44-44-44", name="Jaakko", age=40, language="Finnish"))

Reading

# Get an item
>>> repo["11-11-11"]
Person(id="11-11-11", name="Jack", age=30, language="English")

>>> # Filter items
>>> repo.filter_by(language="English").all()
[Person(id="11-11-11", name="Jack", age=30, language="English"),
 Person(id="22-22-22", name="John", age=33, language="English"),
 Person(id="33-33-33", name="James", age=36, language="English")]

>>> # Get first
>>> repo.filter_by(language="English").first()
Person(id="11-11-11", name="Jack", age=30, language="English")

>>> # Get last
>>> repo.filter_by(language="English").last()
Person(id="33-33-33", name="John", age=33, language="English")

>>> # Get first 2
>>> repo.filter_by(language="English").limit(2)
[Person(id="11-11-11", name="Jack", age=30, language="English"),
 Person(id="22-22-22", name="John", age=33, language="English")]

>>> # Use operations
>>> from redbird.operations import greater_than
>>> repo.filter_by(age=greater_than(35)).all()
[Person(id="33-33-33", name="James", age=36, language="English"),
 Person(id="44-44-44", name="Jaakko", age=40, language="Finnish")]

Updating

>>> # Update single item
>>> person = repo["44-44-44"]
>>> person.age = 50
>>> repo.update(person)

>>> # Update multiple items
>>> repo.filter_by(language="English").update(age=35)

Deleting

>>> # Delete single item
>>> del repo["44-44-44"]

>>> # Delete multiple items
>>> repo.filter_by(language="English").delete()

Author

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

redbird-0.1.0.tar.gz (33.4 kB view hashes)

Uploaded Source

Built Distribution

redbird-0.1.0-py3-none-any.whl (31.5 kB view hashes)

Uploaded Python 3

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