Skip to content
17 changes: 16 additions & 1 deletion commands/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,23 @@ func RegisterCommand() {
} else if len(os.Args) >= 2 && os.Args[1] == "update" {
Update()
os.Exit(0)
} else if len(os.Args) >= 2 && os.Args[1] == "reindex" {
ResolveCommand(os.Args[2:])
fmt.Println("开始全量重建倒排索引...")
if err := models.RebuildAllIndexes(); err != nil {
fmt.Println("倒排索引重建失败,索引表可能处于部分重建状态,请重新执行 reindex:", err)
os.Exit(1)
}
fmt.Println("倒排索引重建完成")
os.Exit(0)
}

}

func shouldInitializeMissingIndexes() bool {
return !(len(os.Args) >= 2 && os.Args[1] == "reindex")
}

// 注册模板函数
func RegisterFunction() {
err := web.AddFuncMap("config", models.GetOptionValue)
Expand Down Expand Up @@ -425,7 +438,9 @@ func ResolveCommand(args []string) {
RegisterCache()
RegisterModel()
RegisterLogger(conf.LogFile)
models.InitializeMissingIndexes()
if shouldInitializeMissingIndexes() {
models.InitializeMissingIndexes()
}

ModifyPassword()
}
Expand Down
42 changes: 42 additions & 0 deletions controllers/DocumentController.go
Original file line number Diff line number Diff line change
Expand Up @@ -324,6 +324,33 @@ func Flatten(list []*models.DocumentTree, flattened *[]DocumentTreeFlatten) {
return
}

func (c *DocumentController) resolveEditDocument(bookId int, id string) (*models.Document, error) {
id = strings.TrimSpace(id)
if id == "" {
return nil, nil
}

doc := models.NewDocument()
if docId, err := strconv.Atoi(id); err == nil {
doc, err = doc.FromCacheById(docId)
if err != nil {
return nil, err
}
} else {
var err error
doc, err = doc.FromCacheByIdentify(id, bookId)
if err != nil {
return nil, err
}
}

if doc == nil || doc.DocumentId <= 0 || doc.BookId != bookId {
return nil, orm.ErrNoRows
}

return doc, nil
}

// 编辑文档
func (c *DocumentController) Edit() {
c.Prepare()
Expand Down Expand Up @@ -396,6 +423,21 @@ func (c *DocumentController) Edit() {
} else {
c.Data["UploadFileSize"] = "undefined"
}

selectedDocId := 0
if doc, err := c.resolveEditDocument(bookResult.BookId, c.Ctx.Input.Param(":id")); err != nil {
if err == orm.ErrNoRows || err == models.ErrDataNotExist {
c.ShowErrorPage(404, i18n.Tr(c.Lang, "message.doc_not_exist"))
} else {
logs.Error("resolveEditDocument => ", err)
c.ShowErrorPage(500, i18n.Tr(c.Lang, "message.system_error"))
}
return
} else if doc != nil {
selectedDocId = doc.DocumentId
}

c.Data["SelectedDocId"] = selectedDocId
}

// 创建一个文档
Expand Down
Loading
Loading