QueryModelProfile

Record layout and invariants of one QueryModel: the built-in Snapshot and EventStream, and each declared dataset.

Every model difference that the query runtime depends on lives here, so gateways, validators, maskers and backends ask the profile instead of branching on QueryModel themselves. A schema carries its profile (QueryModelSchema.profile); other custom models have none, and operations that need one of these facts reject them.

Inheritors

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard
abstract val eventTimeField: QueryField?

When the record last changed: the default orderBy of FIRST and LAST metrics; null when there is none.

Link copied to clipboard

When the record's aggregate got its first event, or null when a record does not say.

Link copied to clipboard
open val fixedTenantId: String? = null

The one tenant every record belongs to, for a model with no tenant field (a platform-level dataset); null otherwise. A tenant filter then matches every record when it names this tenant and none when it names another, and it pins requiredScope.

Link copied to clipboard
abstract val identityField: QueryField?

Unique record identity: the target of id filters and the tie-breaker of every cursor; null when the model declares none, which rejects both.

Link copied to clipboard
Link copied to clipboard
abstract val payloadField: QueryField?

Logical field that holds the user payload; masked fields and schema extensions must live below it. null when the whole record is payload, as in a dataset.

Link copied to clipboard
open val payloadTypeField: QueryField? = null

Field that names the payload type of each record, or null when the payload is monomorphic.

Link copied to clipboard

The field an authenticated caller scope must pin when requireAuthenticatedScope is on: the tenant, the isolation boundary of every built-in model.

Link copied to clipboard

Fields that every record of this model carries, independent of the aggregate.

Link copied to clipboard
open val variantElement: QueryField? = null

The element whose variants are typed payloads (an event stream's body), or null for a monomorphic payload.

Functions

Link copied to clipboard

Returns the scope appended to a query whose filter does not scope it explicitly, or MatchAllFilter when the model has no implicit scope.

Link copied to clipboard
abstract fun systemField(field: SystemField): QueryField?

The logical field a system-field filter (ID, TENANT_ID, DELETION, ...) targets: identityField for the record identity; null when the model does not carry field.

Link copied to clipboard
open fun validateProjection(projection: Projection)

Rejects a projection that would return records the model cannot interpret.