const express = require('express');
const app = express()
app.use(express.json());
var Airtable = require('airtable');
var base = new Airtable({apiKey: process.env.AIRTABLE_API_KEY}).base(process.env.PLANETS_BASE);
app.listen(3000, () => console.log('Example app listening on port 3000!'))
app.get('/', (req, res) => {
var resp = '';
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint de la prueba de la DB'; // displayed response
base('CountrieTable').select({
maxRecords: 1,
filterByFormula: 'AND({Country} = "Argentina",{Attribute}="Poblacion")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
resp += 'La ' + record.get('Attribute')+' de '+ record.get('Country')+ ' es '+record.get('Value');
console.log('Retrieved', record.get('Value'));
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
})
app.post('/', function (req, res) {
console.log(req);
let action = req.body.queryResult.action;
console.log(action);
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint de getCountryAttribute '; // displayed response
if(action === 'getCountryAttribute'){
let planetName = req.body.queryResult.parameters.country;
let attributeName = req.body.queryResult.parameters.atributes;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published *****'; // displayed response
base('CountrieTable').select({
maxRecords: 1,
filterByFormula: 'AND({Country} = "'+planetName+'",{Attribute}="'+attributeName+'")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Value'));
responseJson.fulfillmentText = record.get('Value');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
console.log(responseJson);
res.send(responseJson);
});
}
else if(action === 'changedAttribute'){
//let planetName = req.body.queryResult.parameters.country;
let attributeName = req.body.queryResult.parameters.atributes;
let contexts = req.body.queryResult.outputContexts;
console.log(contexts);
var item = contexts.find(item => item.name.endsWith('/contexts/user-set-country'));
var planetName = item.parameters.country;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published de changedAttribute'; // displayed response
base('CountrieTable').select({
maxRecords: 1,
filterByFormula: 'AND({Country} = "'+planetName+'",{Attribute}="'+attributeName+'")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Value'));
responseJson.fulfillmentText = record.get('Value');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
else if(action === 'changedCountry'){
//let planetName = req.body.queryResult.parameters.country;
let attributeName = req.body.queryResult.parameters.atributes;
let contexts = req.body.queryResult.outputContexts;
console.log(contexts);
var item = contexts.find(item => item.name.endsWith('/contexts/user-set-country'));
var planetName = item.parameters.country;
attributeName = item.parameters.atributes;
var request = require("request");
let responseJson = {};
responseJson.fulfillmentText = 'This is an endpoint published de changedAttribute'; // displayed response
base('CountrieTable').select({
maxRecords: 1,
filterByFormula: 'AND({Country} = "'+planetName+'",{Attribute}="'+attributeName+'")',
}).eachPage(function page(records, fetchNextPage) {
records.forEach(function(record) {
console.log('Retrieved', record.get('Value'));
responseJson.fulfillmentText = record.get('Value');
res.json(responseJson);
});
fetchNextPage();
}, function done(err) {
if (err) { console.error(err); return; }
res.send(resp);
});
}
})