107 lines
2.9 KiB
Go
107 lines
2.9 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/leanote/leanote/app/info"
|
|
. "github.com/leanote/leanote/app/lea"
|
|
"github.com/revel/revel"
|
|
"gopkg.in/mgo.v2/bson"
|
|
// "io/ioutil"
|
|
)
|
|
|
|
// 笔记本API
|
|
|
|
type ApiNotebook struct {
|
|
ApiBaseContrller
|
|
}
|
|
|
|
// 从Notebook -> ApiNotebook
|
|
func (c ApiNotebook) fixNotebooks(notebooks []info.Notebook) []info.ApiNotebook {
|
|
if notebooks == nil {
|
|
return nil
|
|
}
|
|
apiNotebooks := make([]info.ApiNotebook, len(notebooks))
|
|
for i, notebook := range notebooks {
|
|
apiNotebooks[i] = c.fixNotebook(¬ebook)
|
|
}
|
|
return apiNotebooks
|
|
}
|
|
func (c ApiNotebook) fixNotebook(notebook *info.Notebook) info.ApiNotebook {
|
|
if notebook == nil {
|
|
return info.ApiNotebook{}
|
|
}
|
|
return info.ApiNotebook{
|
|
NotebookId: notebook.NotebookId,
|
|
UserId: notebook.UserId,
|
|
ParentNotebookId: notebook.ParentNotebookId,
|
|
Seq: notebook.Seq,
|
|
Title: notebook.Title,
|
|
UrlTitle: notebook.UrlTitle,
|
|
IsBlog: notebook.IsBlog,
|
|
CreatedTime: notebook.CreatedTime,
|
|
UpdatedTime: notebook.UpdatedTime,
|
|
Usn: notebook.Usn,
|
|
IsDeleted: notebook.IsDeleted,
|
|
}
|
|
}
|
|
|
|
// 获取同步的笔记本
|
|
// [OK]
|
|
// > afterUsn的笔记
|
|
// 返回 {ChunkHighUsn: 本下最大的usn, 借此可以知道是否还有, Notebooks: []}
|
|
func (c ApiNotebook) GetSyncNotebooks(afterUsn, maxEntry int) revel.Result {
|
|
if maxEntry == 0 {
|
|
maxEntry = 100
|
|
}
|
|
notebooks := notebookService.GeSyncNotebooks(c.getUserId(), afterUsn, maxEntry)
|
|
return c.RenderJson(c.fixNotebooks(notebooks))
|
|
}
|
|
|
|
// 得到用户的所有笔记本
|
|
// [OK]
|
|
// info.SubNotebooks
|
|
func (c ApiNotebook) GetNotebooks() revel.Result {
|
|
notebooks := notebookService.GeSyncNotebooks(c.getUserId(), 0, 99999)
|
|
return c.RenderJson(c.fixNotebooks(notebooks))
|
|
}
|
|
|
|
// 添加notebook
|
|
// [OK]
|
|
func (c ApiNotebook) AddNotebook(title, parentNotebookId string, seq int) revel.Result {
|
|
notebook := info.Notebook{NotebookId: bson.NewObjectId(),
|
|
Title: title,
|
|
Seq: seq,
|
|
UserId: bson.ObjectIdHex(c.getUserId())}
|
|
if parentNotebookId != "" && bson.IsObjectIdHex(parentNotebookId) {
|
|
notebook.ParentNotebookId = bson.ObjectIdHex(parentNotebookId)
|
|
}
|
|
re := info.NewRe()
|
|
re.Ok, notebook = notebookService.AddNotebook(notebook)
|
|
if !re.Ok {
|
|
return c.RenderJson(re)
|
|
}
|
|
return c.RenderJson(c.fixNotebook(¬ebook))
|
|
}
|
|
|
|
// 修改笔记
|
|
// [OK]
|
|
func (c ApiNotebook) UpdateNotebook(notebookId, title, parentNotebookId string, seq, usn int) revel.Result {
|
|
re := info.NewApiRe()
|
|
|
|
ok, msg, notebook := notebookService.UpdateNotebookApi(c.getUserId(), notebookId, title, parentNotebookId, seq, usn)
|
|
if !ok {
|
|
re.Ok = false
|
|
re.Msg = msg
|
|
return c.RenderJson(re)
|
|
}
|
|
LogJ(notebook)
|
|
return c.RenderJson(c.fixNotebook(¬ebook))
|
|
}
|
|
|
|
// 删除笔记本
|
|
// [OK]
|
|
func (c ApiNotebook) DeleteNotebook(notebookId string, usn int) revel.Result {
|
|
re := info.NewApiRe()
|
|
re.Ok, re.Msg = notebookService.DeleteNotebookForce(c.getUserId(), notebookId, usn)
|
|
return c.RenderJson(re)
|
|
}
|