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

List of constructors for this class
Constructor Modifiers Description
(constructor)(domain) Constructs a new instance of the Model class

Methods

List of methods on this class
Method Modifiers Description
add(doc)
as(doc, mixin)
assign(layout, _class, values)
attributeClass(type)
attributeKey(clazz, key)
cast(docs, mixin)
classAttribute(cls, key)
createDocument(_class, values, _id)
dump()
find(clazz, query)
findAll(docs, _class, query, limit) Find all document matching query
findOne(clazz, query)
findSync(clazz, query, limit)
generateId()
get(id)
getAllAttributes(_class)
getClass(_class)
getClassHierarchy(cls, top)
getDomain(id)
getPrimaryKey(_class)
is(_class, a)
isMixedIn(obj, _class)
loadDomain(domain)
loadModel(model)
matchQuery(_class, doc, query) Matches query with document
mixin(id, clazz, values)
mixinDocument(doc, clazz, values)
newDoc(_class, _id, layout) Construct a new proper document with all desired fields.
objectsOfClass(_class)
push(ctx, _class, _id, query, attribute, attributes)
pushArrayValue(curValue, attrClass, embedded)
pushDocument(doc, query, attribute, embedded) Perform push operation on document and put new embedded object into document.
remove(ctx, _class, _id, query)
removeDocument(doc, query)
store(ctx, doc)
update(ctx, _class, _id, query, attributes)
updateDocument(doc, query, attributes) Perform update of document attributes

Constructors

Model.(constructor)

Constructs a new instance of the Model class

Signature:

constructor(domain: string);

Parameters

List of parameters
Parameter Type Description
domain string

Methods

add

Signature:

add(doc: Doc): void;

Parameters

List of parameters
Parameter Type Description
doc Doc

Returns:

void

as

Signature:

as<T extends Doc>(doc: Doc, mixin: Ref<Mixin<T>>): T;

Parameters

List of parameters
Parameter Type Description
doc Doc
mixin Ref<Mixin>

Returns:

T

assign

Signature:

assign(layout: AnyLayout, _class: Ref<Class<Obj>>, values: AnyLayout): AnyLayout;

Parameters

List of parameters
Parameter Type Description
layout AnyLayout
_class Ref<Class<Obj>>
values AnyLayout

Returns:

AnyLayout

attributeClass

Signature:

attributeClass(type: Type): Ref<Class<Doc>> | null;

Parameters

List of parameters
Parameter Type Description
type Type

Returns:

Ref<Class<Doc>> | null

attributeKey

Signature:

protected attributeKey(clazz: Classifier<Obj>, key: string): string;

Parameters

List of parameters
Parameter Type Description
clazz Classifier<Obj>
key string

Returns:

string

cast

Signature:

cast<T extends Doc>(docs: Doc[], mixin: Ref<Mixin<T>>): T[];

Parameters

List of parameters
Parameter Type Description
docs Doc[]
mixin Ref<Mixin>

Returns:

T[]

classAttribute

Signature:

classAttribute(cls: Ref<Class<Obj>>, key: string): {
        attr: Attribute;
        clazz: Class<Obj>;
        key: string;
    };

Parameters

List of parameters
Parameter Type Description
cls Ref<Class<Obj>>
key string

Returns:

{ attr: Attribute; clazz: Class<Obj>; key: string; }

createDocument

Signature:

createDocument<M extends Doc>(_class: Ref<Class<M>>, values: Omit<M, keyof Doc>, _id?: Ref<M>): M;

Parameters

List of parameters
Parameter Type Description
_class Ref<Class>
values OmitDoc>
_id Ref

Returns:

M

dump

Signature:

dump(): Doc[];

Returns:

Doc[]

find

Signature:

find<T extends Doc>(clazz: Ref<Class<T>>, query: AnyLayout): Promise<T[]>;

Parameters

List of parameters
Parameter Type Description
clazz Ref<Class>
query AnyLayout

Returns:

Promise<T[]>

findAll

Find all document matching query

Signature:

protected findAll(docs: Doc[], _class: Ref<Class<Doc>>, query: AnyLayout, limit?: number): Doc[];

Parameters

List of parameters
Parameter Type Description
docs Doc[] document to find in
_class Ref<Class<Doc>> to match against
query AnyLayout to match
limit number a number of items to find, pass value <= 0 to find all

Returns:

Doc[]

findOne

Signature:

findOne<T extends Doc>(clazz: Ref<Class<Doc>>, query: AnyLayout): Promise<T | undefined>;

Parameters

List of parameters
Parameter Type Description
clazz Ref<Class<Doc>>
query AnyLayout

Returns:

Promise<T | undefined>

findSync

Signature:

findSync(clazz: Ref<Class<Doc>>, query: AnyLayout, limit?: number): Doc[];

Parameters

List of parameters
Parameter Type Description
clazz Ref<Class<Doc>>
query AnyLayout
limit number

Returns:

Doc[]

generateId

Signature:

generateId(): Ref<Doc>;

Returns:

Ref<Doc>

get

Signature:

get(id: Ref<Doc>): Doc;

Parameters

List of parameters
Parameter Type Description
id Ref<Doc>

Returns:

Doc

getAllAttributes

Signature:

getAllAttributes(_class: Ref<Class<Obj>>): [string, Attribute][];

Parameters

List of parameters
Parameter Type Description
_class Ref<Class<Obj>>

Returns:

[string, Attribute][]

getClass

Signature:

getClass(_class: Ref<Class<Doc>>): Ref<Class<Doc>>;

Parameters

List of parameters
Parameter Type Description
_class Ref<Class<Doc>>

Returns:

Ref<Class<Doc>>

getClassHierarchy

Signature:

getClassHierarchy(cls: Ref<Class<Obj>>, top?: Ref<Class<Obj>>): Ref<Class<Obj>>[];

Parameters

List of parameters
Parameter Type Description
cls Ref<Class<Obj>>
top Ref<Class<Obj>>

Returns:

Ref<Class<Obj>>[]

getDomain

Signature:

getDomain(id: Ref<Class<Doc>>): string;

Parameters

List of parameters
Parameter Type Description
id Ref<Class<Doc>>

Returns:

string

getPrimaryKey

Signature:

getPrimaryKey(_class: Ref<Class<Obj>>): string | null;

Parameters

List of parameters
Parameter Type Description
_class Ref<Class<Obj>>

Returns:

string | null

is

Signature:

is(_class: Ref<Class<Obj>>, a: Ref<Class<Obj>>): boolean;

Parameters

List of parameters
Parameter Type Description
_class Ref<Class<Obj>>
a Ref<Class<Obj>>

Returns:

boolean

isMixedIn

Signature:

isMixedIn(obj: Doc, _class: Ref<Mixin<Doc>>): boolean;

Parameters

List of parameters
Parameter Type Description
obj Doc
_class Ref<Mixin<Doc>>

Returns:

boolean

loadDomain

Signature:

loadDomain(domain: string): Promise<Doc[]>;

Parameters

List of parameters
Parameter Type Description
domain string

Returns:

Promise<Doc[]>

loadModel

Signature:

loadModel(model: Doc[]): void;

Parameters

List of parameters
Parameter Type Description
model Doc[]

Returns:

void

matchQuery

Matches query with document

Signature:

matchQuery(_class: Ref<Class<Doc>>, doc: Doc, query: AnyLayout): boolean;

Parameters

List of parameters
Parameter Type Description
_class Ref<Class<Doc>> Accept documents with this only specific _class
doc Doc document to match against.
query AnyLayout 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

List of parameters
Parameter Type Description
id Ref
clazz Ref<Mixin>
values Omit

Returns:

void

mixinDocument

Signature:

mixinDocument<E extends Doc, T extends E>(doc: E, clazz: Ref<Mixin<T>>, values: Omit<T, keyof E>): void;

Parameters

List of parameters
Parameter Type Description
doc E
clazz Ref<Mixin>
values Omit

Returns:

void

newDoc

Construct a new proper document with all desired fields.

Signature:

newDoc<T extends Doc>(_class: Ref<Class<T>>, _id: Ref<Doc>, layout: AnyLayout): T;

Parameters

List of parameters
Parameter Type Description
_class Ref<Class>
_id Ref<Doc>
layout AnyLayout

Returns:

T

objectsOfClass

Signature:

protected objectsOfClass(_class: Ref<Class<Doc>>): Doc[];

Parameters

List of parameters
Parameter Type Description
_class Ref<Class<Doc>>

Returns:

Doc[]

push

Signature:

push(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>, query: AnyLayout | null, attribute: StringProperty, attributes: AnyLayout): Promise<void>;

Parameters

List of parameters
Parameter Type Description
ctx TxContext
_class Ref<Class<Doc>>
_id Ref<Doc>
query AnyLayout | null
attribute StringProperty
attributes AnyLayout

Returns:

Promise<void>

pushArrayValue

Signature:

pushArrayValue(curValue: unknown, attrClass: Ref<Class<Doc>>, embedded: AnyLayout): Array<PropertyType>;

Parameters

List of parameters
Parameter Type Description
curValue unknown
attrClass Ref<Class<Doc>>
embedded AnyLayout

Returns:

Array<PropertyType>

pushDocument

Perform push operation on document and put new embedded object into document.

Signature:

pushDocument<T extends Doc>(doc: T, query: AnyLayout | null, attribute: StringProperty, embedded: AnyLayout): T;

Parameters

List of parameters
Parameter Type Description
doc T document to update
query AnyLayout | null
attribute StringProperty attribute holding embedded, it could be InstanceOf or ArrayOf
embedded AnyLayout embedded object value

Returns:

T

remove

Signature:

remove(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>, query: AnyLayout | null): Promise<void>;

Parameters

List of parameters
Parameter Type Description
ctx TxContext
_class Ref<Class<Doc>>
_id Ref<Doc>
query AnyLayout | null

Returns:

Promise<void>

removeDocument

Signature:

removeDocument<T extends Doc>(doc: T, query: AnyLayout | null): T;

Parameters

List of parameters
Parameter Type Description
doc T
query AnyLayout | null

Returns:

T

store

Signature:

store(ctx: TxContext, doc: Doc): Promise<void>;

Parameters

List of parameters
Parameter Type Description
ctx TxContext
doc Doc

Returns:

Promise<void>

update

Signature:

update(ctx: TxContext, _class: Ref<Class<Doc>>, _id: Ref<Doc>, query: AnyLayout | null, attributes: AnyLayout): Promise<void>;

Parameters

List of parameters
Parameter Type Description
ctx TxContext
_class Ref<Class<Doc>>
_id Ref<Doc>
query AnyLayout | null
attributes AnyLayout

Returns:

Promise<void>

updateDocument

Perform update of document attributes

Signature:

updateDocument<T extends Doc>(doc: T, query: AnyLayout | null, attributes: AnyLayout): T;

Parameters

List of parameters
Parameter Type Description
doc T document to update
query AnyLayout | null define a embedded document query.
attributes AnyLayout new attribute values

Returns:

T