From 398fdf164edfaaec2e06e601cefa24de2de05030 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 23 Apr 2024 14:44:52 +0800 Subject: [PATCH 1/3] :bookmark: Release v3.0.11 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7e0428881..0526f68c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM node:21 as NODE_BUILD WORKDIR /go/src/github.com/siyuan-note/siyuan/ ADD . /go/src/github.com/siyuan-note/siyuan/ -RUN cd app && npm install -g pnpm && pnpm install && pnpm run build +RUN cd app && npm install -g pnpm@9.0.2 && pnpm install && pnpm run build FROM golang:alpine as GO_BUILD WORKDIR /go/src/github.com/siyuan-note/siyuan/ From 25ac2c0b19adf571e9a301fc6bbbe442102246f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yingyi=20/=20=E9=A2=96=E9=80=B8?= <49649786+Zuoqiu-Yingyi@users.noreply.github.com> Date: Tue, 23 Apr 2024 17:06:39 +0800 Subject: [PATCH 2/3] :art: Support for H2C (HTTP/2 over cleartext) (#11116) --- kernel/server/serve.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/server/serve.go b/kernel/server/serve.go index acb9e8561..77d7e98b3 100644 --- a/kernel/server/serve.go +++ b/kernel/server/serve.go @@ -50,6 +50,7 @@ var cookieStore = cookie.NewStore([]byte("ATN51UlxVq1Gcvdf")) func Serve(fastMode bool) { gin.SetMode(gin.ReleaseMode) ginServer := gin.New() + ginServer.UseH2C = true ginServer.MaxMultipartMemory = 1024 * 1024 * 32 // 插入较大的资源文件时内存占用较大 https://github.com/siyuan-note/siyuan/issues/5023 ginServer.Use( model.ControlConcurrency, // 请求串行化 Concurrency control when requesting the kernel API https://github.com/siyuan-note/siyuan/issues/9939 @@ -135,7 +136,7 @@ func Serve(fastMode bool) { go util.HookUILoaded() - if err = http.Serve(ln, ginServer); nil != err { + if err = http.Serve(ln, ginServer.Handler()); nil != err { if !fastMode { logging.LogErrorf("boot kernel failed: %s", err) os.Exit(logging.ExitCodeUnavailablePort) From a4c05c25b44afc0f8b55a5bd9f5505e08361b104 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Tue, 23 Apr 2024 18:22:51 +0800 Subject: [PATCH 3/3] :art: The database relation fields follow the change after the primary key field is changed https://github.com/siyuan-note/siyuan/issues/11117 --- kernel/model/attribute_view.go | 44 ++++++++++++++++++++++++++++++++++ kernel/util/misc.go | 15 ++++++++++++ 2 files changed, 59 insertions(+) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index c0446d980..9a438d618 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -1343,6 +1343,8 @@ func unbindAttributeViewBlock(operation *Operation, tx *Transaction) (err error) if nil != value.Block { value.Block.ID = operation.NextID } + + replaceRelationAvValues(operation.AvID, operation.ID, operation.NextID) } } @@ -3022,6 +3024,8 @@ func replaceAttributeViewBlock(operation *Operation, tx *Transaction) (err error if av.KeyTypeBlock == value.Type && !operation.IsDetached { bindBlockAv(tx, operation.AvID, operation.NextID) + + replaceRelationAvValues(operation.AvID, operation.PreviousID, operation.NextID) } } } @@ -3537,3 +3541,43 @@ func getAttrViewName(attrView *av.AttributeView) string { } return ret } + +func replaceRelationAvValues(avID, previousID, nextID string) { + // The database relation fields follow the change after the primary key field is changed https://github.com/siyuan-note/siyuan/issues/11117 + + srcAvIDs := av.GetSrcAvIDs(avID) + for _, srcAvID := range srcAvIDs { + srcAv, parseErr := av.ParseAttributeView(srcAvID) + changed := false + if nil != parseErr { + continue + } + + for _, srcKeyValues := range srcAv.KeyValues { + if av.KeyTypeRelation != srcKeyValues.Key.Type { + continue + } + + if avID != srcKeyValues.Key.Relation.AvID { + continue + } + + for _, srcValue := range srcKeyValues.Values { + if nil == srcValue.Relation { + continue + } + + srcAvChanged := false + srcValue.Relation.BlockIDs, srcAvChanged = util.ReplaceStr(srcValue.Relation.BlockIDs, previousID, nextID) + if srcAvChanged { + changed = true + } + } + } + + if changed { + av.SaveAttributeView(srcAv) + util.PushReloadAttrView(srcAvID) + } + } +} diff --git a/kernel/util/misc.go b/kernel/util/misc.go index 3a55688c5..84295a52f 100644 --- a/kernel/util/misc.go +++ b/kernel/util/misc.go @@ -135,3 +135,18 @@ func ContainsSubStr(s string, subStrs []string) bool { } return false } + +func ReplaceStr(strs []string, old, new string) (ret []string, changed bool) { + if old == new { + return strs, false + } + + for i, v := range strs { + if v == old { + strs[i] = new + changed = true + } + } + ret = strs + return +}