@@ -2,18 +2,13 @@ import { Microservice } from '@andes/bootstrap';
22import * as mongoose from 'mongoose' ;
33import { execQueryStream , execQueryToExport , execQueryToDelete , buildPipeline , execQueryToCreateTable , execQuery } from './controller/queries.controller' ;
44import { csvTransform } from './controller/csv-stream' ;
5-
65const MONGO_HOST = process . env . MONGO_HOST || 'mongodb://localhost:27017/andes' ;
76mongoose . connect ( MONGO_HOST ) ;
8-
97require ( './schemas/query' ) ;
108require ( './schemas/query_mapping' ) ;
11-
129const pkg = require ( './package.json' ) ;
1310const ms = new Microservice ( pkg ) ;
14-
1511const router = ms . router ( ) ;
16-
1712router . 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+
2521router . 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-
3126router . 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
5144router . 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-
6557router . 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-
9383router . 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-
10897router . 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-
127115router . 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-
147133router . 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+
190179ms . add ( router ) ;
191- ms . start ( ) ;
180+ ms . start ( ) ;
0 commit comments