Models API#

class fastapi_restly.models.DataclassBase(**kwargs: Any)#

Bases: TableNameMixin, MappedAsDataclass, DeclarativeBase

SQLAlchemy declarative base with dataclass semantics.

registry: ClassVar[_RegistryType] = <sqlalchemy.orm.decl_api.registry object>#

Refers to the _orm.registry in use where new _orm.Mapper objects will be associated.

type_annotation_map = {<enum 'Enum'>: Enum(native_enum=False, length=64)}#
class fastapi_restly.models.IDBase(*, id: int = <sqlalchemy.orm.properties.MappedColumn object>)#

Bases: IDMixin, DataclassBase

Convenience base: DataclassBase + integer id primary key.

class fastapi_restly.models.IDMixin(*, id: int = <sqlalchemy.orm.properties.MappedColumn object>)#

Bases: MappedAsDataclass

Dataclass mixin adding an auto-incrementing integer id primary key.

id: Mapped[int] = <sqlalchemy.orm.properties.MappedColumn object>#
class fastapi_restly.models.IDStampsBase(*, id: int = <sqlalchemy.orm.properties.MappedColumn object>, created_at: ~datetime.datetime = <sqlalchemy.orm.properties.MappedColumn object>, updated_at: ~datetime.datetime = <sqlalchemy.orm.properties.MappedColumn object>)#

Bases: TimestampsMixin, IDBase

Convenience base: IDBase + created_at / updated_at timestamps.

class fastapi_restly.models.PlainBase(**kwargs: Any)#

Bases: TableNameMixin, DeclarativeBase

Declarative base without dataclass semantics.

registry: ClassVar[_RegistryType] = <sqlalchemy.orm.decl_api.registry object>#

Refers to the _orm.registry in use where new _orm.Mapper objects will be associated.

type_annotation_map = {<enum 'Enum'>: Enum(native_enum=False, length=64)}#
class fastapi_restly.models.PlainIDBase(**kwargs: Any)#

Bases: PlainIDMixin, PlainBase

Convenience base: PlainBase + integer id primary key.

class fastapi_restly.models.PlainIDMixin#

Bases: object

Non-dataclass mixin adding an auto-incrementing integer id primary key.

id: Mapped[int] = <sqlalchemy.orm.properties.MappedColumn object>#
class fastapi_restly.models.PlainIDStampsBase(**kwargs: Any)#

Bases: PlainTimestampsMixin, PlainIDBase

Convenience base: PlainIDBase + created_at / updated_at timestamps.

class fastapi_restly.models.TimestampsMixin(*, created_at: ~datetime.datetime = <sqlalchemy.orm.properties.MappedColumn object>, updated_at: ~datetime.datetime = <sqlalchemy.orm.properties.MappedColumn object>)#

Bases: MappedAsDataclass

Dataclass mixin adding UTC-aware created_at and updated_at timestamps.

created_at: Mapped[datetime] = <sqlalchemy.orm.properties.MappedColumn object>#
updated_at: Mapped[datetime] = <sqlalchemy.orm.properties.MappedColumn object>#
async fastapi_restly.models.async_get_one_or_create(model_cls: type[T], session: AsyncSession, **kwargs: Any) T#

Async variant of get_one_or_create.

fastapi_restly.models.get_one_or_create(model_cls: type[T], session: Session, **kwargs: Any) T#

Return the unique row matching the given keyword arguments or create it.