From 16f6846d89a627cf5fd7fc0605adc1ac269ba97b Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Mon, 14 Apr 2025 09:28:26 +0200 Subject: [PATCH] enhance: add endpoint to fetch query data by query store id --- .../admin/club/queryBuilderController.ts | 21 +++++++++++++++++++ src/routes/admin/club/queryBuilder.ts | 11 +++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/controller/admin/club/queryBuilderController.ts b/src/controller/admin/club/queryBuilderController.ts index ddf1e18..ab8d668 100644 --- a/src/controller/admin/club/queryBuilderController.ts +++ b/src/controller/admin/club/queryBuilderController.ts @@ -1,6 +1,7 @@ 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 @@ -43,3 +44,23 @@ export async function executeQuery(req: Request, res: Response): Promise { 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); +} diff --git a/src/routes/admin/club/queryBuilder.ts b/src/routes/admin/club/queryBuilder.ts index 5578b9d..29bcbc4 100644 --- a/src/routes/admin/club/queryBuilder.ts +++ b/src/routes/admin/club/queryBuilder.ts @@ -1,5 +1,10 @@ import express, { Request, Response } from "express"; -import { executeQuery, getAllTableMeta, getTableMetaByTablename } from "../../../controller/admin/club/queryBuilderController"; +import { + executeQuery, + executeQueryByStoreId, + getAllTableMeta, + getTableMetaByTablename, +} from "../../../controller/admin/club/queryBuilderController"; var router = express.Router({ mergeParams: true }); @@ -15,4 +20,8 @@ router.post("/query", async (req: Request, res: Response) => { await executeQuery(req, res); }); +router.post("/query/:storeId", async (req: Request, res: Response) => { + await executeQueryByStoreId(req, res); +}); + export default router;