diff --git a/kernel/model/index.go b/kernel/model/index.go index e3f2ac90a..f04d4ce49 100644 --- a/kernel/model/index.go +++ b/kernel/model/index.go @@ -170,7 +170,7 @@ func index(boxID string) { cache.PutDocIAL(file.path, docIAL) treenode.IndexBlockTree(tree) - sql.IndexTreeQueue(box.ID, file.path) + sql.IndexTreeQueue(tree) util.IncBootProgress(bootProgressPart, fmt.Sprintf(Conf.Language(92), util.ShortPathForBootingDisplay(tree.Path))) if 1 < i && 0 == i%64 { util.PushStatusBar(fmt.Sprintf(Conf.Language(88), i, (len(files))-i)) diff --git a/kernel/model/index_fix.go b/kernel/model/index_fix.go index c3ff3c317..8174ea0ff 100644 --- a/kernel/model/index_fix.go +++ b/kernel/model/index_fix.go @@ -470,7 +470,7 @@ func reindexTree0(tree *parse.Tree, i, size int) { indexWriteJSONQueue(tree) } else { treenode.IndexBlockTree(tree) - sql.IndexTreeQueue(tree.Box, tree.Path) + sql.IndexTreeQueue(tree) } if 0 == i%64 { diff --git a/kernel/model/sync.go b/kernel/model/sync.go index 937c84c93..1b4086db1 100644 --- a/kernel/model/sync.go +++ b/kernel/model/sync.go @@ -307,7 +307,7 @@ func removeIndexes(removeFilePaths []string) (removeRootIDs []string) { util.PushStatusBar(msg) treenode.RemoveBlockTreesByRootID(block.RootID) - sql.RemoveTreeQueue(block.BoxID, block.RootID) + sql.RemoveTreeQueue(block.RootID) } } diff --git a/kernel/sql/queue.go b/kernel/sql/queue.go index 490d2d0e6..3a538a897 100644 --- a/kernel/sql/queue.go +++ b/kernel/sql/queue.go @@ -40,10 +40,10 @@ var ( type dbQueueOperation struct { inQueueTime time.Time action string // upsert/delete/delete_id/rename/rename_sub_tree/delete_box/delete_box_refs/insert_refs/index/delete_ids/update_block_content/delete_assets - indexPath string // index + indexTree *parse.Tree // index upsertTree *parse.Tree // upsert/insert_refs/update_refs/delete_refs removeTreeBox, removeTreePath string // delete - removeTreeIDBox, removeTreeID string // delete_id + removeTreeID string // delete_id removeTreeIDs []string // delete_ids box string // delete_box/delete_box_refs/index renameTree *parse.Tree // rename/rename_sub_tree @@ -164,7 +164,7 @@ func FlushQueue() { func execOp(op *dbQueueOperation, tx *sql.Tx, context map[string]interface{}) (err error) { switch op.action { case "index": - err = indexTree(tx, op.box, op.indexPath, context) + err = indexTree(tx, op.indexTree, context) case "upsert": err = upsertTree(tx, op.upsertTree, context) case "delete": @@ -315,13 +315,13 @@ func DeleteBoxQueue(boxID string) { operationQueue = append(operationQueue, newOp) } -func IndexTreeQueue(box, p string) { +func IndexTreeQueue(tree *parse.Tree) { dbQueueLock.Lock() defer dbQueueLock.Unlock() - newOp := &dbQueueOperation{indexPath: p, box: box, inQueueTime: time.Now(), action: "index"} + newOp := &dbQueueOperation{indexTree: tree, inQueueTime: time.Now(), action: "index"} for i, op := range operationQueue { - if "index" == op.action && op.indexPath == p && op.box == box { // 相同树则覆盖 + if "index" == op.action && op.indexTree.ID == tree.ID { // 相同树则覆盖 operationQueue[i] = newOp return } @@ -379,13 +379,13 @@ func RenameSubTreeQueue(tree *parse.Tree) { operationQueue = append(operationQueue, newOp) } -func RemoveTreeQueue(box, rootID string) { +func RemoveTreeQueue(rootID string) { dbQueueLock.Lock() defer dbQueueLock.Unlock() - newOp := &dbQueueOperation{removeTreeIDBox: box, removeTreeID: rootID, inQueueTime: time.Now(), action: "delete_id"} + newOp := &dbQueueOperation{removeTreeID: rootID, inQueueTime: time.Now(), action: "delete_id"} for i, op := range operationQueue { - if "delete_id" == op.action && op.removeTreeIDBox == box && op.removeTreeID == rootID { + if "delete_id" == op.action && op.removeTreeID == rootID { operationQueue[i] = newOp return } diff --git a/kernel/sql/upsert.go b/kernel/sql/upsert.go index 31cbf154a..33c93b309 100644 --- a/kernel/sql/upsert.go +++ b/kernel/sql/upsert.go @@ -33,7 +33,6 @@ import ( ignore "github.com/sabhiram/go-gitignore" "github.com/siyuan-note/eventbus" "github.com/siyuan-note/logging" - "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/util" ) @@ -401,12 +400,7 @@ func insertRefs(tx *sql.Tx, tree *parse.Tree) (err error) { return err } -func indexTree(tx *sql.Tx, box, p string, context map[string]interface{}) (err error) { - tree, err := filesys.LoadTree(box, p, luteEngine) - if nil != err { - return - } - +func indexTree(tx *sql.Tx, tree *parse.Tree, context map[string]interface{}) (err error) { blocks, spans, assets, attributes := fromTree(tree.Root, tree) refs, fileAnnotationRefs := refsFromTree(tree) err = insertTree0(tx, tree, context, blocks, spans, assets, attributes, refs, fileAnnotationRefs)