Defined in: packages/db/src/indexes/basic-index.ts:37
Basic index using Map + sorted Array.
Map for O(1) equality lookups
Sorted Array for O(log n) range queries via binary search
O(n) updates to maintain sort order
Simpler and smaller than BTreeIndex, good for read-heavy workloads. Use BTreeIndex for write-heavy workloads with large collections.
BaseIndex<TKey>
TKey extends string | number = string | number
new BasicIndex<TKey>(
id,
expression,
name?,
options?): BasicIndex<TKey>;Defined in: packages/db/src/indexes/base-index.ts:158
number
string
any
BasicIndex<TKey>
protected readonly compareFn: (a, b) => number;Defined in: packages/db/src/indexes/base-index.ts:149
Orders indexed values. Every result is checked, because a custom comparator or custom collation may be supplied by the user.
any
any
number
protected readonly compareOptions: CompareOptions;Defined in: packages/db/src/indexes/base-index.ts:144
readonly expression: BasicExpression;Defined in: packages/db/src/indexes/base-index.ts:142
protected readonly hasCustomComparator: boolean;Defined in: packages/db/src/indexes/base-index.ts:155
A user-supplied comparator's ordering may not match the WHERE evaluator's relational operators.
readonly id: number;Defined in: packages/db/src/indexes/base-index.ts:140
readonly optional name: string;Defined in: packages/db/src/indexes/base-index.ts:141
readonly supportedOperations: Set<"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike">;Defined in: packages/db/src/indexes/base-index.ts:143
get keyCount(): number;Defined in: packages/db/src/indexes/basic-index.ts:234
Gets the number of indexed keys
number
get supportsOrderOptimization(): boolean;Defined in: packages/db/src/indexes/base-index.ts:259
Whether a query can use this index for its declared ordered prefix.
boolean
Whether a query can use this index for its declared ordered prefix.
BaseIndex.supportsOrderOptimization
get supportsRangeOptimization(): boolean;Defined in: packages/db/src/indexes/base-index.ts:255
Whether range lookups (gt/gte/lt/lte) on this index can be trusted to return every matching key. Range traversal relies on the index ordering, so it is unsafe when the index uses a custom comparator, whose order may not match the WHERE evaluator's relational operators. Callers must fall back to a full scan when this is false.
boolean
BaseIndex.supportsRangeOptimization
add(key, item): void;Defined in: packages/db/src/indexes/basic-index.ts:51
Adds a value to the index
TKey
any
void
protected addRangeValue(value): void;Defined in: packages/db/src/indexes/base-index.ts:277
unknown
void
build(entries): void;Defined in: packages/db/src/indexes/basic-index.ts:182
Builds the index from a collection of entries
Iterable<[TKey, any]>
void
canOptimizeRangeFor(value): boolean;Defined in: packages/db/src/indexes/base-index.ts:299
Whether the live values in this index share the predicate operand's relational domain. Mixed domains can sort differently in the index and WHERE evaluator, which can make a range lookup omit matching rows.
unknown
boolean
clear(): void;Defined in: packages/db/src/indexes/basic-index.ts:213
Clears all data from the index
void
protected clearRangeValues(): void;Defined in: packages/db/src/indexes/base-index.ts:295
void
equalityLookup(value): Set<TKey>;Defined in: packages/db/src/indexes/basic-index.ts:241
Performs an equality lookup - O(1)
any
Set<TKey>
protected evaluateAddedValue(key, item): any;Defined in: packages/db/src/indexes/base-index.ts:374
The indexed value of a row being added. A throwing expression fails the write.
TKey
any
any
protected evaluateIndexExpression(item): any;Defined in: packages/db/src/indexes/base-index.ts:367
any
any
BaseIndex.evaluateIndexExpression
protected exactBucketKeys(value): Iterable<TKey, any, any> | undefined;Defined in: packages/db/src/indexes/base-index.ts:205
any
Iterable<TKey, any, any> | undefined
inArrayLookup(values): Set<TKey>;Defined in: packages/db/src/indexes/base-index.ts:228
Combine exact buckets without copying each bucket first.
any[]
Set<TKey>
protected initialize(_options?): void;Defined in: packages/db/src/indexes/base-index.ts:365
any
void
lookup(operation, value): Set<TKey>;Defined in: packages/db/src/indexes/basic-index.ts:221
"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike"
any
Set<TKey>
protected lookupSupportedOperation(operation, value): Set<TKey> | undefined;Defined in: packages/db/src/indexes/base-index.ts:211
"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike"
any
Set<TKey> | undefined
BaseIndex.lookupSupportedOperation
matchesCompareOptions(compareOptions): boolean;Defined in: packages/db/src/indexes/base-index.ts:321
Checks if the compare options match the index's compare options. The direction is ignored because the index can be reversed if the direction is different.
CompareOptions
boolean
BaseIndex.matchesCompareOptions
matchesDirection(direction): boolean;Defined in: packages/db/src/indexes/base-index.ts:361
Checks if the index matches the provided direction.
boolean
matchesField(fieldPath): boolean;Defined in: packages/db/src/indexes/base-index.ts:309
string[]
boolean
rangeQuery(options): Set<TKey>;Defined in: packages/db/src/indexes/basic-index.ts:249
Performs a range query using binary search - O(log n + m)
RangeQueryOptions = {}
Set<TKey>
rangeQueryReversed(options): Set<TKey>;Defined in: packages/db/src/indexes/base-index.ts:237
RangeQueryOptions = {}
Set<TKey>
remove(key, item): void;Defined in: packages/db/src/indexes/basic-index.ts:88
Removes a value from the index
TKey
any
void
protected removeRangeValue(value): void;Defined in: packages/db/src/indexes/base-index.ts:286
unknown
void
supports(operation): boolean;Defined in: packages/db/src/indexes/base-index.ts:251
"eq" | "gt" | "gte" | "lt" | "lte" | "in" | "like" | "ilike"
boolean
take(
n,
from,
filterFn?): TKey[];Defined in: packages/db/src/indexes/basic-index.ts:313
Returns the next n items in sorted order
number
any
(key) => boolean
TKey[]
takeFromStart(n, filterFn?): TKey[];Defined in: packages/db/src/indexes/basic-index.ts:360
Returns the first n items in sorted order (from the start)
number
(key) => boolean
TKey[]
takeReversed(
n,
from,
filterFn?): TKey[];Defined in: packages/db/src/indexes/basic-index.ts:334
Returns the next n items in reverse sorted order
number
any
(key) => boolean
TKey[]
takeReversedFromEnd(n, filterFn?): TKey[];Defined in: packages/db/src/indexes/basic-index.ts:367
Returns the first n items in reverse sorted order (from the end)
number
(key) => boolean
TKey[]
update(
key,
oldItem,
newItem): void;Defined in: packages/db/src/indexes/basic-index.ts:148
Updates a value in the index
TKey
any
any
void