Skip to content

Commit e4589d5

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

File tree

1 file changed

+23
-34
lines changed

1 file changed

+23
-34
lines changed

bi-queries/index.ts

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@ 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) => {
1813
const Query = mongoose.model('queries');
1914
const activas = { 'inactiva.estado': { $ne: true } };
@@ -22,20 +17,19 @@ router.get('/queries', async (req, res, next) => {
2217
return res.json(queries);
2318
});
2419

20+
2521
router.get('/queries/:id', async (req, res, next) => {
2622
const Query = mongoose.model('queries');
2723
const queries = await Query.findById(req.params.id);
2824
return res.json(queries);
2925
});
30-
3126
router.get('/queries/:id/plain', async (req, res, next) => {
3227
const Query = mongoose.model('queries');
3328
const queries: any = await Query.findOne({ nombre: req.params.id });
3429
const params = req.query;
3530
const fields = req.query.fields;
3631
delete req.query.fields;
3732
// const mapping = req.body.mapping || [];
38-
3933
try {
4034
const stream = execQueryStream(queries, params, [], fields);
4135
stream.pipe(csvTransform()).pipe(res);
@@ -46,7 +40,6 @@ router.get('/queries/:id/plain', async (req, res, next) => {
4640
res.status(400).json({ error: e.message });
4741
}
4842
});
49-
5043
// Retorna los resultados de la consulta en formato json
5144
router.get('/queries/:id/json', async (req, res, next) => {
5245
const Query = mongoose.model('queries');
@@ -61,14 +54,12 @@ router.get('/queries/:id/json', async (req, res, next) => {
6154
res.status(400).json({ error: e.message });
6255
}
6356
});
64-
6557
router.get('/queries/:id/create-table', async (req, res, next) => {
6658
const Query = mongoose.model('queries');
6759
const queries: any = await Query.findOne({ nombre: req.params.id });
6860
const params = req.query;
6961
const fields = req.query.fields;
7062
delete req.query.fields;
71-
7263
try {
7364
const stream = await execQueryToCreateTable(queries, params, [], fields);
7465
let modelKey = {};
@@ -89,7 +80,6 @@ router.get('/queries/:id/create-table', async (req, res, next) => {
8980
res.status(400).json({ error: e.message });
9081
}
9182
});
92-
9383
router.get('/queries/:id/pipeline', async (req, res, next) => {
9484
const Query = mongoose.model('queries');
9585
const queries: any = await Query.findOne({ nombre: req.params.id });
@@ -104,7 +94,6 @@ router.get('/queries/:id/pipeline', async (req, res, next) => {
10494
res.status(400).json({ error: e.message });
10595
}
10696
});
107-
10897
router.get('/queries/:id/csv', async (req, res, next) => {
10998
const Query = mongoose.model('queries');
11099
const queries: any = await Query.findOne({ nombre: req.params.id });
@@ -123,14 +112,12 @@ router.get('/queries/:id/csv', async (req, res, next) => {
123112
res.status(400).json({ error: e.message });
124113
}
125114
});
126-
127115
router.post('/queries/:id/csv', async (req, res, next) => {
128116
const Query = mongoose.model('queries');
129117
const queries: any = await Query.findOne({ nombre: req.params.id });
130118
const params = req.body.params;
131119
const mapping = req.body.mapping || [];
132120
const fields = req.body.fields;
133-
134121
try {
135122
const stream = execQueryStream(queries, params, mapping, fields);
136123
res.set('Content-Type', 'text/csv');
@@ -143,17 +130,14 @@ router.post('/queries/:id/csv', async (req, res, next) => {
143130
res.status(400).json({ error: e.message });
144131
}
145132
});
146-
147133
router.post('/queries/:id/export', async (req, res, next) => {
148134
const Query = mongoose.model('queries');
149135
const queries: any = await Query.findOne({ nombre: req.params.id });
150136
const params = req.body.params;
151137
const mapping = req.body.mapping || [];
152138
const fields = req.body.fields;
153-
154139
try {
155140
const stream = await execQueryToExport(queries, params, mapping, fields);
156-
157141
stream.on('data', () => { });
158142
stream.on('end', () => {
159143
res.json({ status: 'OK' });
@@ -165,27 +149,32 @@ router.post('/queries/:id/export', async (req, res, next) => {
165149
res.status(400).json({ error: e.message });
166150
}
167151
});
152+
router.patch('/queries/:id', async (req, res, next) => {
153+
try {
154+
const Query = mongoose.model('queries');
155+
const id = req.params.id;
156+
const data = req.body;
157+
158+
const query = await Query.findByIdAndUpdate(id, {
159+
$set: {
160+
...(data.nombre && { nombre: data.nombre }),
161+
...(data.descripcion && { descripcion: data.descripcion }),
162+
...(data['inactiva.estado'] !== undefined && { 'inactiva.estado': data['inactiva.estado'] }),
163+
...(data.desdeAndes !== undefined && { desdeAndes: data.desdeAndes })
164+
}
165+
}, { new: true });
168166

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;
167+
if (!query) {
168+
return res.status(404).json({ message: 'Query no encontrada' });
169+
}
175170

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-
});
171+
return res.json(query);
185172
} catch (e) {
186-
res.status(400).json({ error: e.message });
173+
console.error(e);
174+
return res.status(500).json({ error: e.message });
187175
}
188176
});
189177

178+
190179
ms.add(router);
191-
ms.start();
180+
ms.start();

0 commit comments

Comments
 (0)