CovidCode

node v14.20.1
version: 2.0.0
endpointsharetweet
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.COVID_BASE); app.listen(3000, () => console.log('Example app listening on port 3000!')) const done = (err, res, responseJson) => { if (err) { console.error(err); let responseJson2 = {}; responseJson2.fulfillmentText = err + "error"; res.send(responseJson2); return; } res.json(responseJson); console.log(responseJson); res.send(responseJson); } const getCasesByCountry = (req, res) => { let countryName = req.body.queryResult.parameters.country_name; let countryStatus = req.body.queryResult.parameters.country_status; let responseJson = {}; responseJson.fulfillmentText = 'Not Found'; base('CASES').select({ maxRecords: 1, filterByFormula: 'OR({COUNTRY_NAME} = "' + countryName + '",lower({COUNTRY_STATUS})="' + countryStatus + '")', }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { console.log('Retrieved', record.get('Value')); responseJson.fulfillmentText = 'The number of cases in ' + countryName + ' is ' + record.get('TOTAL_ACTIVE_CASES'); res.json(responseJson); }); fetchNextPage(); }, (err) => done(err, res, responseJson)); } const getDiagnostic = (req,res) => { let fever = req.body.queryResult.parameters.fever; let cough = req.body.queryResult.parameters.cough; let diarrhea = req.body.queryResult.parameters.diarrhea; console.log('1.1'); let responseJson = {}; responseJson.fulfillmentText = 'Not Found'; base('SYMPTOMS').select({ maxRecords: 1, filterByFormula: 'AND(lower({FEVER}) = "' + fever.toLowerCase() + '",lower({COUGH})="' + cough.toLowerCase() + '",lower({DIARRHEA})="'+ diarrhea.toLowerCase() + '")', }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { responseJson.fulfillmentText = record.get('DIAGNOSTIC'); res.json(responseJson); }); fetchNextPage(); }, (err) => done(err, res, responseJson)); } //should be working until here const getRequestStatus = (req, res) => { let bankName = req.body.queryResult.parameters.request_type; let responseJson = {}; responseJson.fulfillmentText = ''; base('REQUESTS').select({ maxRecords: 10, filterByFormula: 'LOWER({REQUEST_TYPE}) = lower("' + bankName + '")', }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { console.log('Retrieved', record.get('Value')); responseJson.fulfillmentText = responseJson.fulfillmentText + '\nThe status of ' + record.get('REQUEST_TYPE') + ' is ' + record.get('REQUEST_STATUS'); }); fetchNextPage(); }, (err) => done(err, res, responseJson)); } const getIban = (req, res) => { let contexts = req.body.queryResult.outputContexts; var item = contexts.find(item => item.name.endsWith('/contexts/bank-account-set')); let bankName = item.parameters.bank_name; let responseJson = {}; responseJson.fulfillmentText = "Not found "; base('BANKS').select({ maxRecords: 1, filterByFormula: 'LOWER({BANK_NAME}) = lower("' + bankName + '")', }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { console.log('Retrieved', record.get('Value')); responseJson.fulfillmentText = 'The IBAN of ' + bankName + ' is ' + record.get('BANK_IBAN'); res.json(responseJson); }); fetchNextPage(); }, (err) => done(err, res, responseJson)); } const completeTask = (req, res) => { let contexts = req.body.queryResult.outputContexts; var item = contexts.find(item => item.name.endsWith('/contexts/complete_task-followup')); let taskType = item.parameters.task_type; let id = 0; let mainRecord; let responseJson = {}; responseJson.fulfillmentText = "Not found"; // displayed response let table = base('TASKS'); table.select({ maxRecords: 1, filterByFormula: 'LOWER({TASK_TYPE}) = lower("' + taskType + '")', }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { id = record.get("ID"); mainRecord = record; responseJson.fulfillmentText = "Awesome, your task was marked as completed."; res.json(responseJson); }); fetchNextPage(); }, (err) => done(err, res, responseJson)); table.update([{ "id": mainRecord.id, "fields": { "TASK_COMPLETED": true } }], (err, record) => { if (err) { done(err, res, responseJson); } }); } //where the actions are configured 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 published to RunKit'; // displayed response if (action === 'getBankAccountAmount') { getBankAccountAmount(req, res); } else if (action === 'getRequestStatus') { getRequestStatus(req, res); } else if (action === 'changedBankAccountIntent') { getIban(req, res); } else if (action === "Complete_Task.Complete_Task-yes") { completeTask(req, res); } else if (action === "getCasesByCountry") { getCasesByCountry(req, res); } else if (action === "getDiagnostic") { getDiagnostic(req, res); } }) //How to test funcions const checkConnect = () => { console.log("test 1.1"); console.log("api: "+ process.env.AIRTABLE_API_KEY); console.log("covid: "+ process.env.COVID_BASE); base('SYMPTOMS').select({ maxRecords: 1, filterByFormula: '{SYMPTOM_ID}=1', }).eachPage(function page(records, fetchNextPage) { records.forEach(function(record) { console.log("response: "+ record.get('DIAGNOSTIC')); }); fetchNextPage(); }, (err) => console.log("FALHOU: "+err)); // }, (err) => done(err, res, responseJson)); }
Loading…

no comments

    sign in to comment