Backend: Add metrics & text index
Signed-off-by: Fred Boniface <fred@fjla.uk>
This commit is contained in:
parent
d381f85ad0
commit
20dbac3ebc
@ -5,6 +5,7 @@
|
||||
* Alerts box should not be clickable, bar should be.
|
||||
* Enable text search for `locationName` on find-code page.
|
||||
* Responsive text sizes for boards.
|
||||
* Build metrics page
|
||||
|
||||
### In Progress:
|
||||
|
||||
@ -20,11 +21,13 @@
|
||||
* Add Gitea Issue API
|
||||
* Issue page: Check for success and then redirect to /.
|
||||
* Add success test for Gitea Issue API and send the result onto the client.
|
||||
* DB Indexes:
|
||||
- "stations": 3ALPHA, STANOX, TIPLOC
|
||||
- "corpus": 3ALPHA, NLC
|
||||
|
||||
## Backend:
|
||||
|
||||
* DB Indexes:
|
||||
- "stations": 3ALPHA, STANOX, TIPLOC
|
||||
- "corpus": 3ALPHA, NLC, NLCDESC(TEXT)
|
||||
* DB Indexes:.
|
||||
- "corpus": NLCDESC(TEXT)
|
||||
* Rewrite sanitizing functions to remove external dependancy.
|
||||
* Undo changed to make everything an array - frontend code to handle this.
|
@ -18,7 +18,17 @@ async function getCorpus(req, res, next){
|
||||
}
|
||||
}
|
||||
|
||||
async function hits(req, res, next) {
|
||||
try {
|
||||
res.json(await list.hits())
|
||||
} catch (err) {
|
||||
console.error(`Controller Error`, err);
|
||||
next(err);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getStations,
|
||||
getCorpus
|
||||
getCorpus,
|
||||
hits
|
||||
}
|
@ -16,5 +16,6 @@ const listController = require('../controllers/list.controllers');
|
||||
|
||||
router.get('/stations', listController.getStations);
|
||||
router.get('/corpus', listController.getCorpus);
|
||||
router.get('/hits', listController.hits)
|
||||
|
||||
module.exports = router;
|
@ -78,19 +78,53 @@ async function query(collection, query){
|
||||
return (await qcursor.toArray());
|
||||
}
|
||||
|
||||
async function ensureIndex(col, field) {
|
||||
async function ensureIndex(col, field, text) {
|
||||
await client.connect();
|
||||
log.out(`dbAccess.ensureIndex: Creating index in collection ${col} for field ${field}`)
|
||||
let res = await db.createIndex(col, field);
|
||||
if (!text) {
|
||||
log.out(`dbAccess.ensureIndex: Creating index in collection ${col} for field ${field}`)
|
||||
db.createIndex(col, field);
|
||||
} else {
|
||||
log.out(`dbAccess.ensureIndex: Creating text index in collection ${col} for field ${field}`)
|
||||
let idx = {}
|
||||
idx[field] = "text";
|
||||
db.createIndex(col, idx);
|
||||
}
|
||||
log.out(`dbAccess.ensureIndex: Index created`);
|
||||
return;
|
||||
}
|
||||
|
||||
async function increment(target) {
|
||||
await client.connect();
|
||||
let col = db.collection("meta");
|
||||
let update = {}
|
||||
update[target] = 1
|
||||
col.updateOne({target: "ext_api"}, {$inc:update})
|
||||
return;
|
||||
}
|
||||
|
||||
async function createCount() {
|
||||
await client.connect();
|
||||
let col = db.collection("meta");
|
||||
var filter = {type: "count", target: "ext_api"};
|
||||
var update = {$set:{since: new Date, type: "count", target: "ext_api"}};
|
||||
var options = {upsert: true}; // If document isn't present will insert.
|
||||
try {
|
||||
var result = await col.updateOne(filter,update,options)
|
||||
log.out(`dbAccessServices.updateMeta: ${JSON.stringify(result)}`)
|
||||
log.out(`dbAccessServices.updateMeta: count meta added updated`)
|
||||
} catch (err) {
|
||||
log.out(`dbAccessServices.updateMeta: Unable to add count`)
|
||||
log.out(err)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
putCorpus,
|
||||
putStations,
|
||||
dropCollection,
|
||||
updateMeta,
|
||||
query,
|
||||
ensureIndex
|
||||
ensureIndex,
|
||||
increment,
|
||||
createCount
|
||||
}
|
@ -11,6 +11,7 @@ const log = require('../utils/log.utils'); // Log Helper
|
||||
const ldb = require('ldbs-json')
|
||||
const util = require('../utils/ldb.utils')
|
||||
const san = require('../utils/sanitizer.utils')
|
||||
const db = require('../services/dbAccess.services')
|
||||
|
||||
const ldbKey = process.env.OWL_LDB_KEY
|
||||
const ldbsvKey = process.env.OWL_LDB_SVKEY
|
||||
@ -22,6 +23,7 @@ async function get(body, id){
|
||||
var crs = obj[0]['3ALPHA'];
|
||||
log.out(`ldbService.get: Determined CRS for lookup to be: ${crs}`);
|
||||
var data = await arrDepBoard(crs);
|
||||
db.increment("ldbws") // Need to add creation of this document to the database. >> {type:"count",counting:"api_hit",target:"ldbws",since:"DATE"}
|
||||
} catch (err) {
|
||||
log.out(`ldbService.get: Error, Unable to find CRS: ${err}`)
|
||||
var data = {ERROR:'NOT_FOUND',description:'The entered station was not found. Please check and try again.'};
|
||||
|
@ -14,7 +14,14 @@ async function getCorpus(){
|
||||
return out;
|
||||
}
|
||||
|
||||
async function hits(){
|
||||
var out = await db.query("meta");
|
||||
log.out(`listServices.meta: fetched server meta`)
|
||||
return out;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getStations,
|
||||
getCorpus
|
||||
getCorpus,
|
||||
hits
|
||||
}
|
@ -29,6 +29,7 @@ async function init(){
|
||||
}
|
||||
}
|
||||
indexes();
|
||||
dbAccess.createCount();
|
||||
}
|
||||
|
||||
async function check(coll){
|
||||
@ -81,6 +82,7 @@ async function indexes() {
|
||||
dbAccess.ensureIndex("stations", "3ALPHA");
|
||||
dbAccess.ensureIndex("stations", "STANOX");
|
||||
dbAccess.ensureIndex("stations", "TIPLOC");
|
||||
dbAccess.ensureIndex("corpus", "NLCDESC", "text")
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
Reference in New Issue
Block a user