renamed database schemaCheck method to initialize
authorJustin Wind <justin.wind+git@gmail.com>
Thu, 5 Aug 2021 16:18:19 +0000 (09:18 -0700)
committerJustin Wind <justin.wind+git@gmail.com>
Thu, 5 Aug 2021 16:18:19 +0000 (09:18 -0700)
As more functionality had been heaped onto this method, it's name was
updated to be more fitting.

server.js
src/db/base.js
src/db/postgres/index.js
test/src/db/base.js
test/src/db/integration.js
test/src/db/postgres.js
test/stub-db.js

index 985e57552e124562df908d53d1349bbdd4da3bdd..76580972919c642d3d0c09de1080e038a003a3a9 100644 (file)
--- a/server.js
+++ b/server.js
@@ -19,7 +19,7 @@ const ADDR = process.env.LISTEN_ADDR || '127.0.0.1';
     config = new Config(process.env.NODE_ENV);
     logger = new Logger(config);
     db = new DB(logger, config);
-    await db.schemaCheck();
+    await db.initialize();
     service = new Service(logger, db, config);
 
     http.createServer((req, res) => {
index 8a1df74b9bfb344d1457fa4ff3e9df932b27b6c0..8d72d0fb88e2c63fa42e0a09773329147b86382e 100644 (file)
@@ -83,14 +83,14 @@ class Database {
 
 
   /**
-   * Validate schema compatibility.
-   * Ensure this is called immediately after instantiating a DB instance,
-   * as some engines also finish initialization and validation here, which
-   * was easier than wrangling async calls in constructor.
-   * In light of this behavior, this method could be named better.
-   */
-   async schemaCheck() {
-    const _scope = _fileScope('schemaCheck');
+   * Perform tasks needed to prepare database for use.  Ensure this is called
+   * after construction, and before any other database activity.
+   * At the minimum, this will validate a compatible schema is present and usable.
+   * Some engines will also perform other initializations or async actions which
+   * are easier handled outside the constructor.
+  */
+   async initialize() {
+    const _scope = _fileScope('initialize');
 
     const currentSchema = await this._currentSchema();
     const current = svh.schemaVersionObjectToNumber(currentSchema);
index f4f690a18e3a95d18bb55c3596d1a9c2d797fc66..d02d98165360f33819e220b195e3af0d18c26cd2 100644 (file)
@@ -100,13 +100,13 @@ class DatabasePostgres extends Database {
   }
 
 
-  async schemaCheck(applyMigrations = true) {
-    const _scope = _fileScope('schemaCheck');
+  async initialize(applyMigrations = true) {
+    const _scope = _fileScope('initialize');
     this.logger.debug(_scope, 'called', { applyMigrations });
     if (applyMigrations) {
       await this._initTables();
     }
-    await super.schemaCheck();
+    await super.initialize();
   }
 
 
index 18871f43e7dbcbb1b4c7da059e624026b37b4e41..786365722b13880f698b4f46184b3d4f3749bda2 100644 (file)
@@ -108,7 +108,7 @@ describe('DatabaseBase', function () {
     });
   }); // _ensureTypes
 
-  describe('schemaCheck', function () {
+  describe('initialize', function () {
     let currentSchema;
     beforeEach(function () {
       currentSchema = {
@@ -123,7 +123,7 @@ describe('DatabaseBase', function () {
       sinon.stub(db, '_currentSchema').resolves(currentSchema);
     });
     it('covers success', async function () {
-      await db.schemaCheck();
+      await db.initialize();
     });
     it('covers failure', async function() {
       db.schemaVersionsSupported = {
@@ -139,13 +139,13 @@ describe('DatabaseBase', function () {
         },
       };
       try {
-        await db.schemaCheck();
+        await db.initialize();
         assert.fail('did not get expected exception');
       } catch (e) {
         assert(e instanceof DBErrors.MigrationNeeded);
       }
     });
-  }); // schemaCheck
+  }); // initialize
 
   describe('_topicDefaults', function () {
     let topic;
index 3cb07f94c02c1b8bae89e8fd4620e0abf7a453f0..e6f632c897280586c404ebe2962fc747e08e7923 100644 (file)
@@ -69,7 +69,7 @@ describe('Database Integration', function () {
         // eslint-disable-next-line security/detect-non-literal-require
         DB = require(i.module);
         db = new DB(stubLogger, i.config);
-        await db.schemaCheck();
+        await db.initialize();
         await db._purgeTables(true);
       });
       after(async function () {
index 5df49fd662680fb2137adc32d8f7c77f2da7d986..5aff1e8cceafae1e8faffd3629105cf59a1955ca 100644 (file)
@@ -155,17 +155,17 @@ describe('DatabasePostgres', function () {
     });
   }); // _initTables
 
-  describe('schemaCheck', function () {
+  describe('initialize', function () {
     it('passes supported version', async function () {
       const version = { major: 1, minor: 0, patch: 0 };
       sinon.stub(db.db, 'one').resolves(version);
-      await db.schemaCheck(false);
+      await db.initialize(false);
     });
     it('fails low version', async function () {
       const version = { major: 0, minor: 0, patch: 0 };
       sinon.stub(db.db, 'one').resolves(version);
       try {
-        await db.schemaCheck(false);
+        await db.initialize(false);
         assert.fail(noExpectedException);
       } catch (e) {
         assert(e instanceof DBErrors.MigrationNeeded);
@@ -175,7 +175,7 @@ describe('DatabasePostgres', function () {
       const version = { major: 100, minor: 100, patch: 100 };
       sinon.stub(db.db, 'one').resolves(version);
       try {
-        await db.schemaCheck(false);
+        await db.initialize(false);
         assert.fail(noExpectedException);
       } catch (e) {
         assert(e instanceof DBErrors.MigrationNeeded);
@@ -186,9 +186,9 @@ describe('DatabasePostgres', function () {
       sinon.stub(db.db, 'multiResult');
       sinon.stub(db, '_currentSchema').resolves(db.schemaVersionsSupported.max);
       sinon.stub(db.db, 'one').resolves(db.schemaVersionsSupported.max);
-      await db.schemaCheck();
+      await db.initialize();
     });
-  }); // schemaCheck
+  }); // initialize
 
   describe('healthCheck', function () {
     beforeEach(function () {
index 608ea77150589b2053efa9f8c0997a3a27efcaac..5ef24228a8b5bf1db00257cf1745572d5c3ef742 100644 (file)
@@ -13,7 +13,7 @@ const stubFns = [
   'authenticationGet',
   'authenticationUpsert',
   'healthCheck',
-  'schemaCheck',
+  'initialize',
   'subscriptionsByTopicId',
   'subscriptionCountByTopicUrl',
   'subscriptionDelete',