Forráskód Böngészése

:zap: Improve performance of importing .sy.zip https://github.com/siyuan-note/siyuan/issues/10874

Daniel 1 éve
szülő
commit
d9370560e5
2 módosított fájl, 24 hozzáadás és 4 törlés
  1. 6 4
      kernel/model/import.go
  2. 18 0
      kernel/util/misc.go

+ 6 - 4
kernel/model/import.go

@@ -149,16 +149,18 @@ func ImportSY(zipPath, boxID, toPath string) (err error) {
 
 			// 新 ID 保留时间部分,仅修改随机值,避免时间变化导致更新时间早于创建时间
 			// Keep original creation time when importing .sy.zip https://github.com/siyuan-note/siyuan/issues/9923
-			newNodeID := util.TimeFromID(n.ID) + "-" + gulu.Rand.String(7)
+			newNodeID := util.TimeFromID(n.ID) + "-" + util.RandString(7)
 			blockIDs[n.ID] = newNodeID
 			oldNodeID := n.ID
 			n.ID = newNodeID
 			n.SetIALAttr("id", newNodeID)
 
 			// 重新指向数据库属性值
-			ial := parse.IAL2Map(n.KramdownIAL)
-			for k, _ := range ial {
-				if strings.HasPrefix(k, av.NodeAttrNameAvs) {
+			for _, kv := range n.KramdownIAL {
+				if 2 > len(kv) {
+					continue
+				}
+				if strings.HasPrefix(kv[0], av.NodeAttrNameAvs) {
 					avBlockIDs[oldNodeID] = newNodeID
 				}
 			}

+ 18 - 0
kernel/util/misc.go

@@ -18,13 +18,31 @@ package util
 
 import (
 	"bytes"
+	"math/rand"
 	"strconv"
 	"strings"
+	"time"
 	"unicode"
 
 	"github.com/88250/lute/html"
 )
 
+func init() {
+	rand.Seed(time.Now().UTC().UnixNano())
+}
+
+var (
+	letter = []rune("abcdefghijklmnopqrstuvwxyz0123456789")
+)
+
+func RandString(length int) string {
+	b := make([]rune, length)
+	for i := range b {
+		b[i] = letter[rand.Intn(len(letter))]
+	}
+	return string(b)
+}
+
 // InsertElem inserts value at index into a.
 // 0 <= index <= len(s)
 func InsertElem[T any](s []T, index int, value T) []T {