Class: DbUpdater

DbUpdater

new DbUpdater(options) → {DbUpdater}

Данный модуль предназначен для выполнение разнообразных действий (задач) при старте проекта. Главной особенность задачи в том, что она обязательно должна быть выполнена и только один раз. Наиболее частое применение - обновление БД из заранее подготовленых файлов. Например, есть несколько SQL скриптов которые должны быть последовательно выполнены, после чего можно стартовать приложение.
Во время разработки появляются изменения в БД, которые должны быть выполнены на каждом сервере - мы добавляем соответствующие SQL скрипты (задачи) и знаем, что перед стартом приложения БД будет обновлена (если этого еще не сделано). Это особенно актуально при большом количестве серверов. Некоторые могут назвать этот механизм "миграцией", на мой взгляд это не она, а сонхронизация структуры БД.

Пример кода ниже
Примерs JS и SQL файлов заданий. В примерениже они должны лежать в папке tasks в корне проекта
Parameters:
Name Type Description
options object объект, который умеет читать задачи из хранилища
Properties
Name Type Description
reader Reader.TaskReaderAbstract объект, который умеет читать задачи из хранилища
saver Saver.TaskSaverAbstract объект, который умеет получать список выполненных задач и логировать выполненные задачи
executors Array.<Executor.TaskExecAbstract> массив объектов, которые умеют определять тип задач (один уникальный тип для одного executor'а) и выполнять их
Source:
Returns:
Type
DbUpdater
Example
var DbUpdater = require('dbupdater');

var dbupdater = DbUpdater({
     taskReader: DbUpdater.TaskReaderFile(),
  // taskReader: DbUpdater.TaskReaderFile({path: 'tasks'}),
     taskSaver: DbUpdater.TaskSaverPostgreSQL({connString: 'postgres://postgres:1@localhost/mydb'}),
  // taskSaver: DbUpdater.TaskSaverPostgreSQL({connString: 'postgres://postgres:1@localhost/mydb', dbTable: 'tasks'}),
     taskExecutors: [
         DbUpdater.TaskExecPostgresFileJs({connString: 'postgres://postgres:1@localhost/mydb'}),
         DbUpdater.TaskExecPostgresFileSql({connString: 'postgres://postgres:1@localhost/mydb'})
     ]
});

dbupdater.init(function (err) {
     if (err) {
         console.error('dbupdater: ' + err);
     } else {
         console.log('dbupdater done success!');
     }
});

Members

(static) TaskExecAbstract

Source:

(static) TaskExecPostgresFileJs

Source:

(static) TaskExecPostgresFileSql

Source:

(static) TaskReaderAbstract

Source:

(static) TaskReaderFile

Source:

(static) TaskSaverAbstract

Source:

(static) TaskSaverPostgreSQL

Source:

Methods

init(cb)

Метод инициализирующий модуль. Выполняет всю подготовительную работу, сравнивает выполненные задачи с задачами в хранилище по md5 и выполняет задачи которые еще небыли выполнены
Parameters:
Name Type Description
cb function колбэк инициализации
Properties
Name Type Attributes Description
err Error <nullable>
Ошибка инициализации
Source: