@@ -2,40 +2,35 @@ 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 ) => {
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+
2522router . 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-
3127router . 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
5145router . 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-
6558router . 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-
9384router . 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-
10898router . 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-
127116router . 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-
147134router . 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+
190180ms . add ( router ) ;
191- ms . start ( ) ;
181+ ms . start ( ) ;
0 commit comments