Model Class
Packages > @anticrm/core > Model
Model is a storage for Class descriptors and useful functions to match class instances to queries and apply values to them based on changes.
Signature:
export declare class Model implements Storage
Implements: Storage
Constructors
Constructor | Modifiers | Description |
---|---|---|
(constructor)(domain) | Constructs a new instance of the Model class |
Methods
Constructors
Model.(constructor)
Constructs a new instance of the Model
class
Signature:
constructor(domain: string);
Parameters
Parameter | Type | Description |
---|---|---|
domain | string |
Methods
add
Signature:
add(doc: Doc): void;
Parameters
Parameter | Type | Description |
---|---|---|
doc | Doc |
Returns:
void
as
Cast to some mixin, if mixin is not present in class list it will not be added. isMixedIn should be used to ensure if mixin is on place, before modifications.
Signature:
as<T extends Obj>(doc: Obj, mixin: Ref<Mixin<T>>): T;
Parameters
Parameter | Type | Description |
---|---|---|
doc | Obj | incoming document |
mixin | Ref<Mixin |
a mixin class |
Returns:
T
asMixin
Signature:
asMixin<T extends Doc>(obj: Obj, _class: Ref<Mixin<T>>, action: (doc: T) => void): void;
Parameters
Parameter | Type | Description |
---|---|---|
obj | Obj | |
_class | Ref<Mixin |
|
action | (doc: T) => void |
Returns:
void
assign
Signature:
assign(layout: AnyLayout, _class: Ref<Class<Obj>>, values: AnyLayout): AnyLayout;
Parameters
Parameter | Type | Description |
---|---|---|
layout | AnyLayout | |
_class | Ref<Class<Obj>> | |
values | AnyLayout |
Returns:
attributeClass
Signature:
attributeClass(type: Type): Ref<Class<Doc>> | undefined;
Parameters
Parameter | Type | Description |
---|---|---|
type | Type |
Returns:
attributeKey
Signature:
attributeKey(clazz: Classifier, key: string): string;
Parameters
Parameter | Type | Description |
---|---|---|
clazz | Classifier | |
key | string |
Returns:
string
cast
Perform as for a list of documents and if mixin is not present it will be added.
Signature:
cast<T extends Doc>(doc: Doc, mixin: Ref<Mixin<T>>): T;
Parameters
Parameter | Type | Description |
---|---|---|
doc | Doc | |
mixin | Ref<Mixin |
Returns:
T
classAttribute
Signature:
classAttribute(cls: Ref<Class<Obj>>, key: string): AttributeMatch;
Parameters
Parameter | Type | Description |
---|---|---|
cls | Ref<Class<Obj>> | |
key | string |
Returns:
createDocument
Construct a new proper document with all desired fields.
Signature:
createDocument<T extends Doc>(_class: Ref<Class<T>>, values: DocumentValue<T>, _id?: Ref<T>): T;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class |
|
values | DocumentValue |
|
_id | Ref |
optional id, if not sepecified will be automatically generated. |
Returns:
T
createQuery
Creates a query with filled class and mixin information properly set. *
Signature:
createQuery<T extends Doc>(_class: Ref<Class<T>>, _query: DocumentQuery<T>, flatten?: boolean): {
query: DocumentQuery<T>;
classes: Array<Ref<Class<Obj>>>;
};
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class |
a class query is designed for. |
_query | DocumentQuery |
a query object to convert to. |
flatten | boolean | use a flat key layout with dot notation.flatten queries are applicable only for mongoDB and not supported by model search operations. |
Returns:
{ query: DocumentQuery<T>; classes: Array<Ref<Class<Obj>>>; }
del
Signature:
del(id: Ref<Doc>): void;
Parameters
Parameter | Type | Description |
---|---|---|
id | Ref<Doc> |
Returns:
void
dump
Signature:
dump(): Doc[];
Returns:
Doc[]
extendsOfClass
Signature:
protected extendsOfClass(_class: Ref<Class<Obj>>): Array<Class<Obj>>;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> |
Returns:
find
Signature:
find<T extends Doc>(clazz: Ref<Class<T>>, query: DocumentQuery<T>, options?: FindOptions<T>): Promise<T[]>;
Parameters
Parameter | Type | Description |
---|---|---|
clazz | Ref<Class |
|
query | DocumentQuery |
|
options | FindOptions |
Returns:
Promise<T[]>
findAll
Find all document matching query
Signature:
protected findAll(docs: Doc[], _class: Ref<Class<Doc>>, query: AnyLayout, options?: FindOptions<any>): Doc[];
Parameters
Parameter | Type | Description |
---|---|---|
docs | Doc[] | document to find in |
_class | Ref<Class<Doc>> | to match against |
query | AnyLayout | to match |
options | FindOptions |
Returns:
Doc[]
findOne
Signature:
findOne<T extends Doc>(clazz: Ref<Class<T>>, query: DocumentQuery<T>): Promise<T | undefined>;
Parameters
Parameter | Type | Description |
---|---|---|
clazz | Ref<Class |
|
query | DocumentQuery |
Returns:
Promise<T | undefined>
findSync
Signature:
findSync<T extends Doc>(clazz: Ref<Class<Doc>>, query: DocumentQuery<T>, options?: FindOptions<T>): T[];
Parameters
Parameter | Type | Description |
---|---|---|
clazz | Ref<Class<Doc>> | |
query | DocumentQuery |
|
options | FindOptions |
Returns:
T[]
flattenArrayValue
Signature:
flattenArrayValue(curValue: unknown, attrClass: Ref<Class<Doc>>, embedded: AnyLayout): PropertyType[];
Parameters
Parameter | Type | Description |
---|---|---|
curValue | unknown | |
attrClass | Ref<Class<Doc>> | |
embedded | AnyLayout |
Returns:
flattenQuery
Convert a layout into ‘dot’ notation form if applicable.
Signature:
flattenQuery(_class: Ref<Class<Obj>>, layout: AnyLayout, useOperators?: boolean): AnyLayout;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> | an query or sort options. |
layout | AnyLayout | input layout. |
useOperators | boolean | will allow to use $elemMatch and $all in case of query. |
Returns:
- an layout with replacement of embedded documents into ‘dot’ notation.
get
Signature:
get<T extends Doc>(id: Ref<T>): T;
Parameters
Parameter | Type | Description |
---|---|---|
id | Ref |
Returns:
T
getAllAttributes
Signature:
getAllAttributes(_class: Ref<Class<Obj>>): AttributeMatch[];
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> |
Returns:
getClass
Signature:
getClass(_class: Ref<Class<Obj>>): Ref<Class<Obj>>;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> |
Returns:
getClassHierarchy
Signature:
getClassHierarchy(cls: Ref<Class<Obj>>, top?: Ref<Class<Obj>>): Array<Ref<Class<Obj>>>;
Parameters
Parameter | Type | Description |
---|---|---|
cls | Ref<Class<Obj>> | |
top | Ref<Class<Obj>> |
Returns:
getClassMixins
Signature:
getClassMixins(cls: Ref<Class<Obj>>): Array<Ref<Doc>>;
Parameters
Parameter | Type | Description |
---|---|---|
cls | Ref<Class<Obj>> |
Returns:
getDomain
Signature:
getDomain(id: Ref<Class<Doc>>): string;
Parameters
Parameter | Type | Description |
---|---|---|
id | Ref<Class<Doc>> |
Returns:
string
getLayout
Signature:
getLayout(doc: Obj): AnyLayout;
Parameters
Parameter | Type | Description |
---|---|---|
doc | Obj |
Returns:
getPrimaryKey
Signature:
getPrimaryKey(_class: Ref<Class<Obj>>): string | undefined;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> |
Returns:
string | undefined
includeMixin
Signature:
static includeMixin<E extends Obj, T extends Obj>(doc: E, clazz: Ref<Mixin<T>>): void;
Parameters
Parameter | Type | Description |
---|---|---|
doc | E | |
clazz | Ref<Mixin |
Returns:
void
is
Signature:
is(_class: Ref<Class<Obj>>, a: Ref<Class<Obj>>): boolean;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> | |
a | Ref<Class<Obj>> |
Returns:
boolean
isMixedIn
Signature:
isMixedIn(obj: Obj, _class: Ref<Mixin<Obj>>): boolean;
Parameters
Parameter | Type | Description |
---|---|---|
obj | Obj | |
_class | Ref<Mixin<Obj>> |
Returns:
boolean
isPartialMatched
Method will check if passed values of object are matched in query.
Signature:
isPartialMatched<T extends Doc>(_class: Ref<Class<Doc>>, _attributes: AnyLayout, query: DocumentQuery<T>): boolean;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Doc>> | |
_attributes | AnyLayout | partial object values of operation. |
query | DocumentQuery |
a query. |
Returns:
boolean
isSortHasEffect
Check if operation to modify attribute has effect on sorting creteria
Signature:
isSortHasEffect<T extends Doc>(_attributes: AnyLayout, sort: DocumentSorting<T>): boolean;
Parameters
Parameter | Type | Description |
---|---|---|
_attributes | AnyLayout | |
sort | DocumentSorting |
Returns:
boolean
loadDomain
Signature:
loadDomain(domain: string): Promise<Doc[]>;
Parameters
Parameter | Type | Description |
---|---|---|
domain | string |
Returns:
Promise<Doc[]>
loadModel
Signature:
loadModel(model: Doc[]): void;
Parameters
Parameter | Type | Description |
---|---|---|
model | Doc[] |
Returns:
void
matchQuery
Matches query with document
Signature:
matchQuery<T extends Doc>(_class: Ref<Class<T>>, doc: Doc, query: DocumentQuery<T>): boolean;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class |
Accept documents with this only specific _class |
doc | Doc | document to match against. |
query | DocumentQuery |
query to check. |
Returns:
boolean
mixin
Signature:
mixin<E extends Doc, T extends E>(id: Ref<E>, clazz: Ref<Mixin<T>>, values: Omit<T, keyof E>): void;
Parameters
Parameter | Type | Description |
---|---|---|
id | Ref |
|
clazz | Ref<Mixin |
|
values | Omit |
Returns:
void
mixinDocument
Signature:
mixinDocument<E extends Obj, T extends Obj>(doc: E, clazz: Ref<Mixin<T>>, values: Partial<Omit<T, keyof E>>): void;
Parameters
Parameter | Type | Description |
---|---|---|
doc | E | |
clazz | Ref<Mixin |
|
values | Partial |
Returns:
void
objectsOfClass
Signature:
protected objectsOfClass(_class: Ref<Class<Doc>>): Doc[];
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Doc>> |
Returns:
Doc[]
pull
Signature:
pull<T extends Obj>(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>, attribute: string, attributes: DocumentValue<T>): void;
Parameters
Parameter | Type | Description |
---|---|---|
ctx | TxContext | |
_class | Ref<Class<Doc>> | |
_id | Ref<Doc> | |
attribute | string | |
attributes | DocumentValue |
Returns:
void
push
Signature:
push<T extends Obj>(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>, attribute: string, attributes: DocumentValue<T>): void;
Parameters
Parameter | Type | Description |
---|---|---|
ctx | TxContext | |
_class | Ref<Class<Doc>> | |
_id | Ref<Doc> | |
attribute | string | |
attributes | DocumentValue |
Returns:
void
pushArrayValue
Signature:
pushArrayValue(curValue: unknown, attrClass: Ref<Class<Doc>>, embedded: AnyLayout): PropertyType[];
Parameters
Parameter | Type | Description |
---|---|---|
curValue | unknown | |
attrClass | Ref<Class<Doc>> | |
embedded | AnyLayout |
Returns:
remove
Signature:
remove(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>): Promise<void>;
Parameters
Parameter | Type | Description |
---|---|---|
ctx | TxContext | |
_class | Ref<Class<Doc>> | |
_id | Ref<Doc> |
Returns:
Promise<void>
removeDocument
Signature:
removeDocument<T extends Doc>(doc: T): T;
Parameters
Parameter | Type | Description |
---|---|---|
doc | T |
Returns:
T
store
Signature:
store(ctx: TxContext, doc: Doc): Promise<void>;
Parameters
Parameter | Type | Description |
---|---|---|
ctx | TxContext | |
doc | Doc |
Returns:
Promise<void>
update
Signature:
update(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>, operations: TxOperation[]): Promise<void>;
Parameters
Parameter | Type | Description |
---|---|---|
ctx | TxContext | |
_class | Ref<Class<Doc>> | |
_id | Ref<Doc> | |
operations | TxOperation[] |
Returns:
Promise<void>
updateDocument
Perform update of document attributes
Signature:
updateDocument<T extends Obj>(doc: T, operations: TxOperation[]): T;
Parameters
Parameter | Type | Description |
---|---|---|
doc | T | document to update |
operations | TxOperation[] | define a set of operations to update for document. |
Returns:
T
updateDocumentPull
Signature:
updateDocumentPull<P extends Doc, T extends Obj>(doc: P, _attribute: string, _attributes: DocumentQuery<T>): P;
Parameters
Parameter | Type | Description |
---|---|---|
doc | P | |
_attribute | string | |
_attributes | DocumentQuery |
Returns:
P
updateDocumentPush
Signature:
updateDocumentPush<P extends Doc, T extends Obj>(doc: P, _attribute: string, _attributes: DocumentValue<T>): P;
Parameters
Parameter | Type | Description |
---|---|---|
doc | P | |
_attribute | string | |
_attributes | DocumentValue |
Returns:
P
updateDocumentSet
Signature:
updateDocumentSet<T extends Obj>(doc: T, _attributes: Partial<DocumentValue<T>>): T;
Parameters
Parameter | Type | Description |
---|---|---|
doc | T | |
_attributes | Partial<DocumentValue |
Returns:
T