Skip to content

Commit 0b6ce0e

Browse files
committed
FEAT: Se agrego una nueva router para hacer patch a las queries.
1 parent fda5469 commit 0b6ce0e

1 file changed

Lines changed: 24 additions & 34 deletions

File tree

bi-queries/index.ts

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,35 @@ import { Microservice } from '@andes/bootstrap';
22
import * as mongoose from 'mongoose';
33
import { execQueryStream, execQueryToExport, execQueryToDelete, buildPipeline, execQueryToCreateTable, execQuery } from './controller/queries.controller';
44
import { csvTransform } from './controller/csv-stream';
5-
65
const MONGO_HOST = process.env.MONGO_HOST || 'mongodb://localhost:27017/andes';
76
mongoose.connect(MONGO_HOST);
8-
97
require('./schemas/query');
108
require('./schemas/query_mapping');
11-
129
const pkg = require('./package.json');
1310
const ms = new Microservice(pkg);
14-
1511
const router = ms.router();
16-
1712
router.get('/queries', async (req, res, next) => {
13+
console.log("LLEGO ACA");
1814
const Query = mongoose.model('queries');
1915
const activas = { 'inactiva.estado': { $ne: true } };
2016
const query = {...req.query, ...activas};
2117
const queries = await Query.find(query);
2218
return res.json(queries);
2319
});
2420

21+
2522
router.get('/queries/:id', async (req, res, next) => {
2623
const Query = mongoose.model('queries');
2724
const queries = await Query.findById(req.params.id);
2825
return res.json(queries);
2926
});
30-
3127
router.get('/queries/:id/plain', async (req, res, next) => {
3228
const Query = mongoose.model('queries');
3329
const queries: any = await Query.findOne({ nombre: req.params.id });
3430
const params = req.query;
3531
const fields = req.query.fields;
3632
delete req.query.fields;
3733
// const mapping = req.body.mapping || [];
38-
3934
try {
4035
const stream = execQueryStream(queries, params, [], fields);
4136
stream.pipe(csvTransform()).pipe(res);
@@ -46,7 +41,6 @@ router.get('/queries/:id/plain', async (req, res, next) => {
4641
res.status(400).json({ error: e.message });
4742
}
4843
});
49-
5044
// Retorna los resultados de la consulta en formato json
5145
router.get('/queries/:id/json', async (req, res, next) => {
5246
const Query = mongoose.model('queries');
@@ -61,14 +55,12 @@ router.get('/queries/:id/json', async (req, res, next) => {
6155
res.status(400).json({ error: e.message });
6256
}
6357
});
64-
6558
router.get('/queries/:id/create-table', async (req, res, next) => {
6659
const Query = mongoose.model('queries');
6760
const queries: any = await Query.findOne({ nombre: req.params.id });
6861
const params = req.query;
6962
const fields = req.query.fields;
7063
delete req.query.fields;
71-
7264
try {
7365
const stream = await execQueryToCreateTable(queries, params, [], fields);
7466
let modelKey = {};
@@ -89,7 +81,6 @@ router.get('/queries/:id/create-table', async (req, res, next) => {
8981
res.status(400).json({ error: e.message });
9082
}
9183
});
92-
9384
router.get('/queries/:id/pipeline', async (req, res, next) => {
9485
const Query = mongoose.model('queries');
9586
const queries: any = await Query.findOne({ nombre: req.params.id });
@@ -104,7 +95,6 @@ router.get('/queries/:id/pipeline', async (req, res, next) => {
10495
res.status(400).json({ error: e.message });
10596
}
10697
});
107-
10898
router.get('/queries/:id/csv', async (req, res, next) => {
10999
const Query = mongoose.model('queries');
110100
const queries: any = await Query.findOne({ nombre: req.params.id });
@@ -123,14 +113,12 @@ router.get('/queries/:id/csv', async (req, res, next) => {
123113
res.status(400).json({ error: e.message });
124114
}
125115
});
126-
127116
router.post('/queries/:id/csv', async (req, res, next) => {
128117
const Query = mongoose.model('queries');
129118
const queries: any = await Query.findOne({ nombre: req.params.id });
130119
const params = req.body.params;
131120
const mapping = req.body.mapping || [];
132121
const fields = req.body.fields;
133-
134122
try {
135123
const stream = execQueryStream(queries, params, mapping, fields);
136124
res.set('Content-Type', 'text/csv');
@@ -143,17 +131,14 @@ router.post('/queries/:id/csv', async (req, res, next) => {
143131
res.status(400).json({ error: e.message });
144132
}
145133
});
146-
147134
router.post('/queries/:id/export', async (req, res, next) => {
148135
const Query = mongoose.model('queries');
149136
const queries: any = await Query.findOne({ nombre: req.params.id });
150137
const params = req.body.params;
151138
const mapping = req.body.mapping || [];
152139
const fields = req.body.fields;
153-
154140
try {
155141
const stream = await execQueryToExport(queries, params, mapping, fields);
156-
157142
stream.on('data', () => { });
158143
stream.on('end', () => {
159144
res.json({ status: 'OK' });
@@ -165,27 +150,32 @@ router.post('/queries/:id/export', async (req, res, next) => {
165150
res.status(400).json({ error: e.message });
166151
}
167152
});
153+
router.patch('/queries/:id', async (req, res, next) => {
154+
try {
155+
const Query = mongoose.model('queries');
156+
const id = req.params.id;
157+
const data = req.body;
158+
159+
const query = await Query.findByIdAndUpdate(id, {
160+
$set: {
161+
...(data.nombre && { nombre: data.nombre }),
162+
...(data.descripcion && { descripcion: data.descripcion }),
163+
...(data['inactiva.estado'] !== undefined && { 'inactiva.estado': data['inactiva.estado'] }),
164+
...(data.desdeAndes !== undefined && { desdeAndes: data.desdeAndes })
165+
}
166+
}, { new: true });
168167

169-
router.post('/queries/:id/delete', async (req, res, next) => {
170-
const Query = mongoose.model('queries');
171-
const queries: any = await Query.findOne({ nombre: req.params.id });
172-
const params = req.body.params;
173-
const mapping = req.body.mapping || [];
174-
const fields = req.body.fields;
168+
if (!query) {
169+
return res.status(404).json({ message: 'Query no encontrada' });
170+
}
175171

176-
try {
177-
const stream = await execQueryToDelete(queries, params, mapping, fields);
178-
stream.on('data', () => { });
179-
stream.on('end', () => {
180-
res.json({ status: 'OK' });
181-
});
182-
stream.on('error', (e) => {
183-
res.status(400).json({ e });
184-
});
172+
return res.json(query);
185173
} catch (e) {
186-
res.status(400).json({ error: e.message });
174+
console.error(e);
175+
return res.status(500).json({ error: e.message });
187176
}
188177
});
189178

179+
190180
ms.add(router);
191-
ms.start();
181+
ms.start();

0 commit comments

Comments
 (0)