in nodejs/datastax-v4/ecs-sigv4/app/query-api/query-api-server.js [50:105]
async function runQueryApiServer() {
try {
// Check that table exists
const result = await cassandraClient.execute(
`SELECT status FROM system_schema_mcs.tables
WHERE keyspace_name='${keyspace}' AND table_name='${table}'`
)
const status = result.first()['status']
log.info(`${keyspace}.${table} status: ${status}`)
if (status !=='ACTIVE')
throw `${keyspace}.${table} is not ACTIVE`
// Prepare server routing
const app = express()
app.use(express.json())
app.use(express.urlencoded({extended: true}))
app.get('/countries', (req, res) => {
const query = `SELECT * FROM ${keyspace}.${table}`;
let pretty = (typeof req.query.pretty !== 'undefined');
executeQuery(query, res, pretty)
})
app.get('/countries/:id', (req, res) => {
var id = req.params.id
const query = `SELECT * FROM ${keyspace}.${table} WHERE id='${id}'`;
let pretty = (typeof req.query.pretty !== 'undefined');
executeQuery(query, res, pretty)
})
app.get('/ping', (req, res) => {
res.send("ok\n")
})
log.info('Routing configured')
// Start server
const host = '0.0.0.0';
const server = app.listen(port, host);
log.info(`Service running on http://${host}:${port}`)
// Set up SIGTERM processing
process.on('SIGTERM', () => {
log.info('SIGTERM signal received.');
log.info('Closing http server.');
server.close(() => {
log.info('Http server closed.');
cassandraClient.shutdown(() => {
log.info('Cassandra client closed.');
process.exit(0);
})
})
})
}
catch (err) {
log.error(err)
if (cassandraClient)
await cassandraClient.shutdown()
}
}