diff --git a/proto/api/v2/workspace_setting_service.proto b/proto/api/v2/workspace_setting_service.proto index 3d82175d..b69c52d3 100644 --- a/proto/api/v2/workspace_setting_service.proto +++ b/proto/api/v2/workspace_setting_service.proto @@ -48,8 +48,10 @@ message WorkspaceSetting { // Format: settings/{setting} string name = 1; oneof value { - // general_setting is the general setting of workspace. WorkspaceGeneralSetting general_setting = 2; + WorkspaceStorageSetting storage_setting = 3; + WorkspaceMemoRelatedSetting memo_related_setting = 4; + WorkspaceTelegramIntegrationSetting telegram_integration_setting = 5; } } @@ -65,3 +67,35 @@ message WorkspaceGeneralSetting { // additional_style is the additional style. string additional_style = 6; } + +message WorkspaceStorageSetting { + // storage_type is the storage type. + StorageType storage_type = 1; + // The local storage path for STORAGE_TYPE_LOCAL. + // e.g. assets/{timestamp}_{filename} + string local_storage_path = 2; + // The max upload size in megabytes. + int64 upload_size_limit_mb = 3; + + enum StorageType { + STORAGE_TYPE_UNSPECIFIED = 0; + // STORAGE_TYPE_DATABASE is the database storage type. + STORAGE_TYPE_DATABASE = 1; + // STORAGE_TYPE_LOCAL is the local storage type. + STORAGE_TYPE_LOCAL = 2; + // STORAGE_TYPE_EXTERNAL is the external storage type. + STORAGE_TYPE_EXTERNAL = 3; + } +} + +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; +} + +message WorkspaceTelegramIntegrationSetting { + // bot_token is the telegram bot token. + string bot_token = 1; +} diff --git a/proto/gen/api/v2/README.md b/proto/gen/api/v2/README.md index c4b862fd..2dd08e01 100644 --- a/proto/gen/api/v2/README.md +++ b/proto/gen/api/v2/README.md @@ -218,7 +218,12 @@ - [SetWorkspaceSettingRequest](#memos-api-v2-SetWorkspaceSettingRequest) - [SetWorkspaceSettingResponse](#memos-api-v2-SetWorkspaceSettingResponse) - [WorkspaceGeneralSetting](#memos-api-v2-WorkspaceGeneralSetting) + - [WorkspaceMemoRelatedSetting](#memos-api-v2-WorkspaceMemoRelatedSetting) - [WorkspaceSetting](#memos-api-v2-WorkspaceSetting) + - [WorkspaceStorageSetting](#memos-api-v2-WorkspaceStorageSetting) + - [WorkspaceTelegramIntegrationSetting](#memos-api-v2-WorkspaceTelegramIntegrationSetting) + + - [WorkspaceStorageSetting.StorageType](#memos-api-v2-WorkspaceStorageSetting-StorageType) - [WorkspaceSettingService](#memos-api-v2-WorkspaceSettingService) @@ -2992,6 +2997,22 @@ Used internally for obfuscating the page token. + + +### 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 @@ -3001,7 +3022,42 @@ Used internally for obfuscating the page token. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | name | [string](#string) | | name is the name of the setting. Format: settings/{setting} | -| general_setting | [WorkspaceGeneralSetting](#memos-api-v2-WorkspaceGeneralSetting) | | general_setting is the general setting of workspace. | +| general_setting | [WorkspaceGeneralSetting](#memos-api-v2-WorkspaceGeneralSetting) | | | +| storage_setting | [WorkspaceStorageSetting](#memos-api-v2-WorkspaceStorageSetting) | | | +| memo_related_setting | [WorkspaceMemoRelatedSetting](#memos-api-v2-WorkspaceMemoRelatedSetting) | | | +| telegram_integration_setting | [WorkspaceTelegramIntegrationSetting](#memos-api-v2-WorkspaceTelegramIntegrationSetting) | | | + + + + + + + + +### WorkspaceStorageSetting + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| storage_type | [WorkspaceStorageSetting.StorageType](#memos-api-v2-WorkspaceStorageSetting-StorageType) | | storage_type is the storage type. | +| local_storage_path | [string](#string) | | The local storage path for STORAGE_TYPE_LOCAL. e.g. assets/{timestamp}_{filename} | +| upload_size_limit_mb | [int64](#int64) | | The max upload size in megabytes. | + + + + + + + + +### WorkspaceTelegramIntegrationSetting + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| bot_token | [string](#string) | | bot_token is the telegram bot token. | @@ -3009,6 +3065,20 @@ Used internally for obfuscating the page token. + + + +### WorkspaceStorageSetting.StorageType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| STORAGE_TYPE_UNSPECIFIED | 0 | | +| STORAGE_TYPE_DATABASE | 1 | STORAGE_TYPE_DATABASE is the database storage type. | +| STORAGE_TYPE_LOCAL | 2 | STORAGE_TYPE_LOCAL is the local storage type. | +| STORAGE_TYPE_EXTERNAL | 3 | STORAGE_TYPE_EXTERNAL is the external storage type. | + + diff --git a/proto/gen/api/v2/workspace_setting_service.pb.go b/proto/gen/api/v2/workspace_setting_service.pb.go index 1431cfbe..75dd86d0 100644 --- a/proto/gen/api/v2/workspace_setting_service.pb.go +++ b/proto/gen/api/v2/workspace_setting_service.pb.go @@ -21,6 +21,61 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type WorkspaceStorageSetting_StorageType int32 + +const ( + WorkspaceStorageSetting_STORAGE_TYPE_UNSPECIFIED WorkspaceStorageSetting_StorageType = 0 + // STORAGE_TYPE_DATABASE is the database storage type. + WorkspaceStorageSetting_STORAGE_TYPE_DATABASE WorkspaceStorageSetting_StorageType = 1 + // STORAGE_TYPE_LOCAL is the local storage type. + WorkspaceStorageSetting_STORAGE_TYPE_LOCAL WorkspaceStorageSetting_StorageType = 2 + // STORAGE_TYPE_EXTERNAL is the external storage type. + WorkspaceStorageSetting_STORAGE_TYPE_EXTERNAL WorkspaceStorageSetting_StorageType = 3 +) + +// Enum value maps for WorkspaceStorageSetting_StorageType. +var ( + WorkspaceStorageSetting_StorageType_name = map[int32]string{ + 0: "STORAGE_TYPE_UNSPECIFIED", + 1: "STORAGE_TYPE_DATABASE", + 2: "STORAGE_TYPE_LOCAL", + 3: "STORAGE_TYPE_EXTERNAL", + } + WorkspaceStorageSetting_StorageType_value = map[string]int32{ + "STORAGE_TYPE_UNSPECIFIED": 0, + "STORAGE_TYPE_DATABASE": 1, + "STORAGE_TYPE_LOCAL": 2, + "STORAGE_TYPE_EXTERNAL": 3, + } +) + +func (x WorkspaceStorageSetting_StorageType) Enum() *WorkspaceStorageSetting_StorageType { + p := new(WorkspaceStorageSetting_StorageType) + *p = x + return p +} + +func (x WorkspaceStorageSetting_StorageType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WorkspaceStorageSetting_StorageType) Descriptor() protoreflect.EnumDescriptor { + return file_api_v2_workspace_setting_service_proto_enumTypes[0].Descriptor() +} + +func (WorkspaceStorageSetting_StorageType) Type() protoreflect.EnumType { + return &file_api_v2_workspace_setting_service_proto_enumTypes[0] +} + +func (x WorkspaceStorageSetting_StorageType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WorkspaceStorageSetting_StorageType.Descriptor instead. +func (WorkspaceStorageSetting_StorageType) EnumDescriptor() ([]byte, []int) { + return file_api_v2_workspace_setting_service_proto_rawDescGZIP(), []int{6, 0} +} + type GetWorkspaceSettingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -223,6 +278,9 @@ type WorkspaceSetting struct { // Types that are assignable to Value: // // *WorkspaceSetting_GeneralSetting + // *WorkspaceSetting_StorageSetting + // *WorkspaceSetting_MemoRelatedSetting + // *WorkspaceSetting_TelegramIntegrationSetting Value isWorkspaceSetting_Value `protobuf_oneof:"value"` } @@ -279,17 +337,55 @@ func (x *WorkspaceSetting) GetGeneralSetting() *WorkspaceGeneralSetting { return nil } +func (x *WorkspaceSetting) GetStorageSetting() *WorkspaceStorageSetting { + if x, ok := x.GetValue().(*WorkspaceSetting_StorageSetting); ok { + return x.StorageSetting + } + return nil +} + +func (x *WorkspaceSetting) GetMemoRelatedSetting() *WorkspaceMemoRelatedSetting { + if x, ok := x.GetValue().(*WorkspaceSetting_MemoRelatedSetting); ok { + return x.MemoRelatedSetting + } + return nil +} + +func (x *WorkspaceSetting) GetTelegramIntegrationSetting() *WorkspaceTelegramIntegrationSetting { + if x, ok := x.GetValue().(*WorkspaceSetting_TelegramIntegrationSetting); ok { + return x.TelegramIntegrationSetting + } + return nil +} + type isWorkspaceSetting_Value interface { isWorkspaceSetting_Value() } type WorkspaceSetting_GeneralSetting struct { - // general_setting is the general setting of workspace. GeneralSetting *WorkspaceGeneralSetting `protobuf:"bytes,2,opt,name=general_setting,json=generalSetting,proto3,oneof"` } +type WorkspaceSetting_StorageSetting struct { + StorageSetting *WorkspaceStorageSetting `protobuf:"bytes,3,opt,name=storage_setting,json=storageSetting,proto3,oneof"` +} + +type WorkspaceSetting_MemoRelatedSetting struct { + MemoRelatedSetting *WorkspaceMemoRelatedSetting `protobuf:"bytes,4,opt,name=memo_related_setting,json=memoRelatedSetting,proto3,oneof"` +} + +type WorkspaceSetting_TelegramIntegrationSetting struct { + TelegramIntegrationSetting *WorkspaceTelegramIntegrationSetting `protobuf:"bytes,5,opt,name=telegram_integration_setting,json=telegramIntegrationSetting,proto3,oneof"` +} + func (*WorkspaceSetting_GeneralSetting) isWorkspaceSetting_Value() {} +func (*WorkspaceSetting_StorageSetting) isWorkspaceSetting_Value() {} + +func (*WorkspaceSetting_MemoRelatedSetting) isWorkspaceSetting_Value() {} + +func (*WorkspaceSetting_TelegramIntegrationSetting) isWorkspaceSetting_Value() {} + type WorkspaceGeneralSetting struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -374,6 +470,178 @@ func (x *WorkspaceGeneralSetting) GetAdditionalStyle() string { return "" } +type WorkspaceStorageSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // storage_type is the storage type. + StorageType WorkspaceStorageSetting_StorageType `protobuf:"varint,1,opt,name=storage_type,json=storageType,proto3,enum=memos.api.v2.WorkspaceStorageSetting_StorageType" json:"storage_type,omitempty"` + // The local storage path for STORAGE_TYPE_LOCAL. + // e.g. assets/{timestamp}_{filename} + LocalStoragePath string `protobuf:"bytes,2,opt,name=local_storage_path,json=localStoragePath,proto3" json:"local_storage_path,omitempty"` + // The max upload size in megabytes. + UploadSizeLimitMb int64 `protobuf:"varint,3,opt,name=upload_size_limit_mb,json=uploadSizeLimitMb,proto3" json:"upload_size_limit_mb,omitempty"` +} + +func (x *WorkspaceStorageSetting) Reset() { + *x = WorkspaceStorageSetting{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v2_workspace_setting_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WorkspaceStorageSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkspaceStorageSetting) ProtoMessage() {} + +func (x *WorkspaceStorageSetting) ProtoReflect() protoreflect.Message { + mi := &file_api_v2_workspace_setting_service_proto_msgTypes[6] + 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 WorkspaceStorageSetting.ProtoReflect.Descriptor instead. +func (*WorkspaceStorageSetting) Descriptor() ([]byte, []int) { + return file_api_v2_workspace_setting_service_proto_rawDescGZIP(), []int{6} +} + +func (x *WorkspaceStorageSetting) GetStorageType() WorkspaceStorageSetting_StorageType { + if x != nil { + return x.StorageType + } + return WorkspaceStorageSetting_STORAGE_TYPE_UNSPECIFIED +} + +func (x *WorkspaceStorageSetting) GetLocalStoragePath() string { + if x != nil { + return x.LocalStoragePath + } + return "" +} + +func (x *WorkspaceStorageSetting) GetUploadSizeLimitMb() int64 { + if x != nil { + return x.UploadSizeLimitMb + } + return 0 +} + +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_api_v2_workspace_setting_service_proto_msgTypes[7] + 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_api_v2_workspace_setting_service_proto_msgTypes[7] + 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_api_v2_workspace_setting_service_proto_rawDescGZIP(), []int{7} +} + +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 +} + +type WorkspaceTelegramIntegrationSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // bot_token is the telegram bot token. + BotToken string `protobuf:"bytes,1,opt,name=bot_token,json=botToken,proto3" json:"bot_token,omitempty"` +} + +func (x *WorkspaceTelegramIntegrationSetting) Reset() { + *x = WorkspaceTelegramIntegrationSetting{} + if protoimpl.UnsafeEnabled { + mi := &file_api_v2_workspace_setting_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WorkspaceTelegramIntegrationSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkspaceTelegramIntegrationSetting) ProtoMessage() {} + +func (x *WorkspaceTelegramIntegrationSetting) ProtoReflect() protoreflect.Message { + mi := &file_api_v2_workspace_setting_service_proto_msgTypes[8] + 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 WorkspaceTelegramIntegrationSetting.ProtoReflect.Descriptor instead. +func (*WorkspaceTelegramIntegrationSetting) Descriptor() ([]byte, []int) { + return file_api_v2_workspace_setting_service_proto_rawDescGZIP(), []int{8} +} + +func (x *WorkspaceTelegramIntegrationSetting) GetBotToken() string { + if x != nil { + return x.BotToken + } + return "" +} + var File_api_v2_workspace_setting_service_proto protoreflect.FileDescriptor var file_api_v2_workspace_setting_service_proto_rawDesc = []byte{ @@ -406,65 +674,118 @@ var file_api_v2_workspace_setting_service_proto_rawDesc = []byte{ 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, - 0x81, 0x01, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, + 0xa9, 0x03, 0x0a, 0x10, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x50, 0x0a, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 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, 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, 0x32, 0xef, 0x02, 0x0a, 0x17, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x9e, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, - 0x28, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, - 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x12, 0x28, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, - 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x65, 0x6d, - 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0xda, 0x41, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x32, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x2f, 0x7b, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x6e, 0x61, 0x6d, - 0x65, 0x3d, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x42, 0xb4, 0x01, - 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x32, 0x42, 0x1c, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x30, 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, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x3b, 0x61, - 0x70, 0x69, 0x76, 0x32, 0xa2, 0x02, 0x03, 0x4d, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x4d, 0x65, 0x6d, - 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, 0x56, 0x32, 0xca, 0x02, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, - 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32, 0xe2, 0x02, 0x18, 0x4d, 0x65, 0x6d, 0x6f, 0x73, - 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x69, - 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x61, 0x6c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x50, 0x0a, 0x0f, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x5d, 0x0a, 0x14, + 0x6d, 0x65, 0x6d, 0x6f, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x65, 0x6d, + 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 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, 0x12, 0x75, 0x0a, 0x1c, 0x74, + 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, + 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x1a, 0x74, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0xc9, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, + 0x54, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x50, + 0x61, 0x74, 0x68, 0x12, 0x2f, 0x0a, 0x14, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x4d, 0x62, 0x22, 0x79, 0x0a, 0x0b, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, + 0x41, 0x4c, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x03, 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, + 0x22, 0x42, 0x0a, 0x23, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x65, 0x6c, + 0x65, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0xef, 0x02, 0x0a, 0x17, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x9e, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x32, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0xda, + 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, + 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x2a, + 0x7d, 0x12, 0xb2, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, + 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, + 0xda, 0x41, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, + 0x3a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x32, 0x2b, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x32, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x7b, 0x73, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x42, 0xb4, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, + 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x32, 0x42, 0x1c, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x30, 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, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x32, 0x3b, 0x61, 0x70, 0x69, 0x76, 0x32, 0xa2, 0x02, 0x03, + 0x4d, 0x41, 0x58, 0xaa, 0x02, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x70, 0x69, 0x2e, + 0x56, 0x32, 0xca, 0x02, 0x0c, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, + 0x32, 0xe2, 0x02, 0x18, 0x4d, 0x65, 0x6d, 0x6f, 0x73, 0x5c, 0x41, 0x70, 0x69, 0x5c, 0x56, 0x32, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x4d, + 0x65, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x41, 0x70, 0x69, 0x3a, 0x3a, 0x56, 0x32, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -479,29 +800,38 @@ func file_api_v2_workspace_setting_service_proto_rawDescGZIP() []byte { return file_api_v2_workspace_setting_service_proto_rawDescData } -var file_api_v2_workspace_setting_service_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_api_v2_workspace_setting_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_api_v2_workspace_setting_service_proto_msgTypes = make([]protoimpl.MessageInfo, 9) var file_api_v2_workspace_setting_service_proto_goTypes = []interface{}{ - (*GetWorkspaceSettingRequest)(nil), // 0: memos.api.v2.GetWorkspaceSettingRequest - (*GetWorkspaceSettingResponse)(nil), // 1: memos.api.v2.GetWorkspaceSettingResponse - (*SetWorkspaceSettingRequest)(nil), // 2: memos.api.v2.SetWorkspaceSettingRequest - (*SetWorkspaceSettingResponse)(nil), // 3: memos.api.v2.SetWorkspaceSettingResponse - (*WorkspaceSetting)(nil), // 4: memos.api.v2.WorkspaceSetting - (*WorkspaceGeneralSetting)(nil), // 5: memos.api.v2.WorkspaceGeneralSetting + (WorkspaceStorageSetting_StorageType)(0), // 0: memos.api.v2.WorkspaceStorageSetting.StorageType + (*GetWorkspaceSettingRequest)(nil), // 1: memos.api.v2.GetWorkspaceSettingRequest + (*GetWorkspaceSettingResponse)(nil), // 2: memos.api.v2.GetWorkspaceSettingResponse + (*SetWorkspaceSettingRequest)(nil), // 3: memos.api.v2.SetWorkspaceSettingRequest + (*SetWorkspaceSettingResponse)(nil), // 4: memos.api.v2.SetWorkspaceSettingResponse + (*WorkspaceSetting)(nil), // 5: memos.api.v2.WorkspaceSetting + (*WorkspaceGeneralSetting)(nil), // 6: memos.api.v2.WorkspaceGeneralSetting + (*WorkspaceStorageSetting)(nil), // 7: memos.api.v2.WorkspaceStorageSetting + (*WorkspaceMemoRelatedSetting)(nil), // 8: memos.api.v2.WorkspaceMemoRelatedSetting + (*WorkspaceTelegramIntegrationSetting)(nil), // 9: memos.api.v2.WorkspaceTelegramIntegrationSetting } var file_api_v2_workspace_setting_service_proto_depIdxs = []int32{ - 4, // 0: memos.api.v2.GetWorkspaceSettingResponse.setting:type_name -> memos.api.v2.WorkspaceSetting - 4, // 1: memos.api.v2.SetWorkspaceSettingRequest.setting:type_name -> memos.api.v2.WorkspaceSetting - 4, // 2: memos.api.v2.SetWorkspaceSettingResponse.setting:type_name -> memos.api.v2.WorkspaceSetting - 5, // 3: memos.api.v2.WorkspaceSetting.general_setting:type_name -> memos.api.v2.WorkspaceGeneralSetting - 0, // 4: memos.api.v2.WorkspaceSettingService.GetWorkspaceSetting:input_type -> memos.api.v2.GetWorkspaceSettingRequest - 2, // 5: memos.api.v2.WorkspaceSettingService.SetWorkspaceSetting:input_type -> memos.api.v2.SetWorkspaceSettingRequest - 1, // 6: memos.api.v2.WorkspaceSettingService.GetWorkspaceSetting:output_type -> memos.api.v2.GetWorkspaceSettingResponse - 3, // 7: memos.api.v2.WorkspaceSettingService.SetWorkspaceSetting:output_type -> memos.api.v2.SetWorkspaceSettingResponse - 6, // [6:8] is the sub-list for method output_type - 4, // [4:6] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 5, // 0: memos.api.v2.GetWorkspaceSettingResponse.setting:type_name -> memos.api.v2.WorkspaceSetting + 5, // 1: memos.api.v2.SetWorkspaceSettingRequest.setting:type_name -> memos.api.v2.WorkspaceSetting + 5, // 2: memos.api.v2.SetWorkspaceSettingResponse.setting:type_name -> memos.api.v2.WorkspaceSetting + 6, // 3: memos.api.v2.WorkspaceSetting.general_setting:type_name -> memos.api.v2.WorkspaceGeneralSetting + 7, // 4: memos.api.v2.WorkspaceSetting.storage_setting:type_name -> memos.api.v2.WorkspaceStorageSetting + 8, // 5: memos.api.v2.WorkspaceSetting.memo_related_setting:type_name -> memos.api.v2.WorkspaceMemoRelatedSetting + 9, // 6: memos.api.v2.WorkspaceSetting.telegram_integration_setting:type_name -> memos.api.v2.WorkspaceTelegramIntegrationSetting + 0, // 7: memos.api.v2.WorkspaceStorageSetting.storage_type:type_name -> memos.api.v2.WorkspaceStorageSetting.StorageType + 1, // 8: memos.api.v2.WorkspaceSettingService.GetWorkspaceSetting:input_type -> memos.api.v2.GetWorkspaceSettingRequest + 3, // 9: memos.api.v2.WorkspaceSettingService.SetWorkspaceSetting:input_type -> memos.api.v2.SetWorkspaceSettingRequest + 2, // 10: memos.api.v2.WorkspaceSettingService.GetWorkspaceSetting:output_type -> memos.api.v2.GetWorkspaceSettingResponse + 4, // 11: memos.api.v2.WorkspaceSettingService.SetWorkspaceSetting:output_type -> memos.api.v2.SetWorkspaceSettingResponse + 10, // [10:12] is the sub-list for method output_type + 8, // [8:10] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_api_v2_workspace_setting_service_proto_init() } @@ -582,22 +912,62 @@ func file_api_v2_workspace_setting_service_proto_init() { return nil } } + file_api_v2_workspace_setting_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WorkspaceStorageSetting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_api_v2_workspace_setting_service_proto_msgTypes[7].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_api_v2_workspace_setting_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WorkspaceTelegramIntegrationSetting); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_api_v2_workspace_setting_service_proto_msgTypes[4].OneofWrappers = []interface{}{ (*WorkspaceSetting_GeneralSetting)(nil), + (*WorkspaceSetting_StorageSetting)(nil), + (*WorkspaceSetting_MemoRelatedSetting)(nil), + (*WorkspaceSetting_TelegramIntegrationSetting)(nil), } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_api_v2_workspace_setting_service_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, + NumEnums: 1, + NumMessages: 9, NumExtensions: 0, NumServices: 1, }, GoTypes: file_api_v2_workspace_setting_service_proto_goTypes, DependencyIndexes: file_api_v2_workspace_setting_service_proto_depIdxs, + EnumInfos: file_api_v2_workspace_setting_service_proto_enumTypes, MessageInfos: file_api_v2_workspace_setting_service_proto_msgTypes, }.Build() File_api_v2_workspace_setting_service_proto = out.File diff --git a/proto/gen/store/README.md b/proto/gen/store/README.md index bfe0bb85..ede36163 100644 --- a/proto/gen/store/README.md +++ b/proto/gen/store/README.md @@ -521,7 +521,7 @@ | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| telegram_bot_token | [string](#string) | | telegram_bot_token is the telegram bot token. | +| bot_token | [string](#string) | | bot_token is the telegram bot token. | diff --git a/proto/gen/store/workspace_setting.pb.go b/proto/gen/store/workspace_setting.pb.go index 68e62276..a2e2be5d 100644 --- a/proto/gen/store/workspace_setting.pb.go +++ b/proto/gen/store/workspace_setting.pb.go @@ -464,8 +464,8 @@ type WorkspaceTelegramIntegrationSetting struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // telegram_bot_token is the telegram bot token. - TelegramBotToken string `protobuf:"bytes,1,opt,name=telegram_bot_token,json=telegramBotToken,proto3" json:"telegram_bot_token,omitempty"` + // bot_token is the telegram bot token. + BotToken string `protobuf:"bytes,1,opt,name=bot_token,json=botToken,proto3" json:"bot_token,omitempty"` } func (x *WorkspaceTelegramIntegrationSetting) Reset() { @@ -500,9 +500,9 @@ func (*WorkspaceTelegramIntegrationSetting) Descriptor() ([]byte, []int) { return file_store_workspace_setting_proto_rawDescGZIP(), []int{4} } -func (x *WorkspaceTelegramIntegrationSetting) GetTelegramBotToken() string { +func (x *WorkspaceTelegramIntegrationSetting) GetBotToken() string { if x != nil { - return x.TelegramBotToken + return x.BotToken } return "" } @@ -586,36 +586,35 @@ var file_store_workspace_setting_proto_rawDesc = []byte{ 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, 0x22, 0x53, 0x0a, 0x23, 0x57, 0x6f, 0x72, 0x6b, + 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x23, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x54, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, - 0x2c, 0x0a, 0x12, 0x74, 0x65, 0x6c, 0x65, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x6f, 0x74, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x65, 0x6c, - 0x65, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x6f, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0xca, 0x01, - 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, 0x1d, 0x0a, 0x19, 0x57, + 0x1b, 0x0a, 0x09, 0x62, 0x6f, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x62, 0x6f, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0xca, 0x01, 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, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x57, 0x4f, + 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 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, 0x03, 0x12, 0x2a, - 0x0a, 0x26, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, - 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 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, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x10, 0x02, 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, 0x03, 0x12, 0x2a, 0x0a, + 0x26, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x54, 0x49, + 0x4e, 0x47, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x47, 0x52, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 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 ( diff --git a/proto/store/workspace_setting.proto b/proto/store/workspace_setting.proto index b7609828..32fc1014 100644 --- a/proto/store/workspace_setting.proto +++ b/proto/store/workspace_setting.proto @@ -67,6 +67,6 @@ message WorkspaceMemoRelatedSetting { } message WorkspaceTelegramIntegrationSetting { - // telegram_bot_token is the telegram bot token. - string telegram_bot_token = 1; + // bot_token is the telegram bot token. + string bot_token = 1; } diff --git a/server/route/api/v2/apidocs.swagger.yaml b/server/route/api/v2/apidocs.swagger.yaml index a6ec1eb0..7a02a669 100644 --- a/server/route/api/v2/apidocs.swagger.yaml +++ b/server/route/api/v2/apidocs.swagger.yaml @@ -876,7 +876,12 @@ paths: properties: generalSetting: $ref: '#/definitions/apiv2WorkspaceGeneralSetting' - description: general_setting is the general setting of workspace. + storageSetting: + $ref: '#/definitions/apiv2WorkspaceStorageSetting' + memoRelatedSetting: + $ref: '#/definitions/apiv2WorkspaceMemoRelatedSetting' + telegramIntegrationSetting: + $ref: '#/definitions/apiv2WorkspaceTelegramIntegrationSetting' title: setting is the setting to update. tags: - WorkspaceSettingService @@ -1954,6 +1959,15 @@ definitions: additionalStyle: type: string description: additional_style is the additional style. + apiv2WorkspaceMemoRelatedSetting: + type: object + properties: + disallowPublicVisible: + type: boolean + description: disallow_public_share disallows set memo as public visible. + displayWithUpdateTime: + type: boolean + description: display_with_update_time orders and displays memo with update time. apiv2WorkspaceSetting: type: object properties: @@ -1964,7 +1978,45 @@ definitions: Format: settings/{setting} generalSetting: $ref: '#/definitions/apiv2WorkspaceGeneralSetting' - description: general_setting is the general setting of workspace. + storageSetting: + $ref: '#/definitions/apiv2WorkspaceStorageSetting' + memoRelatedSetting: + $ref: '#/definitions/apiv2WorkspaceMemoRelatedSetting' + telegramIntegrationSetting: + $ref: '#/definitions/apiv2WorkspaceTelegramIntegrationSetting' + apiv2WorkspaceStorageSetting: + type: object + properties: + storageType: + $ref: '#/definitions/apiv2WorkspaceStorageSettingStorageType' + description: storage_type is the storage type. + localStoragePath: + type: string + title: |- + The local storage path for STORAGE_TYPE_LOCAL. + e.g. assets/{timestamp}_{filename} + uploadSizeLimitMb: + type: string + format: int64 + description: The max upload size in megabytes. + apiv2WorkspaceStorageSettingStorageType: + type: string + enum: + - STORAGE_TYPE_UNSPECIFIED + - STORAGE_TYPE_DATABASE + - STORAGE_TYPE_LOCAL + - STORAGE_TYPE_EXTERNAL + default: STORAGE_TYPE_UNSPECIFIED + description: |2- + - STORAGE_TYPE_DATABASE: STORAGE_TYPE_DATABASE is the database storage type. + - STORAGE_TYPE_LOCAL: STORAGE_TYPE_LOCAL is the local storage type. + - STORAGE_TYPE_EXTERNAL: STORAGE_TYPE_EXTERNAL is the external storage type. + apiv2WorkspaceTelegramIntegrationSetting: + type: object + properties: + botToken: + type: string + description: bot_token is the telegram bot token. googlerpcStatus: type: object properties: diff --git a/server/route/api/v2/workspace_setting_service.go b/server/route/api/v2/workspace_setting_service.go index 86b44644..5ff33f7d 100644 --- a/server/route/api/v2/workspace_setting_service.go +++ b/server/route/api/v2/workspace_setting_service.go @@ -54,22 +54,57 @@ func (s *APIV2Service) SetWorkspaceSetting(ctx context.Context, request *apiv2pb } func convertWorkspaceSettingFromStore(setting *storepb.WorkspaceSetting) *apiv2pb.WorkspaceSetting { - return &apiv2pb.WorkspaceSetting{ + workspaceSetting := &apiv2pb.WorkspaceSetting{ Name: fmt.Sprintf("%s%s", WorkspaceSettingNamePrefix, setting.Key.String()), - Value: &apiv2pb.WorkspaceSetting_GeneralSetting{ - GeneralSetting: convertWorkspaceGeneralSettingFromStore(setting.GetGeneralSetting()), - }, } + switch setting.Value.(type) { + case *storepb.WorkspaceSetting_GeneralSetting: + workspaceSetting.Value = &apiv2pb.WorkspaceSetting_GeneralSetting{ + GeneralSetting: convertWorkspaceGeneralSettingFromStore(setting.GetGeneralSetting()), + } + case *storepb.WorkspaceSetting_StorageSetting: + workspaceSetting.Value = &apiv2pb.WorkspaceSetting_StorageSetting{ + StorageSetting: convertWorkspaceStorageSettingFromStore(setting.GetStorageSetting()), + } + case *storepb.WorkspaceSetting_MemoRelatedSetting: + workspaceSetting.Value = &apiv2pb.WorkspaceSetting_MemoRelatedSetting{ + MemoRelatedSetting: convertWorkspaceMemoRelatedSettingFromStore(setting.GetMemoRelatedSetting()), + } + case *storepb.WorkspaceSetting_TelegramIntegrationSetting: + workspaceSetting.Value = &apiv2pb.WorkspaceSetting_TelegramIntegrationSetting{ + TelegramIntegrationSetting: convertWorkspaceTelegramIntegrationSettingFromStore(setting.GetTelegramIntegrationSetting()), + } + } + return workspaceSetting } func convertWorkspaceSettingToStore(setting *apiv2pb.WorkspaceSetting) *storepb.WorkspaceSetting { settingKeyString, _ := ExtractWorkspaceSettingKeyFromName(setting.Name) - return &storepb.WorkspaceSetting{ + workspaceSetting := &storepb.WorkspaceSetting{ Key: storepb.WorkspaceSettingKey(storepb.WorkspaceSettingKey_value[settingKeyString]), Value: &storepb.WorkspaceSetting_GeneralSetting{ GeneralSetting: convertWorkspaceGeneralSettingToStore(setting.GetGeneralSetting()), }, } + switch workspaceSetting.Key { + case storepb.WorkspaceSettingKey_WORKSPACE_SETTING_GENERAL: + workspaceSetting.Value = &storepb.WorkspaceSetting_GeneralSetting{ + GeneralSetting: convertWorkspaceGeneralSettingToStore(setting.GetGeneralSetting()), + } + case storepb.WorkspaceSettingKey_WORKSPACE_SETTING_STORAGE: + workspaceSetting.Value = &storepb.WorkspaceSetting_StorageSetting{ + StorageSetting: convertWorkspaceStorageSettingToStore(setting.GetStorageSetting()), + } + case storepb.WorkspaceSettingKey_WORKSPACE_SETTING_MEMO_RELATED: + workspaceSetting.Value = &storepb.WorkspaceSetting_MemoRelatedSetting{ + MemoRelatedSetting: convertWorkspaceMemoRelatedSettingToStore(setting.GetMemoRelatedSetting()), + } + case storepb.WorkspaceSettingKey_WORKSPACE_SETTING_TELEGRAM_INTEGRATION: + workspaceSetting.Value = &storepb.WorkspaceSetting_TelegramIntegrationSetting{ + TelegramIntegrationSetting: convertWorkspaceTelegramIntegrationSettingToStore(setting.GetTelegramIntegrationSetting()), + } + } + return workspaceSetting } func convertWorkspaceGeneralSettingFromStore(setting *storepb.WorkspaceGeneralSetting) *apiv2pb.WorkspaceGeneralSetting { @@ -97,3 +132,63 @@ func convertWorkspaceGeneralSettingToStore(setting *apiv2pb.WorkspaceGeneralSett AdditionalStyle: setting.AdditionalStyle, } } + +func convertWorkspaceStorageSettingFromStore(setting *storepb.WorkspaceStorageSetting) *apiv2pb.WorkspaceStorageSetting { + if setting == nil { + return nil + } + return &apiv2pb.WorkspaceStorageSetting{ + StorageType: apiv2pb.WorkspaceStorageSetting_StorageType(setting.StorageType), + LocalStoragePath: setting.LocalStoragePath, + UploadSizeLimitMb: setting.UploadSizeLimitMb, + } +} + +func convertWorkspaceStorageSettingToStore(setting *apiv2pb.WorkspaceStorageSetting) *storepb.WorkspaceStorageSetting { + if setting == nil { + return nil + } + return &storepb.WorkspaceStorageSetting{ + StorageType: storepb.WorkspaceStorageSetting_StorageType(setting.StorageType), + LocalStoragePath: setting.LocalStoragePath, + UploadSizeLimitMb: setting.UploadSizeLimitMb, + } +} + +func convertWorkspaceMemoRelatedSettingFromStore(setting *storepb.WorkspaceMemoRelatedSetting) *apiv2pb.WorkspaceMemoRelatedSetting { + if setting == nil { + return nil + } + return &apiv2pb.WorkspaceMemoRelatedSetting{ + DisallowPublicVisible: setting.DisallowPublicVisible, + DisplayWithUpdateTime: setting.DisplayWithUpdateTime, + } +} + +func convertWorkspaceMemoRelatedSettingToStore(setting *apiv2pb.WorkspaceMemoRelatedSetting) *storepb.WorkspaceMemoRelatedSetting { + if setting == nil { + return nil + } + return &storepb.WorkspaceMemoRelatedSetting{ + DisallowPublicVisible: setting.DisallowPublicVisible, + DisplayWithUpdateTime: setting.DisplayWithUpdateTime, + } +} + +func convertWorkspaceTelegramIntegrationSettingFromStore(setting *storepb.WorkspaceTelegramIntegrationSetting) *apiv2pb.WorkspaceTelegramIntegrationSetting { + if setting == nil { + return nil + } + return &apiv2pb.WorkspaceTelegramIntegrationSetting{ + BotToken: setting.BotToken, + } +} + +func convertWorkspaceTelegramIntegrationSettingToStore(setting *apiv2pb.WorkspaceTelegramIntegrationSetting) *storepb.WorkspaceTelegramIntegrationSetting { + if setting == nil { + return nil + } + return &storepb.WorkspaceTelegramIntegrationSetting{ + BotToken: setting.BotToken, + } +}