FireStoreRepository
Class: FireStoreRepository<T>
Defined in: gcp/src/services/firestore.service.ts:143
Firestore-backed repository for a single model class
Every object is stored as a document of the collection, keyed by its primary key. The inherited MemoryRepository is only used for its helpers, every storage method hits Firestore.
Extends
MemoryRepository<T>
Type Parameters
T
T extends ModelClass
Constructors
Constructor
new FireStoreRepository<
T>(model,pks,firestore,collection,indexes?,log?,separator?):FireStoreRepository<T>
Defined in: gcp/src/services/firestore.service.ts:158
Parameters
model
T
the model class
pks
string[]
primary key field names
firestore
Firestore
the Firestore client
collection
string
the collection name
indexes?
FireStoreIndex[] = []
compound indexes declared on the store
log?
(level, ...args) => void
logger of the store
separator?
string
primary key separator
Returns
FireStoreRepository<T>
Overrides
MemoryRepository<T>.constructor
Properties
[WEBDA_TEST]
[WEBDA_TEST]:
object
Defined in: models/lib/repositories/memory.d.ts:325
Test utilities - clears all stored data
clear
clear: () =>
Promise<void>
Returns
Promise<void>
Inherited from
MemoryRepository.[WEBDA_TEST]
aggregationOptions
protectedaggregationOptions:AggregationOptions
Defined in: models/lib/repositories/abstract.d.ts:27
Aggregation fallback policy, set by the owning store through configureAggregation
Inherited from
MemoryRepository.aggregationOptions
collection
protectedreadonlycollection:string
Defined in: gcp/src/services/firestore.service.ts:162
the collection name
compoundIndexes
protectedcompoundIndexes:object={}
Defined in: gcp/src/services/firestore.service.ts:147
Compound indexes available, keyed by the sorted fields joined with "/"
Index Signature
[key: string]: FireStoreIndexOrder
events
protectedevents:Map<keyofInstanceType<T>[typeofWEBDA_EVENTS],Set<(data) =>void>>
Defined in: models/lib/repositories/abstract.d.ts:25
Registered event listeners keyed by event name
Inherited from
MemoryRepository.events
firestore
protectedreadonlyfirestore:Firestore
Defined in: gcp/src/services/firestore.service.ts:161
the Firestore client
log
protectedreadonlylog: (level, ...args) =>void
Defined in: gcp/src/services/firestore.service.ts:164
logger of the store
Parameters
level
any
args
...any[]
Returns
void
maxListeners
protectedmaxListeners:number
Defined in: models/lib/repositories/abstract.d.ts:321
Max-listeners hint kept for Node EventEmitter API compatibility. Not
enforced — repositories use an unbounded Set per event.
Inherited from
MemoryRepository.maxListeners
model
protectedmodel:T
Defined in: models/lib/repositories/abstract.d.ts:21
Inherited from
MemoryRepository.model
monitorOptions
protectedmonitorOptions:QueryMonitorOptions
Defined in: models/lib/repositories/abstract.d.ts:29
Query monitoring options, set by the owning store through configureMonitoring
Inherited from
MemoryRepository.monitorOptions
pks
protectedpks:string[]
Defined in: models/lib/repositories/abstract.d.ts:22
Inherited from
MemoryRepository.pks
separator
protectedseparator:string
Defined in: models/lib/repositories/abstract.d.ts:23
Inherited from
MemoryRepository.separator
storage
protectedstorage:Map
Defined in: models/lib/repositories/memory.d.ts:39
Inherited from
MemoryRepository.storage
tableRoot?
protectedoptionaltableRoot?:ModelClass<Storable<any,any>>
Defined in: models/lib/repositories/abstract.d.ts:35
Model owning the untyped rows of the storage (the first model of the store), undefined when not known
Inherited from
MemoryRepository.tableRoot
warnedAggregations
protectedwarnedAggregations:Set<string>
Defined in: models/lib/repositories/abstract.d.ts:31
Fallback shapes already warned about
Inherited from
MemoryRepository.warnedAggregations
Methods
acceptedTypes()
acceptedTypes():
string[]
Defined in: models/lib/repositories/abstract.d.ts:69
Every stored __type value of this model and its transitive subclasses, for stores filtering in their query
language
Returns
string[]
the values, empty when the model carries no Metadata
Inherited from
MemoryRepository.acceptedTypes
aggregate()
aggregate<
G,M>(spec,params?):Promise<AggregationResult<AggregatedRow<InstanceType<T>,G,M>>>
Defined in: models/lib/repositories/abstract.d.ts:256
Keep the full generic signature here (not spec: any): concrete repositories are used
directly in code and tests, and must expose the typed rows.
Type Parameters
G
G extends readonly _NonFunctionPropertyPaths<InstanceType<T>>[] = []
M
M extends Record<string, MetricSpec<InstanceType<T>>> = Record<string, MetricSpec<InstanceType<T>>>
Parameters
spec
AggregationSpec<InstanceType<T>, G, M>
params?
QueryParameters
Returns
Promise<AggregationResult<AggregatedRow<InstanceType<T>, G, M>>>
Inherited from
MemoryRepository.aggregate
aggregateInMemory()
protectedaggregateInMemory(query):Promise<Record<string,unknown>[]>
Defined in: models/lib/repositories/abstract.d.ts:301
Aggregate by streaming the filtered items
Parameters
query
AggregationQuery
the aggregation
Returns
Promise<Record<string, unknown>[]>
the rows
Inherited from
MemoryRepository.aggregateInMemory
applyAssignments()
protectedapplyAssignments<O>(target,assignments):O
Defined in: models/lib/repositories/abstract.d.ts:166
Set the assignments of an UPDATE on an object, creating the intermediate objects of dotted paths
Targets were checked by parseStatement: letters, digits and _ only, no __ segment, no
Object.prototype member name.
Type Parameters
O
O
Parameters
target
O
the object to change in place
assignments
Assignment[]
the SET assignments
Returns
O
the target
Inherited from
MemoryRepository.applyAssignments
belongsToModel()
belongsToModel(
stored?):boolean
Defined in: models/lib/repositories/abstract.d.ts:75
Whether a stored row belongs to this model, for stores filtering in memory
Parameters
stored?
string
the stored __type, undefined for an untyped row
Returns
boolean
true when the row belongs to this model (always without Metadata)
Inherited from
MemoryRepository.belongsToModel
buildClassFilter()
protectedbuildClassFilter():string|undefined
Defined in: models/lib/repositories/memory.d.ts:186
Build the WebdaQL class-filter clause __type IN ['A', 'B', ...] covering
this.model's identifier and every transitive descendant.
Returns undefined when the model carries no Metadata.
Returns
string | undefined
the class-filter WebdaQL clause, or undefined when no Metadata
Inherited from
MemoryRepository.buildClassFilter
buildClassFilterIdentifiers()
protectedbuildClassFilterIdentifiers():string[] |undefined
Defined in: models/lib/repositories/memory.d.ts:177
Collect the WebdaQL class-filter identifier list — this.model's
identifier and every transitive descendant.
Returns undefined when the model carries no Metadata (plain unit-test
classes that didn't go through Application.setModelMetadata). In that
case query() skips the prepend and returns everything in storage,
preserving the pre-fix behavior for those bare classes.
Returns
string[] | undefined
the list of identifiers to match, or undefined when no Metadata
Inherited from
MemoryRepository.buildClassFilterIdentifiers
buildItem()
protectedbuildItem(data):InstanceType<T>
Defined in: models/lib/repositories/abstract.d.ts:86
Build the model instance to create from the incoming data
Primary key fields that are undefined or null are dropped from the data so a key generated by the model constructor (e.g. UuidModel) is not overwritten. Repositories must read the storage key from the returned instance.
Parameters
data
Helpers<InstanceType<T>>
the incoming data
Returns
InstanceType<T>
the model instance
Inherited from
MemoryRepository.buildItem
checkAggregationFallback()
protectedcheckAggregationFallback(query,reason):Promise<void>
Defined in: models/lib/repositories/abstract.d.ts:272
Apply the fallback policy before aggregating or counting in memory
Parameters
query
AggregationQuery | undefined
the aggregation, undefined for a count
reason
string
why it cannot run natively
Returns
Promise<void>
Throws
AggregationError AGGREGATION_NOT_NATIVE when the policy is deny
Inherited from
MemoryRepository.checkAggregationFallback
checkCondition()
protectedcheckCondition<K>(item,conditionField?,condition?):void
Defined in: models/lib/repositories/memory.d.ts:67
Verify an optimistic locking condition on an item
Type Parameters
K
K extends string
Parameters
item
InstanceType<T>
The item to check
conditionField?
K | null
Field to validate
condition?
any
Expected value
Returns
void
Throws
Error if the condition does not match
Inherited from
MemoryRepository.checkCondition
checkFirestoreCondition()
protectedcheckFirestoreCondition(uid,data,field,condition):void
Defined in: gcp/src/services/firestore.service.ts:220
Verify a write condition
Parameters
uid
string
the object key, for the error
data
any
the current data
field
string | undefined
the field to check
condition
any
the expected value
Returns
void
checkItemWriteCondition()
protectedcheckItemWriteCondition(item,index,itemWriteConditionField,itemWriteCondition):void
Defined in: models/lib/repositories/memory.d.ts:317
Verify a write condition on a collection item
Parameters
item
any[]
The array to check
index
number
Index of the item in the array
itemWriteConditionField
string
Field name to check on the item
itemWriteCondition
any
Expected value for the field
Returns
void
Throws
Error if the condition does not match
Inherited from
MemoryRepository.checkItemWriteCondition
clear()
clear():
Promise<void>
Defined in: gcp/src/services/firestore.service.ts:652
Delete every document of the collection (used in tests)
Returns
Promise<void>
collectStatementKeys()
protectedcollectStatementKeys(statement):Promise<PrimaryKeyType<InstanceType<T>>[]>
Defined in: models/lib/repositories/abstract.d.ts:173
Keys of the objects matching the WHERE of a statement, collected before any change so an update changing a WHERE field cannot meet the same object twice; at most LIMIT keys
Parameters
statement
Query
the parsed statement
Returns
Promise<PrimaryKeyType<InstanceType<T>>[]>
the primary keys
Inherited from
MemoryRepository.collectStatementKeys
configureAggregation()
configureAggregation(
options):void
Defined in: models/lib/repositories/abstract.d.ts:228
Copy the known options (fallback, maxGroups, warn); undefined values keep the current ones
Parameters
options
Partial<AggregationOptions>
Returns
void
Throws
Error when maxGroups is not a positive integer or fallback is unknown
Inherited from
MemoryRepository.configureAggregation
configureMonitoring()
configureMonitoring(
options):void
Defined in: models/lib/repositories/abstract.d.ts:233
Configure the query monitoring policy, called by the owning store
Parameters
options
Partial<QueryMonitorOptions>
options to override
Returns
void
Inherited from
MemoryRepository.configureMonitoring
count()
count(
filter?,params?,options?):Promise<CountResult>
Defined in: models/lib/repositories/abstract.d.ts:278
Parse the filter, refuse statements, drop ORDER BY / LIMIT / OFFSET and run executeCount
Parameters
filter?
string
params?
QueryParameters
options?
CountOptions
Returns
Promise<CountResult>
Throws
Error when max is not a positive integer
Inherited from
MemoryRepository.count
countInMemory()
protectedcountInMemory(filter,max?):Promise<Omit<CountResult,"native">>
Defined in: models/lib/repositories/abstract.d.ts:295
Count by streaming the filtered items, stopping at max + 1
Parameters
filter
Expression
the filter
max?
number
stop after max objects, undefined for an exact count
Returns
Promise<Omit<CountResult, "native">>
the value and its relation
Inherited from
MemoryRepository.countInMemory
create()
create(
data,save?):Promise<any>
Defined in: gcp/src/services/firestore.service.ts:261
Parameters
data
any
save?
boolean = true
Returns
Promise<any>
Overrides
MemoryRepository.create
currentTypeOf()
protectedcurrentTypeOf(instance,stored?):string|undefined
Defined in: models/lib/repositories/memory.d.ts:140
The __type to attach to a loaded instance: the current identifier of its class, the stored value when it is
unknown or ambiguous (never rewritten to a guess), the repository model identifier for an untyped row
Parameters
instance
any
the loaded instance
stored?
string
the stored __type
Returns
string | undefined
the value to attach
Inherited from
MemoryRepository.currentTypeOf
delete()
delete(
primaryKey,conditionField?,condition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:315
Parameters
primaryKey
any
conditionField?
any
condition?
any
Returns
Promise<void>
Overrides
MemoryRepository.delete
deleteItemFromCollection()
deleteItemFromCollection(
primaryKey,collection,index,itemWriteConditionField?,itemWriteCondition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:403
Parameters
primaryKey
any
collection
any
index
number
itemWriteConditionField?
any
itemWriteCondition?
any
Returns
Promise<void>
Overrides
MemoryRepository.deleteItemFromCollection
deleteMany()
deleteMany(
statement,params?):Promise<number>
Defined in: gcp/src/services/firestore.service.ts:612
Delete in bulk: the generic fallback (matching keys collected up to LIMIT, then deleted one by one with
this repository's delete), no per-object event. A native Firestore batch write is a follow-up.
Parameters
statement
string | Query
params?
QueryParameters
Returns
Promise<number>
Overrides
MemoryRepository.deleteMany
deleteManyByKey()
protecteddeleteManyByKey(statement,params?):Promise<number>
Defined in: models/lib/repositories/abstract.d.ts:191
Generic deleteMany: collect the matching keys (up to LIMIT), then delete them one by one with this
repository's delete primitive
Used by stores without a native bulk delete. On a store repository the primitive emits no event.
Parameters
statement
string | Query
the DELETE statement or its parsed form
params?
QueryParameters
values for the placeholders
Returns
Promise<number>
the number of objects deleted
Inherited from
MemoryRepository.deleteManyByKey
deserialize()
deserialize(
item):InstanceType<T>
Defined in: models/lib/repositories/memory.d.ts:121
Unserialize the object from a string
Beyond restoring the concrete type via @webda/serialize's
$serializer.type typeKey, this also surfaces the storage envelope's
__type stamp on the in-memory instance as a NON-ENUMERABLE property. The
non-enumerable bit keeps __type invisible to JSON.stringify and
Object.keys (so API responses and re-serialize cycles are byte-identical
for the model's own fields), while still being readable via direct
property access — which is exactly how WebdaQL's filter eval reads it
(ComparisonExpression.getAttributeValue walks obj[name]).
Backward-compat: legacy rows written before the envelope-stamping was
introduced won't carry __type. In that case we backfill from the
repository's own model.Metadata.Identifier so they look like records of
the parent class — which is exactly what query()'s prepended class
filter expects (parent + descendants). Plain unit-test classes without
Metadata get no stamp at all; their repos opt out of class filtering on
the query side too (see query).
Parameters
item
string
the serialized string
Returns
InstanceType<T>
the deserialized model instance
Inherited from
MemoryRepository.deserialize
deserializeEnvelope()
protecteddeserializeEnvelope(item,raw,stored?):any
Defined in: models/lib/repositories/memory.d.ts:132
Deserialize a serializer envelope
A row written under a model's former identifier (renamed, see @WebdaAlias) names a serializer that no longer
exists: it is deserialized with the serializer of the class its __type resolves to.
Parameters
item
string
the stored string
raw
any
the parsed envelope
stored?
string
the stored __type
Returns
any
the instance
Inherited from
MemoryRepository.deserializeEnvelope
emit()
emit<
K>(event,data):Promise<void>
Defined in: models/lib/repositories/abstract.d.ts:346
Emit an event to all registered listeners and await their completion.
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
The event name to emit
data
InstanceType<T>[typeof WEBDA_EVENTS][K]
The event payload
Returns
Promise<void>
Inherited from
MemoryRepository.emit
excludePrimaryKey()
excludePrimaryKey(
object):any
Defined in: models/lib/repositories/abstract.d.ts:110
Parameters
object
any
Returns
any
Inherited from
MemoryRepository.excludePrimaryKey
executeAggregation()
protectedexecuteAggregation(query):Promise<AggregationResult<any>>
Defined in: models/lib/repositories/memory.d.ts:248
A plain MemoryRepository (MemoryStore, FileStore) aggregates its own local data: that is native. Subclasses backed by a remote database (Firestore, Dynamo, ...) inherit the fallback instead.
Parameters
query
AggregationQuery
Returns
Promise<AggregationResult<any>>
Inherited from
MemoryRepository.executeAggregation
executeCount()
protectedexecuteCount(filter,max?):Promise<CountResult>
Defined in: models/lib/repositories/memory.d.ts:254
A plain MemoryRepository (MemoryStore, FileStore) counts its own local data: that is native. Subclasses backed by a remote database (Firestore, Dynamo, ...) inherit the fallback instead.
Parameters
filter
Expression
max?
number
Returns
Promise<CountResult>
Inherited from
MemoryRepository.executeCount
exists()
exists(
primaryKey):Promise<boolean>
Defined in: gcp/src/services/firestore.service.ts:256
Parameters
primaryKey
any
Returns
Promise<boolean>
Overrides
MemoryRepository.exists
find()
find(
parsedQuery):Promise<FireStoreFindResult<InstanceType<T>>>
Defined in: gcp/src/services/firestore.service.ts:442
Run a parsed query against Firestore
Firestore has strong limitations on what can be queried natively, the part of the
query that cannot be translated is applied in memory and returned as filter
Parameters
parsedQuery
Query
the parsed WebdaQL query
Returns
Promise<FireStoreFindResult<InstanceType<T>>>
the results, the in-memory filter and the continuation token
findModelClass()
protectedfindModelClass(identifier):any
Defined in: models/lib/repositories/memory.d.ts:157
Find the class to hydrate a row typed identifier (a Webda 3 legacy form included): the resolved model when it
is the repository model or one of its transitive subclasses, the repository model for an ancestor type or an
unknown or ambiguous type
Parameters
identifier
string
stored __type
Returns
any
the class, this.model when it carries no Metadata, or undefined for an unrelated model
Inherited from
MemoryRepository.findModelClass
fromFirestore()
protectedfromFirestore(data):InstanceType<T>
Defined in: gcp/src/services/firestore.service.ts:202
Deserialize a Firestore document into a model instance
Parameters
data
any
the document data
Returns
InstanceType<T>
the model instance
fromUID()
fromUID(
uid):ModelRefWithCreate<InstanceType<T>>
Defined in: models/lib/repositories/abstract.d.ts:92
Return a ref from the uuid
Parameters
uid
string
the serialized primary key
Returns
ModelRefWithCreate<InstanceType<T>>
a model reference with create capability
Inherited from
MemoryRepository.fromUID
get()
get(
primaryKey):Promise<any>
Defined in: gcp/src/services/firestore.service.ts:246
Parameters
primaryKey
any
Returns
Promise<any>
Overrides
MemoryRepository.get
getAllowedFields()
getAllowedFields():
string[] |undefined
Defined in: models/lib/repositories/abstract.d.ts:138
Field paths of the model, from its metadata (Reflection and the stored, input and output schemas)
Used to validate UPDATE SET targets.
Returns
string[] | undefined
the field names, undefined when the model carries no field metadata (no validation then)
Inherited from
MemoryRepository.getAllowedFields
getCollection()
getCollection():
string
Defined in: gcp/src/services/firestore.service.ts:184
The backing collection name for this repository's model
Returns
string
the collection name
getCompletionFields()
getCompletionFields():
CompletionField[]
Defined in: models/lib/repositories/abstract.d.ts:143
Completion fields of the model, flattened from its schemas
Returns
CompletionField[]
array of completion fields
Inherited from
MemoryRepository.getCompletionFields
getDocumentRef()
getDocumentRef(
primaryKey):DocumentReference
Defined in: gcp/src/services/firestore.service.ts:193
Get Document Reference
Parameters
primaryKey
any
the object or primary key
Returns
DocumentReference
the document reference
getMaxListeners()
getMaxListeners():
number
Defined in: models/lib/repositories/abstract.d.ts:334
EventEmitter-compatibility shim. Returns the max-listeners hint.
Returns
number
the current max-listeners hint
Inherited from
MemoryRepository.getMaxListeners
getPrimaryKey()
Call Signature
getPrimaryKey(
object,forceObject?):PrimaryKeyType<InstanceType<T>>
Defined in: models/lib/repositories/abstract.d.ts:112
Get the primary key value for an object as a scalar or string.
Parameters
object
any
forceObject?
false
Returns
PrimaryKeyType<InstanceType<T>>
Inherited from
MemoryRepository.getPrimaryKey
Call Signature
getPrimaryKey(
object,forceObject):PrimaryKey<InstanceType<T>>
Defined in: models/lib/repositories/abstract.d.ts:114
Get the primary key value for an object as a structured key object.
Parameters
object
any
forceObject
true
Returns
PrimaryKey<InstanceType<T>>
Inherited from
MemoryRepository.getPrimaryKey
getRootModel()
getRootModel():
T
Defined in: models/lib/repositories/abstract.d.ts:47
Returns
T
Inherited from
MemoryRepository.getRootModel
getSync()
protectedgetSync(primaryKey):InstanceType<T>
Defined in: models/lib/repositories/memory.d.ts:55
Synchronous read used by conditional writes to keep check-and-set atomic
Parameters
primaryKey
string | PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>
key of the item
Returns
InstanceType<T>
the deserialized item
Inherited from
MemoryRepository.getSync
getTableRoot()
getTableRoot():
ModelClass<Storable<any,any>> |undefined
Defined in: models/lib/repositories/abstract.d.ts:57
Returns
ModelClass<Storable<any, any>> | undefined
the model owning the untyped rows of the storage
Inherited from
MemoryRepository.getTableRoot
getUID()
getUID(
object):string
Defined in: models/lib/repositories/abstract.d.ts:116
Parameters
object
any
Returns
string
Inherited from
MemoryRepository.getUID
handleOrderBy()
handleOrderBy(
query,orderBy,rangeAttribute):Query<DocumentData>
Defined in: gcp/src/services/firestore.service.ts:558
Manage OrderBy complex condition on Firebase
Parameters
query
Query<DocumentData>
the Firestore query
orderBy
OrderBy[] | undefined
the requested order
rangeAttribute
string | undefined
the attribute used in a range condition if any
Returns
Query<DocumentData>
the Firestore query with ordering
hydratePlainRow()
protectedhydratePlainRow(raw):InstanceType<T>
Defined in: models/lib/repositories/memory.d.ts:165
Hydrate a plain JSON row as an instance of the repository model (or of the transitive subclass named by its
__type; an ancestor type hydrates as the repository model), the same way document stores hydrate their rows;
a row typed as an unrelated model is refused
Parameters
raw
any
the parsed row
Returns
InstanceType<T>
the model instance
Inherited from
MemoryRepository.hydratePlainRow
incrementAttribute()
incrementAttribute<
K,L>(primaryKey,info,_conditionField?,_condition?):Promise<void>
Defined in: models/lib/repositories/abstract.d.ts:124
Type Parameters
K
K extends string
L
L extends string
Parameters
primaryKey
PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>
info
L | { property: L; value?: number; }
_conditionField?
K | null
_condition?
any
Returns
Promise<void>
Inherited from
MemoryRepository.incrementAttribute
incrementAttributes()
incrementAttributes(
primaryKey,info,_conditionField?,_condition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:342
Parameters
primaryKey
any
info
any
_conditionField?
any
_condition?
any
Returns
Promise<void>
Overrides
MemoryRepository.incrementAttributes
isPlainRow()
protectedisPlainRow(raw):boolean
Defined in: models/lib/repositories/memory.d.ts:149
Whether a stored row is a plain JSON object without a serializer envelope
Rows written by earlier versions (e.g. a v3 FileStore folder or MemoryStore persistence file) store the
object itself, its type in a top-level __type.
Parameters
raw
any
the parsed row
Returns
boolean
true for a plain object row
Inherited from
MemoryRepository.isPlainRow
iterate()
iterate(
query):AsyncGenerator<InstanceType<T>,any,any>
Defined in: gcp/src/services/firestore.service.ts:636
Parameters
query
string
Returns
AsyncGenerator<InstanceType<T>, any, any>
Overrides
MemoryRepository.iterate
listKeysOfModel()
protectedlistKeysOfModel(ids?):string[]
Defined in: models/lib/repositories/memory.d.ts:230
List the storage keys that may belong to this model
A storage shared by several models holds foreign entries whose key shape can be invalid for this
repository: they are skipped from the stored __type before any parsing. Entries are kept when their stored
__type belongs to the model (legacy forms included). Untyped entries, and entries typed as a strict ancestor
of the table root, belong to the table root and its ancestors. Unreadable entries are kept so their error
surfaces.
A TypeIndexedMap storage answers from its type index: only the keys of the model are visited. Any other Map-like storage is scanned, parsing every entry.
Parameters
ids?
string[]
class identifiers (model and subclasses), undefined to keep everything
Returns
string[]
the keys to evaluate
Inherited from
MemoryRepository.listKeysOfModel
matchStorage()
protectedmatchStorage(statement):object[]
Defined in: models/lib/repositories/memory.d.ts:269
Keys of the stored objects of this model matching a statement's WHERE, at most LIMIT
Synchronous: the statement then runs without yielding, so no other write interleaves and an object is never met twice.
Parameters
statement
Query
the parsed statement
Returns
object[]
the storage keys and their objects
Inherited from
MemoryRepository.matchStorage
monitor()
protectedmonitor<R>(operation,query,fn,details):Promise<R>
Defined in: models/lib/repositories/abstract.d.ts:247
Helper that times a query operation, catches and rethrows errors, and calls onQuery safely
Type Parameters
R
R
Parameters
operation
QueryOperation
the query operation
query
string
the query string
fn
() => Promise<R>
the async function to execute and time
details
((r) => object) | ((r) => number)
optional callback to extract result count or pagination details
Returns
Promise<R>
the result of fn
Inherited from
MemoryRepository.monitor
off()
off<
K>(event,listener):void
Defined in: models/lib/repositories/abstract.d.ts:316
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
listener
(data) => void
Returns
void
Inherited from
MemoryRepository.off
on()
on<
K>(event,listener):void
Defined in: models/lib/repositories/abstract.d.ts:312
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
listener
(data) => void
Returns
void
Inherited from
MemoryRepository.on
once()
once<
K>(event,listener):void
Defined in: models/lib/repositories/abstract.d.ts:314
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
listener
(data) => void
Returns
void
Inherited from
MemoryRepository.once
parseLegacyUID()
protectedparseLegacyUID(uid):PrimaryKey<InstanceType<T>> |undefined
Defined in: models/lib/repositories/abstract.d.ts:108
Parse a uid through the model's parseLegacyUID hook
Parameters
uid
string
the raw storage key
Returns
PrimaryKey<InstanceType<T>> | undefined
a key whose string form is the raw uid, or undefined when the model does not recognise it
Inherited from
MemoryRepository.parseLegacyUID
parseStatement()
protectedparseStatement(type,statement,params?):Promise<Query>
Defined in: models/lib/repositories/abstract.d.ts:156
Parse a bulk statement and check it is of the expected type
For an UPDATE, every SET target is checked: no primary key field, no private (__) segment, no
constructor/prototype segment, and a field of the model when its metadata lists them.
Parameters
type
"DELETE" | "UPDATE"
the expected statement type
statement
string | Query
the statement string or its parsed form
params?
QueryParameters
values for the placeholders of a statement string
Returns
Promise<Query>
the parsed statement
Throws
WebdaQLError when the statement has another type or a SET target is refused
Throws
SyntaxError when the statement does not parse, or a SET target is not a field of the model
Inherited from
MemoryRepository.parseStatement
parseUID()
parseUID(
uid,forceObject?):PrimaryKeyType<InstanceType<T>> |PrimaryKey<InstanceType<T>>
Defined in: models/lib/repositories/abstract.d.ts:102
Parse a serialized primary key
A composite key that does not split into the primary key fields is offered to the model's optional
static parseLegacyUID(uid) hook (see WEBDA_LEGACY_UID): the returned key keeps the raw uid as its
string form so it addresses the legacy storage entry. Without a hook, or when the hook declines, the
uid is rejected.
Parameters
uid
string
forceObject?
boolean
Returns
PrimaryKeyType<InstanceType<T>> | PrimaryKey<InstanceType<T>>
Inherited from
MemoryRepository.parseUID
patch()
patch(
primaryKey,data,conditionField?,condition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:310
Parameters
primaryKey
any
data
any
conditionField?
any
condition?
any
Returns
Promise<void>
Overrides
MemoryRepository.patch
query()
query(
query):Promise<{continuationToken?:string;results:InstanceType<T>[]; }>
Defined in: gcp/src/services/firestore.service.ts:626
Parameters
query
any
Returns
Promise<{ continuationToken?: string; results: InstanceType<T>[]; }>
Overrides
MemoryRepository.query
ref()
ref(
key):ModelRefWithCreate<InstanceType<T>>
Defined in: models/lib/repositories/abstract.d.ts:122
Parameters
key
PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>
Returns
ModelRefWithCreate<InstanceType<T>>
Inherited from
MemoryRepository.ref
removeAttribute()
removeAttribute(
primaryKey,attribute,conditionField?,condition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:327
Parameters
primaryKey
any
attribute
any
conditionField?
any
condition?
any
Returns
Promise<void>
Overrides
MemoryRepository.removeAttribute
removeListener()
removeListener<
K>(event,listener):void
Defined in: models/lib/repositories/abstract.d.ts:329
EventEmitter-compatibility alias for off. Consumers that treat a
repository as a Node EventEmitter (e.g. @webda/runtime EventIterator)
call removeListener.
Type Parameters
K
K extends string | number | symbol
Parameters
event
K
the event name
listener
(data) => void
the listener to remove
Returns
void
Inherited from
MemoryRepository.removeListener
resolvePath()
protectedresolvePath(item,path):object
Defined in: models/lib/repositories/memory.d.ts:296
Resolve the parent object and last key of a dotted path, creating intermediate objects
Parameters
item
any
root object
path
string
dotted path
Returns
object
the holder and the last key
holder
holder:
any
key
key:
string
Inherited from
MemoryRepository.resolvePath
safeOnQuery()
protectedsafeOnQuery(info):void
Defined in: models/lib/repositories/abstract.d.ts:238
Safely invoke the onQuery callback without throwing into the caller
Parameters
info
QueryExecutionInfo
query execution info
Returns
void
Inherited from
MemoryRepository.safeOnQuery
serialize()
serialize(
item):string
Defined in: models/lib/repositories/memory.d.ts:97
Serialize the object to a string
This method is used to allow switching between different serialization methods
The serialized payload is also stamped with a top-level __type field
carrying the concrete model identifier when available
(item.constructor.Metadata?.Identifier). This lets query() and external
storage backends filter results by class without re-instantiating every
item — important when a single underlying storage map is shared across a
model and its subclasses (the common case in production where each
registered model owns its own MemoryRepository pointing at the same Map).
The stamp lives on the serializer envelope (sibling of value /
$serializer), not inside value. deserialize() re-surfaces it on the
reconstructed instance as a non-enumerable __type property so WebdaQL's
filter eval can read it without it ever leaking into JSON.stringify or
Object.keys output — keeping API responses and re-serialize cycles
byte-identical for the model's own fields.
Models that don't carry Metadata (plain unit-test classes that don't go through Application.setModelMetadata) simply skip the stamp; the resulting payload is byte-identical to the previous implementation.
Parameters
item
InstanceType<T>
to serialize
Returns
string
serialized object
Inherited from
MemoryRepository.serialize
setAttribute()
setAttribute<
K,L>(primaryKey,attribute,value,conditionField?,condition?):Promise<void>
Defined in: models/lib/repositories/abstract.d.ts:120
Type Parameters
K
K extends string
L
L extends string
Parameters
primaryKey
string | PK<InstanceType<T>, InstanceType<T>[typeof WEBDA_PRIMARY_KEY][number]>
attribute
K
value
_PropertyPathType<InstanceType<T>, K>
conditionField?
L | null
condition?
_PropertyPathType<InstanceType<T>, L> | JSONed<_PropertyPathType<InstanceType<T>, L>>
Returns
Promise<void>
Inherited from
MemoryRepository.setAttribute
setDocument()
protectedsetDocument(merge,primaryKey,data,conditionField?,condition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:285
Implement both update and patch
Parameters
merge
boolean
merge with the existing document (patch) or replace it (update)
primaryKey
any
the object or primary key
data
any
the data to write
conditionField?
string
the field to check
condition?
any
the expected value
Returns
Promise<void>
setMaxListeners()
setMaxListeners(
n):this
Defined in: models/lib/repositories/abstract.d.ts:340
EventEmitter-compatibility shim. Records the max-listeners hint (no enforcement).
Parameters
n
number
the new hint value
Returns
this
this for chaining
Inherited from
MemoryRepository.setMaxListeners
setTableRoot()
setTableRoot(
root?):this
Defined in: models/lib/repositories/abstract.d.ts:53
Set the model owning the untyped rows of the storage
Parameters
root?
ModelClass<Storable<any, any>>
the first model of the store, undefined when not known
Returns
this
this
Inherited from
MemoryRepository.setTableRoot
translateError()
protectedtranslateError(uid,err):never
Defined in: gcp/src/services/firestore.service.ts:238
Translate Firestore not found error
Parameters
uid
string
the object key
err
any
the error raised
Returns
never
typeResolver()
protectedtypeResolver():ModelTypeResolver
Defined in: models/lib/repositories/abstract.d.ts:63
Resolver of the stored __type: the installed application one when it knows the model, else the model's own
hierarchy with exact identifiers only
Returns
ModelTypeResolver
the resolver
Inherited from
MemoryRepository.typeResolver
update()
update(
data,conditionField?,condition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:305
Parameters
data
any
conditionField?
any
condition?
any
Returns
Promise<void>
Overrides
MemoryRepository.update
updateMany()
updateMany(
statement,params?):Promise<number>
Defined in: gcp/src/services/firestore.service.ts:621
Update in bulk: the generic fallback (matching keys collected up to LIMIT, then patched one by one with
this repository's patch), no per-object event. A native Firestore batch write is a follow-up.
Parameters
statement
string | Query
params?
QueryParameters
Returns
Promise<number>
Overrides
MemoryRepository.updateMany
updateManyByKey()
protectedupdateManyByKey(statement,params?):Promise<number>
Defined in: models/lib/repositories/abstract.d.ts:201
Generic updateMany: collect the matching keys (up to LIMIT), then patch them one by one with this
repository's patch primitive. A dotted target reads the object to rewrite its top-level field.
Used by stores without a native bulk update. On a store repository the primitive emits no event.
Parameters
statement
string | Query
the UPDATE statement or its parsed form
params?
QueryParameters
values for the placeholders
Returns
Promise<number>
the number of objects updated
Inherited from
MemoryRepository.updateManyByKey
upsert()
upsert(
data):Promise<InstanceType<T>>
Defined in: models/lib/repositories/abstract.d.ts:118
Parameters
data
Helpers<InstanceType<T>>
Returns
Promise<InstanceType<T>>
Inherited from
MemoryRepository.upsert
upsertItemToCollection()
upsertItemToCollection(
primaryKey,collection,item,index?,itemWriteConditionField?,itemWriteCondition?):Promise<void>
Defined in: gcp/src/services/firestore.service.ts:363
Parameters
primaryKey
any
collection
any
item
any
index?
number
itemWriteConditionField?
any
itemWriteCondition?
any
Returns
Promise<void>
Overrides
MemoryRepository.upsertItemToCollection
writeIfPresent()
protectedwriteIfPresent(key,write):Promise<boolean>
Defined in: models/lib/repositories/abstract.d.ts:181
Run one write of the generic fallback; an object deleted since the keys were collected is skipped
Parameters
key
PrimaryKeyType<InstanceType<T>>
the primary key
write
() => Promise<void>
the write
Returns
Promise<boolean>
true when written, false when the object is gone
Throws
the write error when the object still exists
Inherited from
MemoryRepository.writeIfPresent
simulateFind()
staticsimulateFind<T>(query,uuids,repository):Promise<{continuationToken?:string;results:InstanceType<T>[]; }>
Defined in: models/lib/repositories/memory.d.ts:239
Allow to simulate a find on a list of uuids It is static to be reusable by other repository like FileRepository
Type Parameters
T
T extends ModelClass<Storable<any, any>>
Parameters
query
Query
the parsed query
uuids
any[]
the list of UIDs to search
repository
Repository<T>
the repository to fetch objects from
Returns
Promise<{ continuationToken?: string; results: InstanceType<T>[]; }>
the query results with optional continuation token
Inherited from
MemoryRepository.simulateFind