Package-level declarations

Types

Link copied to clipboard
data class AggregationLimitsDescriptor(val maxGroups: Int, val maxMetrics: Int, val maxElements: Int, val maxLimit: Int, val maxExpressionDepth: Int, val maxExpressionNodes: Int, val maxResidualGroups: Int? = null)
Link copied to clipboard
data class AnalysisDescriptor(val metrics: List<String>, val approximate: List<String>, val expressions: Boolean, val having: HavingDescriptor, val sort: AnalysisSortDescriptor, val dense: Boolean, val dateUnits: List<AggregationDateUnit>, val dateParts: List<AggregationDatePart>, val dateDiffUnits: List<DateDiffUnit>, val firstLastOrderBy: String? = null, val windows: List<WindowFunction> = emptyList(), val rootGroups: Boolean = false)
Link copied to clipboard
data class AnalysisSortDescriptor(val groups: Boolean, val metrics: Boolean)
Link copied to clipboard
data class ConstraintDescriptor(val type: String, val appended: String? = null, val fields: List<String>? = null)

A combination rule that per-field listings cannot express.

Link copied to clipboard
data class DynamicFieldDescriptor(val pattern: String, val types: Set<QueryValueType>, val kind: QueryValueKind, val nullable: Boolean, val semantic: QuerySemanticType?, val filter: FieldFilterDescriptor, val sort: FieldSortDescriptor, val aggregate: FieldAggregateDescriptor?, val excludedKeys: List<String>?)
Link copied to clipboard
data class ElementDescriptor(val path: String, val filter: Boolean, val aggregate: Boolean, val search: SearchDescriptor? = null)

An element (a nested array) that ELEMENT_MATCH can scope; search is full-text search on its fields, null when storage can search none of them.

Link copied to clipboard
data class EnumValueDescriptor(val value: JsonNode, val description: String? = null)
Link copied to clipboard
data class FieldAggregateDescriptor(val groups: List<String>, val missingKey: Boolean, val functions: List<String>, val distinctCount: Boolean, val percentile: Boolean, val any: Boolean, val firstLast: Boolean, val expressionInput: Boolean, val inMetricFilter: Boolean)
Link copied to clipboard
data class FieldDescriptor(val path: String, val role: String?, val types: Set<QueryValueType>, val kind: QueryValueKind, val nullable: Boolean, val semantic: QuerySemanticType?, val enum: List<EnumValueDescriptor>?, val description: String?, val sensitivity: SensitivityDescriptor?, val project: Boolean, val filter: FieldFilterDescriptor, val sort: FieldSortDescriptor, val aggregate: FieldAggregateDescriptor?, val scope: String?, val deprecated: QueryDeprecation? = null, val aliases: List<String> = emptyList())
Link copied to clipboard
Link copied to clipboard
data class FieldSortDescriptor(val paged: Boolean, val cursor: Boolean, val indexed: Boolean? = null)

Whether the field orders a paged query and a cursor. indexed is the storage's fact that an index backs the field's sort (me.ahoo.wow.query.schema.QueryFieldBinding.indexed): false marks a sort the storage runs without one, which may be slow on a large model; null when the storage does not say.

Link copied to clipboard
data class HavingDescriptor(val metrics: List<String>)
Link copied to clipboard
data class LimitsDescriptor(val maxListSize: Int?, val defaultListSize: Int?, val maxPageSize: Int?, val maxPageWindow: Long?, val maxFilterNodes: Int?, val maxFilterValues: Int?, val maxSortFields: Int, val aggregation: AggregationLimitsDescriptor)

Effective limits of this entry: protocol limits and the entry's budget, whichever is smaller; null is unlimited.

Link copied to clipboard
data class QueryModelDescriptor(val model: QueryModel, val version: String, val timeZone: String, val record: RecordDescriptor, val limits: LimitsDescriptor, val analysis: AnalysisDescriptor, val fields: List<FieldDescriptor>, val elements: List<ElementDescriptor>, val dynamic: List<DynamicFieldDescriptor>, val constraints: List<ConstraintDescriptor>)

How a query model can be queried on one entry: the answer the GET of the query route gives to agents and the view engine; QueryJson writes and reads it.

Link copied to clipboard
data class RecordDescriptor(val identity: String, val paging: List<PagingMode>, val defaultScope: DeletionState?, val rootOperators: List<FilterOperator>, val search: SearchDescriptor?, val stream: StreamDescriptor)
Link copied to clipboard
data class SearchDescriptor(val modes: List<SearchMode>, val fields: List<String>)

Full-text search in one scope. For the record, modes are those of a model-wide SEARCH (without fields) and fields the record-level fields a SEARCH may name. For an element, SEARCH goes inside an ELEMENT_MATCH on it and must name fields: fields are its searchable fields, by full logical path (written relative to the element in the query), and modes those every listed field accepts.

Link copied to clipboard
data class SensitivityDescriptor(val level: SensitivityLevel, val comparable: Boolean)

A sensitive field's protection: its level and whether filters and paged sorts may still compare its raw value. comparable is false for SensitivityLevel.CONFIDENTIAL, and for SensitivityLevel.DISPLAY when the server turned comparison off.

Link copied to clipboard
data class StreamDescriptor(val resumable: Boolean)

A streamed list. When resumable, the storage pages by keyset: a list whose sort orders a cursor (every sort field's FieldSortDescriptor.cursor) streams with each record's position as its event id, resumable with Last-Event-ID; any other list, and every list when not resumable, streams without positions, and its end event, the hold time's included, says "resumable": false.