From e5ff02f12f423b94aeb2bd616f323094c94b68fb Mon Sep 17 00:00:00 2001 From: nicolasarana <90768149+nicolasarana@users.noreply.github.com> Date: Thu, 10 Apr 2025 12:39:43 -0300 Subject: [PATCH 1/2] FEAT: Se agrego una nueva router para hacer patch a las queries. --- bi-queries/index.ts | 48 ++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/bi-queries/index.ts b/bi-queries/index.ts index 5414144..b99c489 100644 --- a/bi-queries/index.ts +++ b/bi-queries/index.ts @@ -2,18 +2,13 @@ import { Microservice } from '@andes/bootstrap'; import * as mongoose from 'mongoose'; import { execQueryStream, execQueryToExport, execQueryToDelete, buildPipeline, execQueryToCreateTable, execQuery } from './controller/queries.controller'; import { csvTransform } from './controller/csv-stream'; - const MONGO_HOST = process.env.MONGO_HOST || 'mongodb://localhost:27017/andes'; mongoose.connect(MONGO_HOST); - require('./schemas/query'); require('./schemas/query_mapping'); - const pkg = require('./package.json'); const ms = new Microservice(pkg); - const router = ms.router(); - router.get('/queries', async (req, res, next) => { const Query = mongoose.model('queries'); const activas = { 'inactiva.estado': { $ne: true } }; @@ -22,12 +17,12 @@ router.get('/queries', async (req, res, next) => { return res.json(queries); }); + router.get('/queries/:id', async (req, res, next) => { const Query = mongoose.model('queries'); const queries = await Query.findById(req.params.id); return res.json(queries); }); - router.get('/queries/:id/plain', async (req, res, next) => { const Query = mongoose.model('queries'); const queries: any = await Query.findOne({ nombre: req.params.id }); @@ -35,7 +30,6 @@ router.get('/queries/:id/plain', async (req, res, next) => { const fields = req.query.fields; delete req.query.fields; // const mapping = req.body.mapping || []; - try { const stream = execQueryStream(queries, params, [], fields); stream.pipe(csvTransform()).pipe(res); @@ -46,7 +40,6 @@ router.get('/queries/:id/plain', async (req, res, next) => { res.status(400).json({ error: e.message }); } }); - // Retorna los resultados de la consulta en formato json router.get('/queries/:id/json', async (req, res, next) => { const Query = mongoose.model('queries'); @@ -61,14 +54,12 @@ router.get('/queries/:id/json', async (req, res, next) => { res.status(400).json({ error: e.message }); } }); - router.get('/queries/:id/create-table', async (req, res, next) => { const Query = mongoose.model('queries'); const queries: any = await Query.findOne({ nombre: req.params.id }); const params = req.query; const fields = req.query.fields; delete req.query.fields; - try { const stream = await execQueryToCreateTable(queries, params, [], fields); let modelKey = {}; @@ -89,7 +80,6 @@ router.get('/queries/:id/create-table', async (req, res, next) => { res.status(400).json({ error: e.message }); } }); - router.get('/queries/:id/pipeline', async (req, res, next) => { const Query = mongoose.model('queries'); const queries: any = await Query.findOne({ nombre: req.params.id }); @@ -104,7 +94,6 @@ router.get('/queries/:id/pipeline', async (req, res, next) => { res.status(400).json({ error: e.message }); } }); - router.get('/queries/:id/csv', async (req, res, next) => { const Query = mongoose.model('queries'); const queries: any = await Query.findOne({ nombre: req.params.id }); @@ -123,14 +112,12 @@ router.get('/queries/:id/csv', async (req, res, next) => { res.status(400).json({ error: e.message }); } }); - router.post('/queries/:id/csv', async (req, res, next) => { const Query = mongoose.model('queries'); const queries: any = await Query.findOne({ nombre: req.params.id }); const params = req.body.params; const mapping = req.body.mapping || []; const fields = req.body.fields; - try { const stream = execQueryStream(queries, params, mapping, fields); res.set('Content-Type', 'text/csv'); @@ -143,17 +130,14 @@ router.post('/queries/:id/csv', async (req, res, next) => { res.status(400).json({ error: e.message }); } }); - router.post('/queries/:id/export', async (req, res, next) => { const Query = mongoose.model('queries'); const queries: any = await Query.findOne({ nombre: req.params.id }); const params = req.body.params; const mapping = req.body.mapping || []; const fields = req.body.fields; - try { const stream = await execQueryToExport(queries, params, mapping, fields); - stream.on('data', () => { }); stream.on('end', () => { res.json({ status: 'OK' }); @@ -187,5 +171,33 @@ router.post('/queries/:id/delete', async (req, res, next) => { } }); +router.patch('/queries/:id', async (req, res, next) => { + console.log(req.body); + try { + const Query = mongoose.model('queries'); + const id = req.params.id; + const data = req.body; + + const query = await Query.findByIdAndUpdate(id, { + $set: { + ...(data.nombre && { nombre: data.nombre }), + ...(data.descripcion && { descripcion: data.descripcion }), + ...(data['inactiva.estado'] !== undefined && { 'inactiva.estado': data['inactiva.estado'] }), + ...(data.desdeAndes !== undefined && { desdeAndes: data.desdeAndes }) + } + }, { new: true }); + + if (!query) { + return res.status(404).json({ message: 'Query no encontrada' }); + } + + return res.json(query); + } catch (e) { + console.error(e); + return res.status(500).json({ error: e.message }); + } +}); + + ms.add(router); -ms.start(); +ms.start(); \ No newline at end of file From a29a47d76efc6e03b5d981997b6acb259cdbc6b7 Mon Sep 17 00:00:00 2001 From: nicolasarana <90768149+nicolasarana@users.noreply.github.com> Date: Tue, 26 Aug 2025 09:20:01 -0300 Subject: [PATCH 2/2] =?UTF-8?q?style(andesMicroservices):"Limpieza=20de=20?= =?UTF-8?q?c=C3=B3digo"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bi-queries/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bi-queries/index.ts b/bi-queries/index.ts index b99c489..21a87b1 100644 --- a/bi-queries/index.ts +++ b/bi-queries/index.ts @@ -12,7 +12,7 @@ const router = ms.router(); router.get('/queries', async (req, res, next) => { const Query = mongoose.model('queries'); const activas = { 'inactiva.estado': { $ne: true } }; - const query = {...req.query, ...activas}; + const query = { ...req.query, ...activas }; const queries = await Query.find(query); return res.json(queries); }); @@ -172,7 +172,6 @@ router.post('/queries/:id/delete', async (req, res, next) => { }); router.patch('/queries/:id', async (req, res, next) => { - console.log(req.body); try { const Query = mongoose.model('queries'); const id = req.params.id; @@ -193,7 +192,6 @@ router.patch('/queries/:id', async (req, res, next) => { return res.json(query); } catch (e) { - console.error(e); return res.status(500).json({ error: e.message }); } });