Skip to main content

Class: Stack

Defined in: server/src/utils/stack/index.ts:66

Extends​

  • Stack

Properties​

PropertyModifierTypeDefault valueDescriptionInherited fromDefined in
addDesignDocumentPKsabstract(className, pKs, temp?) => Promise<string>undefined-Stack.addDesignDocumentPKsshared/src/utils/stack/index.ts:230
addDomainabstract(domainObj) => Promise<DomainModel>undefined-Stack.addDomainshared/src/utils/stack/index.ts:63
appVersionpublicstring"0.0.1"-Stack.appVersionshared/src/utils/stack/index.ts:28
authSession?publicAuthSessionProofundefined-Stack.authSessionshared/src/utils/stack/index.ts:47
cachepublicobject{}-Stack.cacheshared/src/utils/stack/index.ts:31
connectionpublicstringundefined-Stack.connectionshared/src/utils/stack/index.ts:25
createDocsabstract(docs, type, classObj) => Promise<Document[]>undefined-Stack.createDocsshared/src/utils/stack/index.ts:202
createRelationDocabstract(docId, relationName, domainObj, params) => Promise<RelationDocument>undefined-Stack.createRelationDocshared/src/utils/stack/index.ts:204
createRelationDocsabstract(docs, relationName, domainObj) => Promise<RelationDocument[]>undefined-Stack.createRelationDocsshared/src/utils/stack/index.ts:211
dbpublicDatabase<{ }>undefined-Stack.dbshared/src/utils/stack/index.ts:21
dumpabstract() => Promise<AllDocsResponse<{ }>>undefined-Stack.dumpshared/src/utils/stack/index.ts:49
getDomainabstract(domainName, fresh?) => Promise<Domain>undefined-Stack.getDomainshared/src/utils/stack/index.ts:59
getDomainModelabstract(domainName) => Promise<DomainModel>undefined-Stack.getDomainModelshared/src/utils/stack/index.ts:226
jobEngine?publicunknownundefined-Stack.jobEngineshared/src/utils/stack/index.ts:46
lastDocIdpublicnumberundefined-Stack.lastDocIdshared/src/utils/stack/index.ts:23
listenerspublicChangesSubscription[][]Every live changes subscription this stack has handed out. Held so removeAllListeners can release them on close. Entries are removed by releaseListener, so a long-lived stack that repeatedly subscribes and unsubscribes does not grow this array.Stack.listenersshared/src/utils/stack/index.ts:43
modelWorkerpublicWorkernull-Stack.modelWorkershared/src/utils/stack/index.ts:45
nameabstractstringundefined-Stack.nameshared/src/utils/stack/index.ts:27
options?publicStackOptionsundefined-Stack.optionsshared/src/utils/stack/index.ts:26
patchCountpublicnumberundefined-Stack.patchCountshared/src/utils/stack/index.ts:34
queryabstract(sql, ...params) => Promise< | { ast: (SelectAST | UnionAST)[]; rows: any[]; } | { ast: null; rows: never[]; }>undefined-Stack.queryshared/src/utils/stack/index.ts:232
schemaVersionabstractstringundefined-Stack.schemaVersionshared/src/utils/stack/index.ts:29

Methods​

addClass()​

addClass(classObj): Promise<ClassModel>;

Defined in: server/src/utils/stack/index.ts:740

Parameters​

ParameterType
classObjClass

Returns​

Promise<ClassModel>

Overrides​

Stack.addClass

addClassLock()​

addClassLock(className): Promise<boolean>;

Defined in: server/src/utils/stack/index.ts:436

Parameters​

ParameterType
classNamestring

Returns​

Promise<boolean>

Overrides​

Stack.addClassLock

checkSystem()​

checkSystem(): Promise<void>;

Defined in: server/src/utils/stack/index.ts:242

Returns​

Promise<void>


clearClassLock()​

clearClassLock(className): Promise<boolean>;

Defined in: server/src/utils/stack/index.ts:451

Parameters​

ParameterType
classNamestring

Returns​

Promise<boolean>

Overrides​

Stack.clearClassLock

close()​

close(): void;

Defined in: server/src/utils/stack/index.ts:488

Returns​

void

Overrides​

Stack.close

createDoc()​

createDoc(
docId,
type,
classObj,
params): Promise<Document>;

Defined in: server/src/utils/stack/index.ts:991

Parameters​

ParameterType
docIdstring
typestring
classObjClass
params{ }

Returns​

Promise<Document>

Overrides​

Stack.createDoc

deleteDocument()​

deleteDocument(_id): Promise<boolean>;

Defined in: server/src/utils/stack/index.ts:1082

Sets the active param of a document to false

Parameters​

ParameterTypeDescription
_idstring

Returns​

Promise<boolean>

Promise

Async​

Overrides​

Stack.deleteDocument

destroyDb()​

destroyDb(): Promise<boolean>;

Defined in: server/src/utils/stack/index.ts:709

Returns​

Promise<boolean>


findDocument()​

findDocument(
selector,
fields,
skip,
limit): Promise<Document>;

Defined in: server/src/utils/stack/index.ts:605

Parameters​

ParameterTypeDefault value
selectoranyundefined
fieldsanyundefined
skipanyundefined
limitanyundefined

Returns​

Promise<Document>


findDocuments()​

findDocuments(
selector,
fields?,
skip?,
limit?): Promise<{
[key: string]: any;
docs: Document[];
}>;

Defined in: server/src/utils/stack/index.ts:564

Parameters​

ParameterType
selector{ [key: string]: any; }
fields?string[]
skip?number
limit?number

Returns​

Promise<{ [key: string]: any; docs: Document[]; }>

Overrides​

Stack.findDocuments

getAllClasses()​

getAllClasses(): Promise<Class[]>;

Defined in: server/src/utils/stack/index.ts:643

Returns​

Promise<Class[]>


getAllClassModels()​

getAllClassModels(): Promise<ClassModel[]>;

Defined in: server/src/utils/stack/index.ts:658

Returns​

Promise<ClassModel[]>


getClass()​

getClass(className): Promise<Class>;

Defined in: server/src/utils/stack/index.ts:493

Parameters​

ParameterType
classNamestring

Returns​

Promise<Class>

Overrides​

Stack.getClass

getClassModel()​

getClassModel(className): Promise<ClassModel>;

Defined in: server/src/utils/stack/index.ts:611

Parameters​

ParameterType
classNamestring

Returns​

Promise<ClassModel>

Overrides​

Stack.getClassModel

getClassModels()​

getClassModels(classNames): Promise<ClassModel[]>;

Defined in: server/src/utils/stack/index.ts:669

Parameters​

ParameterType
classNamesstring[]

Returns​

Promise<ClassModel[]>


getDb()​

getDb(): Database<{
}>;

Defined in: server/src/utils/stack/index.ts:117

Returns​

Database<{ }>


getDbInfo()​

getDbInfo(): Promise<DatabaseInfo>;

Defined in: server/src/utils/stack/index.ts:121

Returns​

Promise<DatabaseInfo>


getDbName()​

getDbName(): string;

Defined in: server/src/utils/stack/index.ts:125

Returns​

string


getDocRevision()​

getDocRevision(docId): Promise<string>;

Defined in: server/src/utils/stack/index.ts:551

Parameters​

ParameterType
docIdstring

Returns​

Promise<string>


getDocument()​

getDocument(docId): Promise<ExistingDocument<{
}>>;

Defined in: server/src/utils/stack/index.ts:536

Parameters​

ParameterType
docIdstring

Returns​

Promise<ExistingDocument<{ }>>


getLastDocId()​

getLastDocId(): Promise<number>;

Defined in: server/src/utils/stack/index.ts:137

Returns​

Promise<number>


getSystem()​

getSystem(): Promise<SystemDoc>;

Defined in: server/src/utils/stack/index.ts:152

Returns​

Promise<SystemDoc>


incrementLastDocId()​

incrementLastDocId(): Promise<number>;

Defined in: server/src/utils/stack/index.ts:680

Returns​

Promise<number>


initdb()​

initdb(): Promise<ServerStack>;

Defined in: server/src/utils/stack/index.ts:481

Returns​

Promise<ServerStack>


initIndex()​

initIndex(): Promise<void>;

Defined in: server/src/utils/stack/index.ts:507

Returns​

Promise<void>


onClassDoc()​

onClassDoc(className): Changes<{
}>;

Defined in: server/src/utils/stack/index.ts:465

Parameters​

ParameterType
classNamestring

Returns​

Changes<{ }>

Overrides​

Stack.onClassDoc

onClassLock()​

onClassLock(className): Changes<{
}>;

Defined in: server/src/utils/stack/index.ts:423

Parameters​

ParameterType
classNamestring

Returns​

Changes<{ }>

Overrides​

Stack.onClassLock

onClassModelChanges()​

onClassModelChanges(): Changes<{
}>;

Defined in: server/src/utils/stack/index.ts:357

Listener that fires when a document that refers to a class is edited or created, marks its execution while handling the propagation of schema modifications to children documents: by dispatching a webworker message containing the

Returns​

Changes<{ }>

void

Var​

className and the previous revision id. In the main case, the worker sends a message with the result of its task.

Fires​

class-model-propagation-complete

Fires​

class-model-propagation-pending


onClassModelPropagationComplete()​

onClassModelPropagationComplete(event): void;

Defined in: server/src/utils/stack/index.ts:338

Parameters​

ParameterTypeDescription
eventCustomEvent<ClassModelPropagationComplete>

Returns​

void

Description​

When a class model propagation comes to completion remove the corresponding ~lock from the database


onClassModelPropagationStart()​

onClassModelPropagationStart(event): void;

Defined in: server/src/utils/stack/index.ts:323

Parameters​

ParameterTypeDescription
eventCustomEvent<ClassModelPropagationStart>

Returns​

void

Description​

When a class model propagation starts write the ~lock document to the database. It prevents any further modifications on the class data model

Overrides​

Stack.onClassModelPropagationStart

prepareChangeDocument()​

prepareChangeDocument(doc, classObj?): Promise<Document>;

Defined in: shared/src/utils/stack/index.ts:100

Prepares a document from the changes feed for delivery to a listener.

The base implementation passes it through, which is correct for a stack that does not encrypt. A stack that does overrides this: the feed bypasses the plugin that decrypts reads, so a stored encrypted attribute would otherwise reach a consumer as its raw payload. See ADR-0020.

Parameters​

ParameterTypeDescription
docDocumentThe document from change.doc.
classObj?ClassThe class, when the caller has one.

Returns​

Promise<Document>

Inherited from​

Stack.prepareChangeDocument

prepareDoc()​

prepareDoc(
_id,
type,
params): object;

Defined in: server/src/utils/stack/index.ts:981

Parameters​

ParameterType
_idstring
typestring
params{ [key: string]: string | number | boolean; }

Returns​

object


releaseListener()​

releaseListener(listener?): void;

Defined in: shared/src/utils/stack/index.ts:186

Cancels a subscription and forgets it.

The counterpart to subscribeClassDocs: a caller that is done watching must call this rather than dropping the handle, because the subscription keeps the underlying feed - and everything the handler closes over - alive on its own. Safe to call with a handle that is already cancelled, or with nothing at all.

Parameters​

ParameterTypeDescription
listener?ChangesSubscriptionThe handle to release.

Returns​

void

Inherited from​

Stack.releaseListener

removeAllListeners()​

removeAllListeners(): void;

Defined in: server/src/utils/stack/index.ts:312

Returns​

void

Description​

Clears all listeners from the Stack

Overrides​

Stack.removeAllListeners

reset()​

reset(): Promise<ServerStack>;

Defined in: server/src/utils/stack/index.ts:698

Returns​

Promise<ServerStack>


setListeners()​

setListeners(): void;

Defined in: server/src/utils/stack/index.ts:280

Returns​

void

Overrides​

Stack.setListeners

subscribeClassDocs()​

subscribeClassDocs(
className,
target,
classObj?): ChangesSubscription;

Defined in: shared/src/utils/stack/index.ts:117

Subscribes an event target to a class's document changes.

Prefer this over wiring onClassDoc directly. It routes every change through prepareChangeDocument, so a subclass that encrypts cannot forget to decrypt on this path, and it serialises the handlers: preparing a document is asynchronous, so two rapid changes to one document could otherwise be dispatched in whichever order their preparation happened to finish. The change's seq still rides along for consumers that want to discard a stale update independently.

Parameters​

ParameterTypeDescription
classNamestringThe class whose documents to watch.
targetEventTargetReceives the doc events.
classObj?ClassThe class, when the caller has one.

Returns​

ChangesSubscription

The underlying changes listener.

Inherited from​

Stack.subscribeClassDocs

subscribeDomainDocs()​

subscribeDomainDocs(domainName, target): ChangesSubscription;

Defined in: shared/src/utils/stack/index.ts:133

Subscribes an event target to a domain's relation documents.

The Domain counterpart to subscribeClassDocs, and it needs to be a separate call rather than the same one: a relation document is named by ~domain and has no ~class, so subscribing it as if it were a class matches nothing and the target simply never hears anything.

Parameters​

ParameterTypeDescription
domainNamestringThe domain whose relations to watch.
targetEventTargetReceives the doc events.

Returns​

ChangesSubscription

The underlying subscription.

Inherited from​

Stack.subscribeDomainDocs

updateClass()​

updateClass(classObj): Promise<Document>;

Defined in: server/src/utils/stack/index.ts:765

Parameters​

ParameterType
classObjClass

Returns​

Promise<Document>

Overrides​

Stack.updateClass

validateObject()​

validateObject(
obj,
type,
schema): Promise<boolean>;

Defined in: server/src/utils/stack/index.ts:784

Parameters​

ParameterType
objany
typestring
schema{ [name: string]: AttributeModel; }

Returns​

Promise<boolean>


validateObjectByType()​

validateObjectByType(
obj,
type,
schema?): Promise<boolean>;

Defined in: server/src/utils/stack/index.ts:954

Parameters​

ParameterType
objany
typestring
schema?{ [name: string]: AttributeModel; }

Returns​

Promise<boolean>


clear()​

static clear(conn): Promise<unknown>;

Defined in: server/src/utils/stack/index.ts:725

Parameters​

ParameterType
connstring

Returns​

Promise<unknown>


create()​

static create(conn, options?): Promise<ServerStack>;

Defined in: server/src/utils/stack/index.ts:130

Parameters​

ParameterType
connstring
options?StoreOptions

Returns​

Promise<ServerStack>