UNPKG

deep-package-manager

Version:
172 lines (137 loc) 3.32 kB
/** * Created by AlexanderC on 1/27/16. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.MigrationsRegistry = undefined; var _deepCore = require('deep-core'); var _deepCore2 = _interopRequireDefault(_deepCore); var _deepFs = require('deep-fs'); var _deepFs2 = _interopRequireDefault(_deepFs); var _S3Service = require('../Provisioning/Service/S3Service'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class MigrationsRegistry { /** * @param {FS.RegistryInstance|*} registry */ constructor(registry) { this._registry = registry; this._migrations = []; } /** * @param {Property|*} property * @returns {MigrationsRegistry} */ static create(property) { return new MigrationsRegistry(MigrationsRegistry._createRegistry(property)); } /** * @param {String} version * @param {Function} onMissingDb * @returns {Boolean} */ ensure(version, onMissingDb) { if (!this.has(version)) { this.register(version); onMissingDb(); return true; } return false; } /** * @param {String} version * @returns {MigrationsRegistry} */ remove(version) { if (this.has(version)) { let i = this._migrations.indexOf(version); this._migrations.splice(i, 1); } return this; } /** * @param {String} version * @returns {Boolean} */ has(version) { return this._migrations.indexOf(version) !== -1; } /** * @param {String} version * @returns {MigrationsRegistry} */ register(version) { this._migrations.push(version); return this; } /** * @returns {String[]} */ get migrations() { return this._migrations; } /** * @param {String[]} migrations */ set migrations(migrations) { this._migrations = migrations; } /** * @param {Function} cb * @returns {MigrationsRegistry} */ load(cb) { this._registry.exists(MigrationsRegistry.REGISTRY_KEY, (error, exists) => { if (error) { cb(error); return; } if (exists) { this._registry.read(MigrationsRegistry.REGISTRY_KEY, (error, migrations) => { if (error) { cb(error); return; } this._migrations = migrations; cb(null); }); return; } cb(null); }); return this; } /** * @param {Function} cb * @returns {MigrationsRegistry} */ dump(cb) { this._registry.write(MigrationsRegistry.REGISTRY_KEY, this._migrations, cb); return this; } /** * @param {Property|*} property * @returns {FS.RegistryInstance} * @private */ static _createRegistry(property) { return new _deepFs2.default.RegistryInstance(property.provisioning.s3, MigrationsRegistry._getSystemBucket(property)); } /** * @param {Property|*} property * @returns {String} * @private */ static _getSystemBucket(property) { return property.config.provisioning[_deepCore2.default.AWS.Service.SIMPLE_STORAGE_SERVICE].buckets[_S3Service.S3Service.PRIVATE_BUCKET].name; } /** * @returns {String} */ static get REGISTRY_KEY() { return '__migrations__'; } } exports.MigrationsRegistry = MigrationsRegistry;