import { GetVisualizationsArgs } from "../../utils/types" import { Knex } from "knex"; import { CORE, DEFAULT_LIMIT, VISUALIZATION, ID, TENANT_ID, INSTANCE_ID, DEFAULT_SKIP } from "../../utils/globals"; import getDatabaseClient from "../../database/knexClient" import {OrderBy} from "../../utils/enum" // const sharedLib = require('portal-cf-shared-lib'); // const cfLogger:any = sharedLib.cfLogger; // const logger = cfLogger.initLogger('portal-cf-shared-database-client/dao/core/visualization.ts'); class VisualizationDAO{ async getVisualizations({trx, params = ['*'], filter, skip, top, instanceId, orderById = OrderBy.Ascending , zoneId}:GetVisualizationsArgs) { try { let nodes = []; let totalCount: any = 0; // const dbClient:Knex = await getDatabaseClient(CORE); if (filter && filter.vizFilterClause && filter.vizFilterArray) { nodes = await trx .select(params) .from(VISUALIZATION) .where(TENANT_ID,zoneId) .where(INSTANCE_ID, instanceId) .whereRaw(`${filter.vizFilterClause}`, filter.vizFilterArray) .orderBy(ID, orderById) .offset(skip || DEFAULT_SKIP) .limit(top || DEFAULT_LIMIT); } else { nodes = await trx .select(params) .from(VISUALIZATION) .where(TENANT_ID,zoneId) .where(INSTANCE_ID, instanceId) .orderBy(ID, orderById) .offset(skip || DEFAULT_SKIP) .limit(top || DEFAULT_LIMIT); } totalCount = await trx .count(ID) .from(VISUALIZATION) .where(TENANT_ID,zoneId) .where(INSTANCE_ID, instanceId); totalCount = totalCount[0]?.count; return {nodes, totalCount}; } catch (error) { // logger.logRequestMessage('error', "Get visualizations DB call failed:\n " + error); throw error; } } } export default new VisualizationDAO()