Skip to content

Данный модуль предназначен для выполнение разнообразных действий (задач) при старте проекта.\r Главной особенность задачи в том, что она обязательно должна быть выполнена и только один раз.\r Наиболее частое применение - обновление БД из заранее подготовленых файлов.\r Например, есть несколько SQL скриптов которые должны быть последовательно вып…

License

Notifications You must be signed in to change notification settings

PredokMiF/dbUpdater

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dbupdater

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

Инсталяция

Using npm:

$ npm install --save dbupdater

In Node.js/io.js:

var dbupdater = require('dbupdater');
var dbConnStr = 'postgres://user:pass@localhost/dbName';

var dbupdater = dbupdater({
     taskReader: dbupdater.TaskReaderFile(/*{path: 'tasks', logDev, log, logWarn, logErr}*/),
     taskSaver: dbupdater.TaskSaverPostgreSQL({connString: dbConnStr/*, dbTable: 'tasks', logDev, log, logWarn, logErr*/}),
     taskExecutors: [
         dbupdater.TaskExecPostgresFileJs({connString: dbConnStr/*, logDev, log, logWarn, logErr*/}),
         dbupdater.TaskExecPostgresFileSql({connString: dbConnStr/*, logDev, log, logWarn, logErr*/})
     ]
});

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

JS задача

// Имя файла tasks/20150506-0053-grigorchuk.postgres-file-js.js
var _ = require('lodash');
module.exports = function (client, cb) {
var sql = 'CREATE TABLE "myyy" (' +
     '   name character varying(256) NOT NULL, ' +
     '   md5 character varying(128) NOT NULL, ' +
     '   executed timestamp without time zone NOT NULL DEFAULT now()' +
     ');';
     client.query(sql, cb);
};

SQL задача

-- Имя файла tasks/20150520-2359-grigorchuk.postgres-file-sql.sql
ALTER TABLE myyy ADD COLUMN id serial NOT NULL;
ALTER TABLE myyy ADD PRIMARY KEY (id);

Полная документация лежит тут

About

Данный модуль предназначен для выполнение разнообразных действий (задач) при старте проекта.\r Главной особенность задачи в том, что она обязательно должна быть выполнена и только один раз.\r Наиболее частое применение - обновление БД из заранее подготовленых файлов.\r Например, есть несколько SQL скриптов которые должны быть последовательно вып…

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published