UNPKG

jsm-core

Version:
137 lines (136 loc) 5.29 kB
/** * @description This is the base service class * @generator Jsm * @author dr. Salmi <reevosolutions@gmail.com> * @since 05-03-2024 07:06:13 */ import Joi from "joi"; import exceptions from "jsm-exceptions"; import { JsmLogger } from "jsm-logger"; import mongoose from "mongoose"; import { JsmCoreSdk } from "jsm-sdk"; /** * This is the base service class */ export declare class BaseService<Sdk extends JsmCoreSdk = JsmCoreSdk> { protected logger: JsmLogger; protected _sdk: Sdk; constructor(); /** * This method is used to log errors * @param {Function} method * @param {Error} error * @param {Jsm.Core.Security.AuthData} authData * @param {string} related_to * @param {any} scenario */ logError(method: Function, error: typeof exceptions.JsmException | Joi.ValidationError | Error, authData?: Jsm.Core.Security.AuthData | null, related_to?: string, scenario?: Jsm.Core.Library.ExecutionScenario.Scenario): void; /** * @description This method is used to log execution results * @param {Function} method * @param {Object} result * @param {Jsm.Core.Security.AuthData} auth_data * @param {any} scenario */ logExecutionResult(method: Function, result: any, auth_data?: Jsm.Core.Security.AuthData, scenario?: any, is_error?: boolean): Promise<void>; getPaginationOptions(count: number, page: number): { skip: number; take: number; }; /** * * @param {"asc" | "desc"} sort * - @default "desc" * @param {string} sort_by * - @default * - "created_at" if prefer_update_date = false * - "updated_at" if prefer_update_date = true * @param {boolean} prefer_update_date * - @default false * @returns */ getSortOptions(sort: "asc" | "desc", sort_by?: string, prefer_update_date?: boolean): { [key: string]: 1 | -1; }; getSelectFields<Q extends mongoose.Query<any[], any>>(q: Q, fields?: string | string[]): Q; analyzeMongodbQuery(q: mongoose.QueryWithFuzzySearch<any>): Promise<void>; get sdk(): Sdk; flattenUpdateObject(updateObj: Record<string, any>): Record<string, any>; /** * @description This method is used to get the internal authentication data * @author dr. Salmi <reevosolutions@gmail.com> * @since 23-05-2024 06:40:43 */ get internalAuthData(): { current: { service: { name: Jsm.Core.Utils.SystemStructure.TMicroService | string; is_external: boolean; }; }; }; /** * Update : generateSdkRequestConfigFromAuthData * @description used to port the authentication credentials between the services * @author dr. Salmi <reevosolutions@gmail.com> * @since 23-05-2024 06:39:42 */ generateSdkRequestConfigFromAuthData(authData: Jsm.Core.Security.AuthData, setInternalAuthData?: boolean): Jsm.Sdk.TRequestConfig | undefined; dispatchEvent<T = any>(eventName: string, payload: T): void; protected initScenario<T extends { [Key: string]: any; }, F extends Function, Args extends Record<string, any> = {}>(logger: JsmLogger, method: F, args?: Args, authData?: Jsm.Core.Security.AuthData): ExcecutionScenario<T>; calculateTimePeriod(timePeriod: { granularity?: "minute" | "hour" | "day" | "week" | "month" | "quarter" | "year"; timezone?: string; } & ({ start: Date; end: Date; preset: "custom"; } | { preset: "today" | "yesterday" | "last_7_days" | "last_30_days" | "last_90_days" | "last_year"; })): { now: Date; startDate: Date; endDate: Date; granularity: "year" | "month" | "week" | "day" | "hour" | "minute" | "quarter"; timezone: string | undefined; preset: string | undefined; }; } export declare class ExcecutionScenario<T extends { [Key: string]: any; } = {}> implements Jsm.Core.Library.ExecutionScenario.Scenario<T> { _class: string; method: string; args: Record<string, any>; authData: Jsm.Core.Security.AuthData; execution: T; private timer; private logger; constructor(_class: string, logger: JsmLogger, method: string, args?: Record<string, any>, authData?: Jsm.Core.Security.AuthData | null); set<K extends string | { [Key: string]: any; } = string>(key: K, value?: K extends string ? any : never): this; get(key: string): any; progress(logger: JsmLogger, progress: number, message: string): void; /** * @description This method is used to log execution results * @param {Function} method * @param {Object} result * @param {Jsm.Core.Security.AuthData} auth_data * @param {any} scenario */ log(purpose?: "error" | "success" | "warn"): Promise<void>; end(purpose?: "error" | "success" | "warn"): Promise<void>; step(logger: JsmLogger, data: any): Promise<void>; /** * This method is used to log errors * @param {Function} method * @param {Error} error * @param {Jsm.Core.Security.AuthData} authData * @param {string} related_to * @param {any} scenario */ error(error: typeof exceptions.JsmException | Joi.ValidationError | Error): void; }