From c93b1efbae3717e968473e6ea175bfdedae9fa19 Mon Sep 17 00:00:00 2001 From: Steven Date: Wed, 10 Apr 2024 20:05:17 +0800 Subject: [PATCH] chore: update workspace setting store --- proto/gen/store/README.md | 21 +- proto/gen/store/workspace_setting.pb.go | 223 +++++++++++++----- proto/store/workspace_setting.proto | 12 +- .../route/api/v2/workspace_setting_service.go | 6 +- store/db/mysql/workspace_setting.go | 4 +- store/db/postgres/workspace_setting.go | 4 +- store/db/sqlite/workspace_setting.go | 4 +- store/migrator.go | 2 +- store/workspace_setting.go | 2 +- test/store/workspace_setting_test.go | 4 +- 10 files changed, 210 insertions(+), 72 deletions(-) diff --git a/proto/gen/store/README.md b/proto/gen/store/README.md index e8a4257e..ac67906f 100644 --- a/proto/gen/store/README.md +++ b/proto/gen/store/README.md @@ -38,6 +38,7 @@ - [store/workspace_setting.proto](#store_workspace_setting-proto) - [WorkspaceGeneralSetting](#memos-store-WorkspaceGeneralSetting) + - [WorkspaceMemoRelatedSetting](#memos-store-WorkspaceMemoRelatedSetting) - [WorkspaceSetting](#memos-store-WorkspaceSetting) - [WorkspaceSettingKey](#memos-store-WorkspaceSettingKey) @@ -457,6 +458,22 @@ + + +### WorkspaceMemoRelatedSetting + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| disallow_public_visible | [bool](#bool) | | disallow_public_share disallows set memo as public visible. | +| display_with_update_time | [bool](#bool) | | display_with_update_time orders and displays memo with update time. | + + + + + + ### WorkspaceSetting @@ -466,7 +483,8 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | key | [WorkspaceSettingKey](#memos-store-WorkspaceSettingKey) | | | -| general | [WorkspaceGeneralSetting](#memos-store-WorkspaceGeneralSetting) | | | +| general_setting | [WorkspaceGeneralSetting](#memos-store-WorkspaceGeneralSetting) | | | +| memo_related_setting | [WorkspaceMemoRelatedSetting](#memos-store-WorkspaceMemoRelatedSetting) | | | @@ -484,6 +502,7 @@ | ---- | ------ | ----------- | | WORKSPACE_SETTING_KEY_UNSPECIFIED | 0 | | | WORKSPACE_SETTING_GENERAL | 1 | WORKSPACE_SETTING_GENERAL is the key for general settings. | +| WORKSPACE_SETTING_MEMO_RELATED | 2 | WORKSPACE_SETTING_MEMO_RELATED is the key for memo related settings. | diff --git a/proto/gen/store/workspace_setting.pb.go b/proto/gen/store/workspace_setting.pb.go index be1c79c3..1e467dd0 100644 --- a/proto/gen/store/workspace_setting.pb.go +++ b/proto/gen/store/workspace_setting.pb.go @@ -26,6 +26,8 @@ const ( WorkspaceSettingKey_WORKSPACE_SETTING_KEY_UNSPECIFIED WorkspaceSettingKey = 0 // WORKSPACE_SETTING_GENERAL is the key for general settings. WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL WorkspaceSettingKey = 1 + // WORKSPACE_SETTING_MEMO_RELATED is the key for memo related settings. + WorkspaceSettingKey_WORKSPACE_SETTING_MEMO_RELATED WorkspaceSettingKey = 2 ) // Enum value maps for WorkspaceSettingKey. @@ -33,10 +35,12 @@ var ( WorkspaceSettingKey_name = map[int32]string{ 0: "WORKSPACE_SETTING_KEY_UNSPECIFIED", 1: "WORKSPACE_SETTING_GENERAL", + 2: "WORKSPACE_SETTING_MEMO_RELATED", } WorkspaceSettingKey_value = map[string]int32{ "WORKSPACE_SETTING_KEY_UNSPECIFIED": 0, "WORKSPACE_SETTING_GENERAL": 1, + "WORKSPACE_SETTING_MEMO_RELATED": 2, } ) @@ -75,7 +79,8 @@ type WorkspaceSetting struct { Key WorkspaceSettingKey `protobuf:"varint,1,opt,name=key,proto3,enum=memos.store.WorkspaceSettingKey" json:"key,omitempty"` // Types that are assignable to Value: // - // *WorkspaceSetting_General + // *WorkspaceSetting_GeneralSetting + // *WorkspaceSetting_MemoRelatedSetting Value isWorkspaceSetting_Value `protobuf_oneof:"value"` } @@ -125,9 +130,16 @@ func (m *WorkspaceSetting) GetValue() isWorkspaceSetting_Value { return nil } -func (x *WorkspaceSetting) GetGeneral() *WorkspaceGeneralSetting { - if x, ok := x.GetValue().(*WorkspaceSetting_General); ok { - return x.General +func (x *WorkspaceSetting) GetGeneralSetting() *WorkspaceGeneralSetting { + if x, ok := x.GetValue().(*WorkspaceSetting_GeneralSetting); ok { + return x.GeneralSetting + } + return nil +} + +func (x *WorkspaceSetting) GetMemoRelatedSetting() *WorkspaceMemoRelatedSetting { + if x, ok := x.GetValue().(*WorkspaceSetting_MemoRelatedSetting); ok { + return x.MemoRelatedSetting } return nil } @@ -136,11 +148,17 @@ type isWorkspaceSetting_Value interface { isWorkspaceSetting_Value() } -type WorkspaceSetting_General struct { - General *WorkspaceGeneralSetting `protobuf:"bytes,2,opt,name=general,proto3,oneof"` +type WorkspaceSetting_GeneralSetting struct { + GeneralSetting *WorkspaceGeneralSetting `protobuf:"bytes,2,opt,name=general_setting,json=generalSetting,proto3,oneof"` } -func (*WorkspaceSetting_General) isWorkspaceSetting_Value() {} +type WorkspaceSetting_MemoRelatedSetting struct { + MemoRelatedSetting *WorkspaceMemoRelatedSetting `protobuf:"bytes,3,opt,name=memo_related_setting,json=memoRelatedSetting,proto3,oneof"` +} + +func (*WorkspaceSetting_GeneralSetting) isWorkspaceSetting_Value() {} + +func (*WorkspaceSetting_MemoRelatedSetting) isWorkspaceSetting_Value() {} type WorkspaceGeneralSetting struct { state protoimpl.MessageState @@ -226,53 +244,129 @@ func (x *WorkspaceGeneralSetting) GetAdditionalStyle() string { return "" } +type WorkspaceMemoRelatedSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // disallow_public_share disallows set memo as public visible. + DisallowPublicVisible bool `protobuf:"varint,1,opt,name=disallow_public_visible,json=disallowPublicVisible,proto3" json:"disallow_public_visible,omitempty"` + // display_with_update_time orders and displays memo with update time. + DisplayWithUpdateTime bool `protobuf:"varint,2,opt,name=display_with_update_time,json=displayWithUpdateTime,proto3" json:"display_with_update_time,omitempty"` +} + +func (x *WorkspaceMemoRelatedSetting) Reset() { + *x = WorkspaceMemoRelatedSetting{} + if protoimpl.UnsafeEnabled { + mi := &file_store_workspace_setting_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WorkspaceMemoRelatedSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkspaceMemoRelatedSetting) ProtoMessage() {} + +func (x *WorkspaceMemoRelatedSetting) ProtoReflect() protoreflect.Message { + mi := &file_store_workspace_setting_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkspaceMemoRelatedSetting.ProtoReflect.Descriptor instead. +func (*WorkspaceMemoRelatedSetting) Descriptor() ([]byte, []int) { + return file_store_workspace_setting_proto_rawDescGZIP(), []int{2} +} + +func (x *WorkspaceMemoRelatedSetting) GetDisallowPublicVisible() bool { + if x != nil { + return x.DisallowPublicVisible + } + return false +} + +func (x *WorkspaceMemoRelatedSetting) GetDisplayWithUpdateTime() bool { + if x != nil { + return x.DisplayWithUpdateTime + } + return false +} + var File_store_workspace_setting_proto protoreflect.FileDescriptor var file_store_workspace_setting_proto_rawDesc = []byte{ 0x0a, 0x1d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x91, 0x01, 0x0a, + 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x07, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, - 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0xf5, 0x01, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, - 0x27, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x67, 0x6e, - 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, - 0x6f, 0x77, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x6f, - 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x69, 0x73, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x29, 0x0a, - 0x10, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x79, 0x6c, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x2a, 0x5b, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, - 0x25, 0x0a, 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, - 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, - 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x47, 0x45, 0x4e, 0x45, - 0x52, 0x41, 0x4c, 0x10, 0x01, 0x42, 0xa0, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x65, - 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x75, - 0x73, 0x65, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0xa2, 0x02, 0x03, - 0x4d, 0x53, 0x58, 0xaa, 0x02, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0xca, 0x02, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0xe2, - 0x02, 0x17, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, - 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4f, 0x0a, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, + 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x5c, 0x0a, 0x14, 0x6d, 0x65, 0x6d, 0x6f, 0x5f, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, + 0x52, 0x12, 0x6d, 0x65, 0x6d, 0x6f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf5, 0x01, + 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, + 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x2b, 0x0a, + 0x11, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x64, + 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x53, 0x74, 0x79, 0x6c, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x1b, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x64, 0x69, 0x73, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, + 0x18, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x15, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x2a, 0x7f, 0x0a, 0x13, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, + 0x21, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, + 0x4e, 0x47, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, + 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, + 0x4c, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, + 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x5f, 0x52, 0x45, + 0x4c, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x42, 0xa0, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, + 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x15, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x75, 0x73, 0x65, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0xa2, + 0x02, 0x03, 0x4d, 0x53, 0x58, 0xaa, 0x02, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0xca, 0x02, 0x0b, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0xe2, 0x02, 0x17, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0c, 0x4d, 0x65, + 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -288,20 +382,22 @@ func file_store_workspace_setting_proto_rawDescGZIP() []byte { } var file_store_workspace_setting_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_store_workspace_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_store_workspace_setting_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_store_workspace_setting_proto_goTypes = []interface{}{ - (WorkspaceSettingKey)(0), // 0: memos.store.WorkspaceSettingKey - (*WorkspaceSetting)(nil), // 1: memos.store.WorkspaceSetting - (*WorkspaceGeneralSetting)(nil), // 2: memos.store.WorkspaceGeneralSetting + (WorkspaceSettingKey)(0), // 0: memos.store.WorkspaceSettingKey + (*WorkspaceSetting)(nil), // 1: memos.store.WorkspaceSetting + (*WorkspaceGeneralSetting)(nil), // 2: memos.store.WorkspaceGeneralSetting + (*WorkspaceMemoRelatedSetting)(nil), // 3: memos.store.WorkspaceMemoRelatedSetting } var file_store_workspace_setting_proto_depIdxs = []int32{ 0, // 0: memos.store.WorkspaceSetting.key:type_name -> memos.store.WorkspaceSettingKey - 2, // 1: memos.store.WorkspaceSetting.general:type_name -> memos.store.WorkspaceGeneralSetting - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name + 2, // 1: memos.store.WorkspaceSetting.general_setting:type_name -> memos.store.WorkspaceGeneralSetting + 3, // 2: memos.store.WorkspaceSetting.memo_related_setting:type_name -> memos.store.WorkspaceMemoRelatedSetting + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_store_workspace_setting_proto_init() } @@ -334,9 +430,22 @@ func file_store_workspace_setting_proto_init() { return nil } } + file_store_workspace_setting_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WorkspaceMemoRelatedSetting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_store_workspace_setting_proto_msgTypes[0].OneofWrappers = []interface{}{ - (*WorkspaceSetting_General)(nil), + (*WorkspaceSetting_GeneralSetting)(nil), + (*WorkspaceSetting_MemoRelatedSetting)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -344,7 +453,7 @@ func file_store_workspace_setting_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_store_workspace_setting_proto_rawDesc, NumEnums: 1, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/store/workspace_setting.proto b/proto/store/workspace_setting.proto index 8d93d9a5..5320d2ef 100644 --- a/proto/store/workspace_setting.proto +++ b/proto/store/workspace_setting.proto @@ -8,12 +8,15 @@ enum WorkspaceSettingKey { WORKSPACE_SETTING_KEY_UNSPECIFIED = 0; // WORKSPACE_SETTING_GENERAL is the key for general settings. WORKSPACE_SETTING_GENERAL = 1; + // WORKSPACE_SETTING_MEMO_RELATED is the key for memo related settings. + WORKSPACE_SETTING_MEMO_RELATED = 2; } message WorkspaceSetting { WorkspaceSettingKey key = 1; oneof value { - WorkspaceGeneralSetting general = 2; + WorkspaceGeneralSetting general_setting = 2; + WorkspaceMemoRelatedSetting memo_related_setting = 3; } } @@ -29,3 +32,10 @@ message WorkspaceGeneralSetting { // additional_style is the additional style. string additional_style = 6; } + +message WorkspaceMemoRelatedSetting { + // disallow_public_share disallows set memo as public visible. + bool disallow_public_visible = 1; + // display_with_update_time orders and displays memo with update time. + bool display_with_update_time = 2; +} diff --git a/server/route/api/v2/workspace_setting_service.go b/server/route/api/v2/workspace_setting_service.go index 44a38d8d..310ed954 100644 --- a/server/route/api/v2/workspace_setting_service.go +++ b/server/route/api/v2/workspace_setting_service.go @@ -57,7 +57,7 @@ func convertWorkspaceSettingFromStore(setting *storepb.WorkspaceSetting) *apiv2p return &apiv2pb.WorkspaceSetting{ Name: fmt.Sprintf("%s%s", WorkspaceSettingNamePrefix, setting.Key.String()), Value: &apiv2pb.WorkspaceSetting_GeneralSetting{ - GeneralSetting: convertWorkspaceGeneralSettingFromStore(setting.GetGeneral()), + GeneralSetting: convertWorkspaceGeneralSettingFromStore(setting.GetGeneralSetting()), }, } } @@ -66,8 +66,8 @@ func convertWorkspaceSettingToStore(setting *apiv2pb.WorkspaceSetting) *storepb. settingKeyString, _ := ExtractWorkspaceSettingKeyFromName(setting.Name) return &storepb.WorkspaceSetting{ Key: storepb.WorkspaceSettingKey(storepb.WorkspaceSettingKey_value[settingKeyString]), - Value: &storepb.WorkspaceSetting_General{ - General: convertWorkspaceGeneralSettingToStore(setting.GetGeneralSetting()), + Value: &storepb.WorkspaceSetting_GeneralSetting{ + GeneralSetting: convertWorkspaceGeneralSettingToStore(setting.GetGeneralSetting()), }, } } diff --git a/store/db/mysql/workspace_setting.go b/store/db/mysql/workspace_setting.go index bcac51e2..2f986583 100644 --- a/store/db/mysql/workspace_setting.go +++ b/store/db/mysql/workspace_setting.go @@ -74,7 +74,7 @@ func (d *DB) UpsertWorkspaceSettingV1(ctx context.Context, upsert *storepb.Works ON DUPLICATE KEY UPDATE value = ?` var valueString string if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL { - valueBytes, err := protojson.Marshal(upsert.GetGeneral()) + valueBytes, err := protojson.Marshal(upsert.GetGeneralSetting()) if err != nil { return nil, err } @@ -116,7 +116,7 @@ func (d *DB) ListWorkspaceSettingsV1(ctx context.Context, find *store.FindWorksp if err := protojson.Unmarshal([]byte(valueString), generalSetting); err != nil { return nil, err } - workspaceSetting.Value = &storepb.WorkspaceSetting_General{General: generalSetting} + workspaceSetting.Value = &storepb.WorkspaceSetting_GeneralSetting{GeneralSetting: generalSetting} } else { // Skip unknown workspace setting key. continue diff --git a/store/db/postgres/workspace_setting.go b/store/db/postgres/workspace_setting.go index c38778d8..45d24e4f 100644 --- a/store/db/postgres/workspace_setting.go +++ b/store/db/postgres/workspace_setting.go @@ -84,7 +84,7 @@ func (d *DB) UpsertWorkspaceSettingV1(ctx context.Context, upsert *storepb.Works SET value = EXCLUDED.value` var valueString string if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL { - valueBytes, err := protojson.Marshal(upsert.GetGeneral()) + valueBytes, err := protojson.Marshal(upsert.GetGeneralSetting()) if err != nil { return nil, err } @@ -126,7 +126,7 @@ func (d *DB) ListWorkspaceSettingsV1(ctx context.Context, find *store.FindWorksp if err := protojson.Unmarshal([]byte(valueString), generalSetting); err != nil { return nil, err } - workspaceSetting.Value = &storepb.WorkspaceSetting_General{General: generalSetting} + workspaceSetting.Value = &storepb.WorkspaceSetting_GeneralSetting{GeneralSetting: generalSetting} } else { // Skip unknown workspace setting key. continue diff --git a/store/db/sqlite/workspace_setting.go b/store/db/sqlite/workspace_setting.go index a55eb014..3854e160 100644 --- a/store/db/sqlite/workspace_setting.go +++ b/store/db/sqlite/workspace_setting.go @@ -84,7 +84,7 @@ func (d *DB) UpsertWorkspaceSettingV1(ctx context.Context, upsert *storepb.Works SET value = EXCLUDED.value` var valueString string if upsert.Key == storepb.WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL { - valueBytes, err := protojson.Marshal(upsert.GetGeneral()) + valueBytes, err := protojson.Marshal(upsert.GetGeneralSetting()) if err != nil { return nil, err } @@ -125,7 +125,7 @@ func (d *DB) ListWorkspaceSettingsV1(ctx context.Context, find *store.FindWorksp if err := protojson.Unmarshal([]byte(valueString), generalSetting); err != nil { return nil, err } - workspaceSetting.Value = &storepb.WorkspaceSetting_General{General: generalSetting} + workspaceSetting.Value = &storepb.WorkspaceSetting_GeneralSetting{GeneralSetting: generalSetting} } else { // Skip unknown workspace setting key. continue diff --git a/store/migrator.go b/store/migrator.go index fca734f3..2e2a37ed 100644 --- a/store/migrator.go +++ b/store/migrator.go @@ -52,7 +52,7 @@ func (s *Store) MigrateWorkspaceSetting(ctx context.Context) error { if _, err := s.UpsertWorkspaceSettingV1(ctx, &storepb.WorkspaceSetting{ Key: storepb.WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL, - Value: &storepb.WorkspaceSetting_General{General: workspaceGeneralSetting}, + Value: &storepb.WorkspaceSetting_GeneralSetting{GeneralSetting: workspaceGeneralSetting}, }); err != nil { return errors.Wrap(err, "failed to upsert workspace general setting") } diff --git a/store/workspace_setting.go b/store/workspace_setting.go index 5747875e..7e77e309 100644 --- a/store/workspace_setting.go +++ b/store/workspace_setting.go @@ -123,7 +123,7 @@ func (s *Store) GetWorkspaceGeneralSetting(ctx context.Context) (*storepb.Worksp workspaceGeneralSetting := &storepb.WorkspaceGeneralSetting{} if workspaceSetting != nil { - workspaceGeneralSetting = workspaceSetting.GetGeneral() + workspaceGeneralSetting = workspaceSetting.GetGeneralSetting() } return workspaceGeneralSetting, nil } diff --git a/test/store/workspace_setting_test.go b/test/store/workspace_setting_test.go index d791c61d..0a241f92 100644 --- a/test/store/workspace_setting_test.go +++ b/test/store/workspace_setting_test.go @@ -15,8 +15,8 @@ func TestWorkspaceSettingV1Store(t *testing.T) { ts := NewTestingStore(ctx, t) workspaceSetting, err := ts.UpsertWorkspaceSettingV1(ctx, &storepb.WorkspaceSetting{ Key: storepb.WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL, - Value: &storepb.WorkspaceSetting_General{ - General: &storepb.WorkspaceGeneralSetting{ + Value: &storepb.WorkspaceSetting_GeneralSetting{ + GeneralSetting: &storepb.WorkspaceGeneralSetting{ DisallowSignup: true, }, },