mirror of
https://github.com/leanote/desktop-app.git
synced 2025-10-18 01:16:56 +00:00
<- sync
notebook: add [ok] <- sync notebook: add [ok]
This commit is contained in:
159
node_modules/notebook.js
generated
vendored
159
node_modules/notebook.js
generated
vendored
@@ -1,4 +1,5 @@
|
||||
var db = require('db');
|
||||
var async = require('async');
|
||||
var User = require('user');
|
||||
var NB = db.notebooks;
|
||||
|
||||
@@ -161,14 +162,52 @@ var Notebook = {
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
//----------------
|
||||
// 同步
|
||||
//----------------
|
||||
|
||||
getNotebookByServerNotebookId: function(notebookId, callback) {
|
||||
var me = this;
|
||||
NB.findOne({ServerNotebookId: notebookId}, function(err, doc) {
|
||||
if(err || !doc) {
|
||||
log('不存在');
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(doc);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 通过ServerNotebookId得到NotebookId
|
||||
getNotebookIdByServerNotebookId: function(serverNotebookId, callback) {
|
||||
if(!serverNotebookId) {
|
||||
return callback(false);
|
||||
}
|
||||
NB.findOne({ServerNotebookId: serverNotebookId}, function(err, notebook) {
|
||||
if(err || !notebook) {
|
||||
return callback(false);
|
||||
}
|
||||
callback(notebook.NotebookId);
|
||||
});
|
||||
},
|
||||
// 发送changes时用 api调用
|
||||
getServerNotebookIdByNotebookId: function(notebookId, callback) {
|
||||
if(!serverNotebookId) {
|
||||
return callback(false);
|
||||
}
|
||||
NB.findOne({NotebookId: notebookId}, function(err, notebook) {
|
||||
if(err || !notebook) {
|
||||
return callback(false);
|
||||
}
|
||||
callback(notebook.ServerNotebookId);
|
||||
});
|
||||
},
|
||||
|
||||
// 强制删除
|
||||
deleteNotebookForce: function(notebookId, callback) {
|
||||
var me = this;
|
||||
NB.remove({NotebookId: notebookId}, function(err, n) {
|
||||
NB.remove({ServerNotebookId: notebookId}, function(err, n) {
|
||||
if(err) {
|
||||
callback && callback(false);
|
||||
} else {
|
||||
@@ -176,41 +215,69 @@ var Notebook = {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 添加笔记本, notebook object
|
||||
// 这里的notebook是服务器传过来的数据, 需要fix下,
|
||||
addNotebookForce: function(notebook, callback) {
|
||||
NB.insert(notebook, function (err, newDoc) { // Callback is optional
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
var me = this;
|
||||
notebook.ServerNotebookId = notebook.NotebookId;
|
||||
// notebook.NotebookId = Common.objectId();
|
||||
notebook.NotebookId = notebook.NotebookId; // 就采用服务器的, 怕失去了层级
|
||||
me.getNotebookIdByServerNotebookId(notebook.ParentNotebookId, function(parentNotebookId) {
|
||||
// 如果是第一次添加可能会有问题, 数据库还没有数据, 那么还找不到
|
||||
if(parentNotebookId) {
|
||||
notebook.ParentNotebookId = parentNotebookId;
|
||||
} else {
|
||||
callback && callback(newDoc);
|
||||
// 否则, 就用服务器上的
|
||||
}
|
||||
NB.insert(notebook, function (err, newDoc) { // Callback is optional
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(newDoc);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
// 更新笔记本
|
||||
// 这里的notebook是服务器传过来的数据, 需要fix下,
|
||||
updateNotebookForce: function(notebook, callback) {
|
||||
notebook.IsDirty = false;
|
||||
notebook.LocalIsNew = false;
|
||||
NB.update({NotebookId: notebook.NotebookId}, {$set: notebook}, {}, function (err, updates) { // Callback is optional
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(notebook);
|
||||
}
|
||||
var serverNotebookId = notebook.NotebookId;
|
||||
me.getNotebookIdByServerNotebookId(notebook.ParentNotebookId, function(parentNotebookId) {
|
||||
notebook.ParentNotebookId = parentNotebookId;
|
||||
delete notebook['NotebookId'];
|
||||
NB.update({ServerNotebookId: serverNotebookId}, {$set: notebook}, {}, function (err, updates) { // Callback is optional
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(notebook);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
//
|
||||
|
||||
// 更新笔记本, NoteId可能也要更改
|
||||
// notebook是服务器传过来的
|
||||
updateNotebookForceForSendChange: function(notebookId, notebook, callback) {
|
||||
notebook.IsDirty = false;
|
||||
notebook.LocalIsNew = false;
|
||||
NB.update({NotebookId: notebookId}, {$set: notebook}, {}, function (err, updates) { // Callback is optional
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(notebook);
|
||||
}
|
||||
notebook.ServerNotebookId = notebook.NotebookId;
|
||||
me.getNotebookIdByServerNotebookId(notebook.ParentNotebookId, function(parentNotebookId) {
|
||||
notebook.ParentNotebookId = parentNotebookId;
|
||||
NB.update({NotebookId: notebookId}, {$set: notebook}, {}, function (err, n) {
|
||||
if(err) {
|
||||
console.log(err);
|
||||
callback && callback(false);
|
||||
} else {
|
||||
callback && callback(notebook);
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@@ -226,8 +293,58 @@ var Notebook = {
|
||||
});
|
||||
},
|
||||
|
||||
fixConflicts: function() {
|
||||
// 处理冲突
|
||||
// notes是服务器的数据, 与本地的有冲突
|
||||
// 1) 将本地的note复制一份
|
||||
// 2) 服务器替换之前
|
||||
fixConflicts: function(notebookSyncInfo, notebookWeb, callback) {
|
||||
var me = this;
|
||||
if(!notebookWeb) {
|
||||
return callback && callback();
|
||||
}
|
||||
// 处理冲突
|
||||
var conflictNotebooks = notebookSyncInfo.conflicts || [];
|
||||
log('fix notebook conflicts');
|
||||
async.eachSeries(conflictNotebooks, function(notebook, cb) {
|
||||
/*
|
||||
var noteId = note.NoteId;
|
||||
// 复制一份
|
||||
me.copyNoteForConfict(noteId, function(newNote) {
|
||||
if(newNote) {
|
||||
// 更新之前的
|
||||
me.updateNotebookForce(note, function() {
|
||||
cb();
|
||||
// 前端来处理, 全量sync时不用前端一个个处理
|
||||
notebookWeb.fixSyncConflict && notebookWeb.fixSyncConflict(note, newNote);
|
||||
});
|
||||
} else {
|
||||
cb();
|
||||
}
|
||||
});
|
||||
*/
|
||||
cb();
|
||||
}, function() {
|
||||
// 最后调用
|
||||
callback && callback();
|
||||
});
|
||||
|
||||
// 处理添加的
|
||||
var adds = notebookSyncInfo.adds;
|
||||
log('has add...');
|
||||
log(adds);
|
||||
notebookWeb.addSync(adds);
|
||||
log('has changeAdds')
|
||||
log(notebookSyncInfo.changeAdds)
|
||||
notebookWeb.addChange(notebookSyncInfo.changeAdds);
|
||||
|
||||
log('has updates...');
|
||||
log(notebookSyncInfo);
|
||||
log(notebookSyncInfo.updates);
|
||||
// 处理更新的
|
||||
notebookWeb.updateSync(notebookSyncInfo.updates);
|
||||
|
||||
// 处理删除的
|
||||
notebookWeb.deleteSync(notebookSyncInfo.deletes);
|
||||
}
|
||||
};
|
||||
module.exports = Notebook;
|
Reference in New Issue
Block a user