agneta-platform
Version:
Agneta Platform - Integrate and customize business applications
83 lines (66 loc) • 2.02 kB
JavaScript
/* Copyright 2017 Agneta Network Applications, LLC.
*
* Source file: portal/website/utilities/deploy/pages_db.js
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const Promise = require('bluebird');
const _ = require('lodash');
module.exports = function(util) {
var webProject = util.locals.web.project;
var services = util.locals.services;
var Page = services.models.Page;
var pickProps = [
'title',
'path',
'source',
'template',
'authorization',
'isView',
'isViewData',
'date'
];
return function(options) {
if (options.stage.pages) {
var pages = webProject.site.pages.find({
isView: undefined,
isViewData: undefined
}).toArray();
var bar = util.progress(pages.length, {
title: `Deploy ${pages.length} page to database`
});
return Promise.map(pages, function(page) {
var pageProps = _.pick(page, pickProps);
return Page.findOne({
where: {
path: pageProps.path
}
}).then(function(page) {
if (!page) {
return Page.create(pageProps);
}
return page.updateAttributes(pageProps);
}).then(function() {
bar.tick();
});
});
}
if (options.promote.pages) {
return require('../lib/sync/database')(util, {
source: services.models.Page,
target: services.models.Production_Page,
key: 'path'
});
}
};
};