jsm-core
Version:
Core library for JSM project
137 lines (136 loc) • 5.29 kB
TypeScript
/**
* @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;
}