Repositories
Contents
Repositories#
This section consists of configuring various built-in repositories. After configuration, the usage of the repositories should be identical for all features except those stated otherwise.
Common Configurations#
All repositories support some common configurations (unless specified otherwise). The item type can be either dict or Pydantic model and you may also specify which field is used as the identification field.
Specifying the Item Model#
The item model can be either dict or Pydantic model. If you wish to have dynamic items in the sense that the items may have arbitrary number of fields with arbitrary type you may just use dict as the model:
repo = MemoryRepo(model=dict, ...)
However, in most cases it is recommended to specify the item model as a Pydantic model. By doing so, the structure of each item is better documented and you may leverage the extensive data validation Pydantic offers.
from pydantic import BaseModel
class Car(BaseModel):
registration_number: str
color: str
value: float
from redbird.repos import MemoryRepo
repo = MemoryRepo(model=Car, ...)
Specifying the ID Field#
Most repositories also support ID fields. ID field is a field/key/attribute of the items that is unique for all and is
repo = MemoryRepo(id_field="registration_number", ...)
Alternatively, the id_field
could be set using __id_field__
magic attribute:
from pydantic import BaseModel
class Car(BaseModel):
__id_field__ = "registration_number"
registration_number: str
color: str
value: float
repo = MemoryRepo(model=Car)
Specifying ID field is necessary for some features to work such as:
getitem:
repo['123-456-789']
delitem:
del repo['123-456-789']
get_by:
repo.get_by('123-456-789')