From d381f85ad023219f85f401eb89bc9623f98d9294 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Thu, 2 Feb 2023 12:25:26 +0000 Subject: [PATCH] Backend: Add DB Indexes Signed-off-by: Fred Boniface --- UpNext.md | 1 - src/services/dbAccess.services.js | 11 ++++++++++- src/utils/dbinit.utils.js | 17 +++++++++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/UpNext.md b/UpNext.md index ebb5193..01c7630 100644 --- a/UpNext.md +++ b/UpNext.md @@ -3,7 +3,6 @@ ## Frontend: * Alerts box should not be clickable, bar should be. -* Issue page: Captcha. * Enable text search for `locationName` on find-code page. * Responsive text sizes for boards. diff --git a/src/services/dbAccess.services.js b/src/services/dbAccess.services.js index d4269f4..4e4b984 100644 --- a/src/services/dbAccess.services.js +++ b/src/services/dbAccess.services.js @@ -78,10 +78,19 @@ async function query(collection, query){ return (await qcursor.toArray()); } +async function ensureIndex(col, field) { + await client.connect(); + log.out(`dbAccess.ensureIndex: Creating index in collection ${col} for field ${field}`) + let res = await db.createIndex(col, field); + log.out(`dbAccess.ensureIndex: Index created`); + return; +} + module.exports = { putCorpus, putStations, dropCollection, updateMeta, - query + query, + ensureIndex } \ No newline at end of file diff --git a/src/utils/dbinit.utils.js b/src/utils/dbinit.utils.js index b5b04fd..7569a0c 100644 --- a/src/utils/dbinit.utils.js +++ b/src/utils/dbinit.utils.js @@ -12,7 +12,7 @@ async function init(){ var status = await check('corpus'); if (status == "not_ready") { try { - build("corpus") + await build("corpus") } catch (err) { log.out("dbInitUtils.init: Error building corpus database") log.out(err) @@ -22,12 +22,13 @@ async function init(){ var status = await check('stations') if (status == "not_ready") { try { - build("stations") + await build("stations") } catch (err) { log.out("dbInitUtils.init: Error building stations database") log.out(err) } } + indexes(); } async function check(coll){ @@ -61,7 +62,7 @@ async function build(db){ // `db` must be one of: `corpus`, `stations`, `all`. await dbAccess.dropCollection("corpus"); dbAccess.putCorpus(corpusAll); - log.out(`dbInitUtils.build: Updating corpus meta`) + log.out(`dbInitUtils.build: Updating corpus meta`); dbAccess.updateMeta("collection", "corpus", time.jsUnix(Date.now())); } if (db === "stations") { @@ -69,11 +70,19 @@ async function build(db){ // `db` must be one of: `corpus`, `stations`, `all`. var corpusSubset = await corpus.subset(corpusAll); dbAccess.putStations(corpusSubset); - log.out(`dbInitUtils.build: Updating stations meta`) + log.out(`dbInitUtils.build: Updating stations meta`); dbAccess.updateMeta("collection", "stations", time.jsUnix(Date.now())); } } +async function indexes() { + dbAccess.ensureIndex("corpus", "NLC"); + dbAccess.ensureIndex("corpus", "3ALPHA"); + dbAccess.ensureIndex("stations", "3ALPHA"); + dbAccess.ensureIndex("stations", "STANOX"); + dbAccess.ensureIndex("stations", "TIPLOC"); +} + module.exports = { init } \ No newline at end of file