import { Request, Response } from "express"; import DynamicQueryBuilder from "../../../helpers/dynamicQueryBuilder"; import { dataSource } from "../../../data-source"; import QueryStoreService from "../../../service/configuration/queryStoreService"; /** * @description get all table metas * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getAllTableMeta(req: Request, res: Response): Promise { let tableMetas = DynamicQueryBuilder.getAllTableMeta(); res.json(tableMetas); } /** * @description get meta by tablename * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getTableMetaByTablename(req: Request, res: Response): Promise { const tablename = req.params.tablename; let tableMeta = DynamicQueryBuilder.getTableMeta(tablename); res.json(tableMeta); } /** * @description execute Query * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function executeQuery(req: Request, res: Response): Promise { let offset = parseInt((req.query.offset as string) ?? "0"); let count = parseInt((req.query.count as string) ?? "25"); let noLimit = req.query.noLimit === "true"; const query = req.body.query; let result = await DynamicQueryBuilder.executeQuery({ query, offset, count, noLimit }); res.json(result); } /** * @description execute Query by StoreId * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function executeQueryByStoreId(req: Request, res: Response): Promise { let offset = parseInt((req.query.offset as string) ?? "0"); let count = parseInt((req.query.count as string) ?? "25"); let noLimit = req.query.noLimit === "true"; const storeId = req.params.storeId; let queryStore = await QueryStoreService.getById(storeId); let query = queryStore.query.startsWith("{") ? JSON.parse(queryStore.query) : queryStore.query; let result = await DynamicQueryBuilder.executeQuery({ query, offset, count, noLimit }); res.json(result); }