src/lib/managers/VirtualDomain.js
'use strict'
var _ = require('lodash')
var BaseManager = require('./base.manager.js')
var virtualDomainValidator = require('../validators/virtualDomain.validator')
var VirtualDomainModel = require('../models/VirtualDomainModel')
var virtualDomainDao = require('../daos/virtualDomainDao')
var virtualDomainStore = require('../stores/virtualDomain.store')
var VirtualDomainManager = function (options) {
this.events = options.events
this.Phrase = options.Phrase
this.Snippet = options.Snippet
}
VirtualDomainManager.prototype = new BaseManager({
itemName: 'virtualDomain',
store: virtualDomainStore,
model: VirtualDomainModel,
dao: virtualDomainDao,
validator: virtualDomainValidator
})
/*
VirtualDomainManager.prototype.getById = function(id) {
//@TODO
var domain = this._extractDomainFromId(id)
var vdomain = this.store.get(domain, id)
if(!vdomain){
return this.loadAndRegisterById(id)
}
}
VirtualDomainManager.prototype.getByDomain = function(domain) {
//@TODO
var vdomains = this.store.getAsList(domain)
if(vdomains.length === 0){
this.loadAndRegisterByDomain(domain)
}
}
VirtualDomainManager.prototype.getAll = function() {
//TODO:
var vdomains = this.store.getAsList()
if(vdomains.length === 0){
this.loadAndRegisterAll()
}
};*/
/*
Receives a JSON of a virtual domain and saves the domain the phrases and snippets
*/
VirtualDomainManager.prototype.__save = function (vdJson) {
// For each phrase, phrase dao save
// for each snippet snippet dao save
return Promise.all([
this._savePhrases(vdJson.phrases),
this._saveSnippets(vdJson.snippets),
this.dao.save(_.omit(vdJson, ['phrases', 'snippets']))
])
}
VirtualDomainManager.prototype._savePhrases = function (phrases) {
var module = this
var promises = phrases.map(function (phrase) {
return module.Phrase.save(phrase)
})
return Promise.all(promises)
}
VirtualDomainManager.prototype._saveSnippets = function (snippets) {
var module = this
var promises = snippets.map(function (snippet) {
return module.Snippet.save(snippet)
})
return Promise.all(promises)
}
// TODO: Remove for using the MD5 check defined in BaseManager
VirtualDomainManager.prototype.__shouldSave = function () {
return true
}
module.exports = VirtualDomainManager