Added sqlite db and email queue.
This commit is contained in:
parent
5a5c70cfb1
commit
03271573be
8 changed files with 169 additions and 12 deletions
server/db
79
server/db/database.js
Normal file
79
server/db/database.js
Normal file
|
@ -0,0 +1,79 @@
|
|||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var fs = require('fs');
|
||||
var glob = require('glob');
|
||||
var path = require('path');
|
||||
|
||||
function applyPatch(db, file, callback) {
|
||||
fs.readFile(file, function (err, contents) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
var version = path.basename(file, '.sql');
|
||||
|
||||
db.get('SELECT * FROM schema_version WHERE version = ?', version, function (err, row) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (row) {
|
||||
// patch is already applied. skip!
|
||||
return callback(null);
|
||||
}
|
||||
|
||||
var sql = 'BEGIN TRANSACTION;\n'
|
||||
+ contents.toString() + '\n'
|
||||
+ 'INSERT INTO schema_version (version) VALUES (\'' + version + '\');\n'
|
||||
+ 'END TRANSACTION;';
|
||||
|
||||
db.exec(sql, callback);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function applyMigrations(db, callback) {
|
||||
var sql = 'BEGIN TRANSACTION; CREATE TABLE IF NOT EXISTS schema_version (\n'
|
||||
+ ' version VARCHAR(255) PRIMARY KEY ASC,\n'
|
||||
+ ' applied_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL\n'
|
||||
+ '); END TRANSACTION;';
|
||||
db.exec(sql, function (err) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
glob(__dirname + '/patches/*.sql', function (err, files) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
async.each(
|
||||
files,
|
||||
function (file, fileCallback) {
|
||||
applyPatch(db, file, fileCallback);
|
||||
},
|
||||
callback
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init: function (callback) {
|
||||
var SQLite3 = require('sqlite3');
|
||||
var db = new SQLite3.Database('/tmp/test.sqlite');
|
||||
|
||||
applyMigrations(db, function (err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
angular.module('ffffng').factory('Database', function () {
|
||||
return db;
|
||||
});
|
||||
|
||||
callback();
|
||||
});
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue