UNPKG

@themost/data

Version:

MOST Web Framework Codename Blueshift - Data module

345 lines (290 loc) 9.52 kB
// MOST Web Framework 2.0 Codename Blueshift BSD-3-Clause license Copyright (c) 2017-2022, THEMOST LP All rights reserved import {DataModel} from "./data-model"; import { ConfigurationBase, SequentialEventEmitter, DataAdapterBase, DataAdapterMigration, DataContextBase, ContextUserBase, ApplicationBase } from "@themost/common"; import {DataAssociationMappingBase, DataFieldBase} from '@themost/common'; import {Observable} from 'rxjs'; export declare function DataAdapterCallback(err?:Error, result?:any): void; export declare class DataAdapter implements DataAdapterBase { /** * * @param options */ constructor(options:any); openAsync(): Promise<void>; closeAsync(): Promise<void>; executeAsync(query: any, values: any): Promise<any>; selectIdentityAsync(entity: string, attribute: string): Promise<any>; executeInTransactionAsync(func: () => Promise<void>): Promise<void>; migrate(obj: DataAdapterMigration, callback: (err: Error, result?: any) => void): void; migrateAsync(obj: DataAdapterMigration): Promise<any>; /** * */ rawConnection:any; /** * */ options:any; /** * * @param {(err?: Error) => void} callback */ open(callback:(err?:Error) => void): void; /** * * @param {(err?: Error) => void} callback */ close(callback:(err?:Error) => void): void; /** * * @param query * @param {Array<any>} values * @param {(err?: Error, result?: any) => void} callback */ execute(query:any, values:Array<any>, callback:(err?:Error, result?:any) => void): void; /** * * @param {string} entity * @param {string} attribute * @param {(err?: Error, result?: any) => void} callback */ selectIdentity(entity:string, attribute:string , callback?:(err?:Error, result?:any) => void): void; /** * * @param {Function} fn * @param {(err?: Error) => void} callback */ executeInTransaction(fn:Function, callback:(err?:Error) => void): void; /** * * @param {string} name * @param query * @param {(err?: Error) => void} callback */ createView(name:string, query:any, callback:(err?:Error) => void): void; } export declare interface ContextUser extends ContextUserBase { } export declare abstract class DataContext extends SequentialEventEmitter { /** * Optional property representing the use of the current context. * * @type {ContextUser} */ user?: ContextUser; /** * Optional property representing the interactive user of the current context. * The interactive user is the original user who initiated the current context. */ interactiveUser?: ContextUser; /** * An observable stream that emits user-related data. * * @type {Observable<any>} */ user$: Observable<any>; /** * An observable stream that emits interactive user-related data. * * @type {Observable} */ interactiveUser$: Observable<any>; /** * An observable stream that emits anonymous user-related data. * * @type {Observable} */ anonymousUser$: Observable<any>; /** * The database adapter instance used for interacting with the database. * This property provides the necessary methods and properties to perform * database operations such as querying, inserting, updating, and deleting records. */ readonly db: DataAdapterBase; /** * Returns an instance of the data model with the specified name. * @param {*} name */ abstract model(name:any): DataModel; /** * Returns the configuration service of the parent application. * @returns {ConfigurationBase} */ abstract getConfiguration(): ConfigurationBase; /** * Finalizes the current context and releases all resources. * @param {(err?: Error) => void} callback */ finalize(callback?:(err?:Error) => void): void; /** * Finalizes the current context and releases all resources. * @returns {Promise<void>} */ finalizeAsync(): Promise<void>; /** * Executes the specified function within a transaction. * A transaction is a set of operations that are executed as a single unit of work. * @param func */ executeInTransactionAsync(func: () => Promise<void>): Promise<void>; /** * An alternative method to switch the current user of the context. * @param {ContextUser} user */ setUser(user?: ContextUser): void; /** * An alternative method to switch the interactive user of the context. * @param {ContextUser} user */ setInteractiveUser(user?: ContextUser): void; /** * Sets the application of the current context. The application is the parent application that created the current context. * @param {ApplicationBase} application */ setApplication(application: ApplicationBase | any): void; /** * Returns the application of the current context. * */ getApplication(): ApplicationBase; public getUser(): Promise<any>; public getAnonymousUser(): Promise<any>; public getInteractiveUser(): Promise<any>; } export declare class DataContextEmitter { ensureContext:void; } export declare interface DataModelPrivilege { type: 'self' | 'global' | 'parent' | 'item'; mask: number; account?: string; filter?: string; scope?: string[]; [k: string]: unknown; } export declare class DataAssociationMapping implements DataAssociationMappingBase { constructor(obj?: any); associationAdapter?: string; parentModel?: string; childModel?: string; parentField?: string; childField?: string; refersTo?: string; associationObjectField?: string; associationValueField?: string; cascade?: 'delete' | 'none'; associationType?: 'association' | 'junction'; select?: Array<string>; privileges?: Array<DataModelPrivilege>; [k: string]: unknown; } export declare interface QueryPipelineLookup { from: string; localField?: string; foreignField?: string; let?: string; pipeline?: { $match: { $expr: any } }[], as?: string } export declare interface QueryPipelineProject { [name: string]: string | (1 | 0) | any; } export declare interface QueryPipelineStage { $lookup?: QueryPipelineLookup; $project?: QueryPipelineProject; } export declare class DataField implements DataFieldBase { name: string; property?: string; title?: string; nullable?: boolean; type?: string; primary?: boolean; many?: boolean; model?: string; value?: string; calculation?: string; readonly?: boolean; editable?: boolean; insertable?: boolean; mapping?: DataAssociationMapping; expandable?: boolean; nested?: boolean; description?: string; help?: string; validation?: any; virtual?: boolean; multiplicity?: 'ZeroOrOne' | 'Many' | 'One' | 'Unknown'; indexed?: boolean; size?: number; query?: QueryPipelineStage[]; [k: string]: unknown; } export declare class DataEventArgs { model: DataModel; target: any; state?: number; emitter?: any; query?: any; previous?: any; throwError?: boolean; result?: unknown } export declare interface BeforeSaveEventListener { beforeSave(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface AfterSaveEventListener { afterSave(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface BeforeRemoveEventListener { beforeRemove(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface AfterRemoveEventListener { afterRemove(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface BeforeUpgradeEventListener { beforeUpgrade(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface AfterUpgradeEventListener { afterUpgrade(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface BeforeExecuteEventListener { beforeExecute(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare interface AfterExecuteEventListener { afterExecute(event: DataEventArgs, callback: (err?: Error) => void): void; } export declare class TypeParser { static parseInteger(val: any): number; static parseCounter(val: any): number; static parseFloat(val: any): number; static parseNumber(val: any): number; static parseDateTime(val: any): Date; static parseDate(val: any): Date; static parseBoolean(val: any): boolean; static parseText(val: any): string; static hasParser(type: string): (value: any) => any; } declare interface PrivilegeTypeEnum { readonly Self: string; readonly Parent: string; readonly Item: string; readonly Global: string; } export declare const PrivilegeType: PrivilegeTypeEnum; declare interface DataObjectStateEnum { readonly Insert: number; readonly Update: number; readonly Delete: number; } export declare const DataObjectState: DataObjectStateEnum; declare interface DataCachingTypeEnum { readonly None: string; readonly Always: string; readonly Conditional: string; } export declare const DataCachingType: DataCachingTypeEnum; export declare type parsers = TypeParser;