loom.core.repository.abc.query¶
Functions
|
Construct a |
Classes
|
Result of a cursor-paginated query. |
|
A group of filter conditions combined with AND or OR logic. |
|
Filter operator applied to a single field. |
|
Generic filter container for list queries. |
|
A single field filter condition. |
|
Pagination parameters for list queries. |
|
Paginated result set returned by list queries. |
|
Pagination strategy for list and query operations. |
|
Structured query contract for list operations. |
|
A single sort directive applied to a query. |
- class loom.core.repository.abc.query.PaginationMode(value)[source]¶
Bases:
StrEnumPagination strategy for list and query operations.
- OFFSET¶
Classic page+limit pagination. Compatible with all backends.
- CURSOR¶
Keyset (cursor) pagination. Performant at scale; requires a stable sort order with a tie-breaker.
- class loom.core.repository.abc.query.FilterOp(value)[source]¶
Bases:
StrEnumFilter operator applied to a single field.
- EQ¶
Exact equality.
- NE¶
Inequality.
- GT¶
Greater than.
- GTE¶
Greater than or equal.
- LT¶
Less than.
- LTE¶
Less than or equal.
- IN¶
Value is in a collection.
- LIKE¶
SQL LIKE pattern (case-sensitive).
- ILIKE¶
SQL LIKE pattern (case-insensitive).
- IS_NULL¶
Field is NULL.
- EXISTS¶
Related collection is non-empty (subquery).
- NOT_EXISTS¶
Related collection is empty (subquery).
- class loom.core.repository.abc.query.FilterSpec(field, op, value=None)[source]¶
Bases:
objectA single field filter condition.
- Parameters:
Example:
FilterSpec(field="price", op=FilterOp.GTE, value=10.0)
- class loom.core.repository.abc.query.FilterGroup(filters, op='AND')[source]¶
Bases:
objectA group of filter conditions combined with AND or OR logic.
- Parameters:
filters (tuple[FilterSpec, ...]) – Filter conditions to combine.
op (Literal['AND', 'OR']) – Logical operator:
"AND"(default) or"OR".
Example:
FilterGroup( filters=( FilterSpec("price", FilterOp.GTE, 10.0), FilterSpec("price", FilterOp.LTE, 100.0), ), op="AND", )
- class loom.core.repository.abc.query.SortSpec(field, direction='ASC')[source]¶
Bases:
objectA single sort directive applied to a query.
- Parameters:
Example:
SortSpec(field="created_at", direction="DESC")
- class loom.core.repository.abc.query.QuerySpec(filters=None, sort=<factory>, pagination=PaginationMode.OFFSET, limit=50, page=1, cursor=None)[source]¶
Bases:
objectStructured query contract for list operations.
Replaces the flat
FilterParamsdict with an explicit, type-safe representation. The repository implementation compiles this into backend-specific clauses at query time.- Parameters:
filters (FilterGroup | None) – Optional filter group applied to the query.
sort (tuple[SortSpec, ...]) – Ordered tuple of sort directives.
pagination (PaginationMode) – Pagination strategy. Defaults to
OFFSET.limit (int) – Maximum number of items per page (1-1000).
page (int) – 1-based page number (only for
OFFSETmode).cursor (str | None) – Opaque cursor token (only for
CURSORmode).
Example:
QuerySpec( filters=FilterGroup( filters=(FilterSpec("price", FilterOp.GTE, 10.0),), ), sort=(SortSpec("name"),), pagination=PaginationMode.OFFSET, limit=20, page=1, )
- class loom.core.repository.abc.query.CursorResult(*, items, next_cursor, has_next)[source]¶
Bases:
Struct,Generic[OutputT]Result of a cursor-paginated query.
- class loom.core.repository.abc.query.PageParams(*, page=1, limit=50)[source]¶
Bases:
StructPagination parameters for list queries.
- class loom.core.repository.abc.query.FilterParams(*, filters=<factory>)[source]¶
Bases:
StructGeneric filter container for list queries.
- class loom.core.repository.abc.query.PageResult(*, items, total_count, page, limit, has_next)[source]¶
Bases:
Struct,Generic[OutputT]Paginated result set returned by list queries.
- loom.core.repository.abc.query.build_page_result(items, total_count, page_params)[source]¶
Construct a
PageResultfrom a list of items and pagination metadata.- Parameters:
items (list[OutputT]) – Entity output structs for the current page.
total_count (int) – Total number of matching entities across all pages.
page_params (PageParams) – The pagination parameters used for this query.
- Returns:
A populated
PageResultinstance.- Return type:
PageResult[OutputT]