|
@@ -4,17 +4,19 @@
|
|
|
|
|
|
let mongoose = require('mongoose');
|
|
|
let blModel = mongoose.model('blockLibsModel');
|
|
|
+let uuid = require('../../../public/web/uuid');
|
|
|
|
|
|
module.exports = {
|
|
|
getLibNames: getLibNames,
|
|
|
getLib: getLib,
|
|
|
getLibNamesAndFirstLib: getLibNamesAndFirstLib,
|
|
|
+ copyTemplateLib: copyTemplateLib,
|
|
|
saveBlock: saveBlock
|
|
|
};
|
|
|
|
|
|
// userID、compilationID
|
|
|
async function getLibNames(data) {
|
|
|
- let libNames = await blModel.find({userID: data.userID, compilation: data.compilationID}, ["libID","libName","-_id"]);
|
|
|
+ let libNames = await blModel.find({userID: data.userID, compilationID: data.compilationID}, ["libID","libName","-_id"]);
|
|
|
return libNames;
|
|
|
};
|
|
|
|
|
@@ -27,30 +29,55 @@ async function getLib(data) {
|
|
|
// userID、compilationID
|
|
|
async function getLibNamesAndFirstLib(data) {
|
|
|
let libNames = await getLibNames(data);
|
|
|
- let firstLib = await getLib(libNames[0]);
|
|
|
- return {libNames: libNames, firstLib: firstLib};
|
|
|
+ let lib = null;
|
|
|
+ if (libNames.length == 0){
|
|
|
+ lib = await copyTemplateLib(data.userID, data.userName, data.compilationID);
|
|
|
+ libNames.push({libID: lib.libID, libName: lib.libName});
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ lib = await getLib(libNames[0]);
|
|
|
+ }
|
|
|
+ return {libNames: libNames, firstLib: lib};
|
|
|
+};
|
|
|
+
|
|
|
+
|
|
|
+async function copyTemplateLib(userID, userName, compilationID) {
|
|
|
+ let template = await getLib({libID: '00000000'});
|
|
|
+ let newLib = {
|
|
|
+ userID: userID,
|
|
|
+ compilationID: compilationID,
|
|
|
+ libID: uuid.v1(),
|
|
|
+ libName: `${userName}的块模板库`,
|
|
|
+ datas: template.datas,
|
|
|
+ share: template.share
|
|
|
+ };
|
|
|
+ newLib.share.shareName = `共享-${newLib.libName}`;
|
|
|
+ await blModel.create(newLib);
|
|
|
+ console.log(JSON.stringify(newLib));
|
|
|
+ return newLib;
|
|
|
};
|
|
|
|
|
|
/*------------------------------------------------------------------------------
|
|
|
-data参数示例:
|
|
|
- {
|
|
|
- libID: 3,
|
|
|
- nodeID: 5,
|
|
|
- create: {node}
|
|
|
- delete: true
|
|
|
- update: {nodeName: 'xxx', children: [...]}
|
|
|
- }
|
|
|
+参数: {libID: n, nodeID: m, create: {node} | delete: true | update: {A:'xxx', B:'xxx'} }
|
|
|
说明: libID、nodeID 必须。 create|update|delete三选一。
|
|
|
- create属性值是完整的node节点数据。
|
|
|
- delete属性值是true。
|
|
|
- update属性值是要修改的属性键值对组成的对象。
|
|
|
+ create属性值:完整的node节点数据。
|
|
|
+ delete属性值:固定为true(false没有实际意义)。
|
|
|
+ update属性值:列出多个要修改的结点属性(键值对组成的对象)。
|
|
|
+示例: {libID: 3, nodeID: 5, create: {....}}
|
|
|
+ {libID: 3, nodeID: 5, delete: true}
|
|
|
+ {libID: 3, nodeID: 5, update: {nodeName: 'xxx', children: [...]} }
|
|
|
------------------------------------------------------------------------------*/
|
|
|
async function saveBlock(data) {
|
|
|
if (data.create) {
|
|
|
await blModel.update({libID: data.libID}, {$addToSet: {datas: data.create}});
|
|
|
}
|
|
|
if (data.delete) {
|
|
|
+ console.log(JSON.stringify(data));
|
|
|
+ console.log(data.nodeID);
|
|
|
await blModel.update({libID: data.libID}, {$pull: {datas: {ID: data.nodeID}}});
|
|
|
+ if (data.delete.nodeType == 1){ // 同步删除所有子结点
|
|
|
+ await blModel.update({libID: data.libID}, {$pull: {datas: {ParentID: data.nodeID}}});
|
|
|
+ }
|
|
|
}
|
|
|
else if (data.update){
|
|
|
let doc = await blModel.findOne({libID: data.libID});
|