nyx_server
Version:
Node内容发布
136 lines (124 loc) • 4.3 kB
JavaScript
var config = require("../../config/default-config");
var DBTemplate = require("../../db/DBTemplate");
var projectMatchService = require('../ProjectMatchService');
var projectFn = require('../Project');
var projectLoader = require('../ProjectLoader');
var dbtemplate = new DBTemplate(config.NYX_DB_CONFIG_NAME);
/**
* 得到项目集合
* @param name 项目名称 可以是表达式
* @return 返回匹配的项目
*/
module.exports.getProjects = function(projectName){
return projectMatchService.getProjects.bind(this)().then(function(projects){
var ret = [];
if(projects.length==0){
return ret;
}
var regx = new RegExp(projectName);
var keys = Object.keys(projects);
keys.forEach(function(key){
var project = projects[key];
var _name = project.name;
if(regx.test(_name)){
ret.push(project);
}
});
return ret;
});
};
/**
* 返回敬请匹配的项目
* @params 项目名称
*/
module.exports.getProject = function(name){
return projectLoader.loadProjects.bind(this)({name: name})
.then(function(projects){
return projects[0].config;
});
};
/**
* 得到所有匹配路径的模板
* @param matchPath 匹配路径
*/
module.exports.getTemplates = function(matchPath){
throw new Error('no implements!');
};
/**
* 得到项目的模板
* @param projectName 项目名称
*/
module.exports.getProjectTemplates = function(projectName){
return projectLoader.loadProjects.bind(this)({name: projectName})
.then(results => results[0]).then(function(project){
return projectFn.loadTemplates(project).map(function(template){
return template.config;
});
});
};
/**
* 得到绑定了模板的碎片数据
* @param id 碎片id
* @param templateDataId 绑定的模板实例id
*/
module.exports.getChipData = function(id , templateDataId){
var params = [];
var sql = 'select * from chip_data_t where id=? ';
params.push(id);
if(templateDataId){
sql += ' and templateDataId = ?';
params.push(templateDataId);
}else{
sql += ' and templateDataId is null';
}
return dbtemplate.query(sql , params).then(function(result){
if(result.length>0){
var ret = result[0].data;
return JSON.parse(ret);
}
return null;
});
};
/**
* 保存chip数据
*/
module.exports.updateChipData = function(id , templateDataId , editData , chipType){
if(templateDataId){
var sql = "select * from chip_data_t where id=? and templateDataId = ?";
return dbtemplate.query(sql , [id , templateDataId]).then(function(result){
if(result.length==0){
//还没有绑定模板的数据
sql = 'insert into chip_data_t(id , templateDataId , data , chipType , createdTime) value(?,?,?,?,now())';
return dbtemplate.query(sql , [id,templateDataId,JSON.stringify(editData),chipType]);
}else{
sql = 'update chip_data_t set data=? , chipType=? , modifyTime=now() where id=? and templateDataId=?';
return dbtemplate.query(sql , [JSON.stringify(editData),chipType,id,templateDataId]);
}
});
}else{
//如果没有指定绑定的模板数据id直接更新
sql = 'update chip_data_t set data=? , chipType=? , modifyTime=now() where id=? and templateDataId is null';
var params = [JSON.stringify(editData) , chipType , id];
console.log(sql , params);
return dbtemplate.query(sql , params);
}
};
module.exports.setChipPubUrl = function(id , templateDataId , publishUrl){
var params = [];
var sql = 'update chip_data_t set puburl=? where id=? ';
params.push(publishUrl);
params.push(id);
if(templateDataId){
sql += " and templateDataId=? ";
params.push(templateDataId);
}else{
sql += ' and templateDataId is null';
}
return dbtemplate.query(sql , params).then(function(result){
if(result.changedRows>0){
return true;
}else{
return false;
}
});
};