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
Signature:
as<T extends Doc>(doc: Doc, mixin: Ref<Mixin<T>>): T;
Parameters
Parameter | Type | Description |
---|---|---|
doc | Doc | |
mixin | Ref<Mixin |
Returns:
T
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>> | null;
Parameters
Parameter | Type | Description |
---|---|---|
type | Type |
Returns:
attributeKey
Signature:
protected attributeKey(clazz: Classifier<Obj>, key: string): string;
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
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
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
Parameter | Type | Description |
---|---|---|
_class | Ref<Class |
|
values | Omit |
|
_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
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
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
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
Parameter | Type | Description |
---|---|---|
clazz | Ref<Class<Doc>> | |
query | AnyLayout | |
limit | number |
Returns:
Doc[]
generateId
Signature:
generateId(): Ref<Doc>;
Returns:
get
Signature:
get(id: Ref<Doc>): Doc;
Parameters
Parameter | Type | Description |
---|---|---|
id | Ref<Doc> |
Returns:
getAllAttributes
Signature:
getAllAttributes(_class: Ref<Class<Obj>>): [string, Attribute][];
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> |
Returns:
[string, Attribute][]
getClass
Signature:
getClass(_class: Ref<Class<Doc>>): Ref<Class<Doc>>;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Doc>> |
Returns:
getClassHierarchy
Signature:
getClassHierarchy(cls: Ref<Class<Obj>>, top?: Ref<Class<Obj>>): Ref<Class<Obj>>[];
Parameters
Parameter | Type | Description |
---|---|---|
cls | Ref<Class<Obj>> | |
top | Ref<Class<Obj>> |
Returns:
getDomain
Signature:
getDomain(id: Ref<Class<Doc>>): string;
Parameters
Parameter | Type | Description |
---|---|---|
id | Ref<Class<Doc>> |
Returns:
string
getPrimaryKey
Signature:
getPrimaryKey(_class: Ref<Class<Obj>>): string | null;
Parameters
Parameter | Type | Description |
---|---|---|
_class | Ref<Class<Obj>> |
Returns:
string | null
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: Doc, _class: Ref<Mixin<Doc>>): boolean;
Parameters
Parameter | Type | Description |
---|---|---|
obj | Doc | |
_class | Ref<Mixin<Doc>> |
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(_class: Ref<Class<Doc>>, doc: Doc, query: AnyLayout): boolean;
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
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
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
Parameter | Type | Description |
---|---|---|
_class | Ref<Class |
|
_id | Ref<Doc> | |
layout | AnyLayout |
Returns:
T
objectsOfClass
Signature:
protected objectsOfClass(_class: Ref<Class<Doc>>): Doc[];
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
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
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
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
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
Parameter | Type | Description |
---|---|---|
doc | T | |
query | AnyLayout | null |
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>, query: AnyLayout | null, attributes: AnyLayout): Promise<void>;
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
Parameter | Type | Description |
---|---|---|
doc | T | document to update |
query | AnyLayout | null | define a embedded document query. |
attributes | AnyLayout | new attribute values |
Returns:
T