diff --git a/proto/gen/store/README.md b/proto/gen/store/README.md index 47654897..0b68749e 100644 --- a/proto/gen/store/README.md +++ b/proto/gen/store/README.md @@ -8,9 +8,6 @@ - [ActivityPayload](#memos-store-ActivityPayload) - [ActivityVersionUpdatePayload](#memos-store-ActivityVersionUpdatePayload) -- [store/common.proto](#store_common-proto) - - [RowStatus](#memos-store-RowStatus) - - [store/idp.proto](#store_idp-proto) - [FieldMapping](#memos-store-FieldMapping) - [IdentityProvider](#memos-store-IdentityProvider) @@ -25,9 +22,7 @@ - [InboxMessage.Type](#memos-store-InboxMessage-Type) - [store/reaction.proto](#store_reaction-proto) - - [Reaction](#memos-store-Reaction) - - - [Reaction.Type](#memos-store-Reaction-Type) + - [ReactionType](#memos-store-ReactionType) - [store/storage.proto](#store_storage-proto) - [S3Config](#memos-store-S3Config) @@ -43,9 +38,6 @@ - [UserSettingKey](#memos-store-UserSettingKey) -- [store/webhook.proto](#store_webhook-proto) - - [Webhook](#memos-store-Webhook) - - [store/workspace_setting.proto](#store_workspace_setting-proto) - [WorkspaceBasicSetting](#memos-store-WorkspaceBasicSetting) - [WorkspaceCustomProfile](#memos-store-WorkspaceCustomProfile) @@ -125,35 +117,6 @@ - -

Top

- -## store/common.proto - - - - - - - -### RowStatus - - -| Name | Number | Description | -| ---- | ------ | ----------- | -| ROW_STATUS_UNSPECIFIED | 0 | | -| NORMAL | 1 | | -| ARCHIVED | 2 | | - - - - - - - - - -

Top

@@ -305,36 +268,17 @@ ## store/reaction.proto - - - -### Reaction - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| id | [int32](#int32) | | | -| created_ts | [int64](#int64) | | | -| creator_id | [int32](#int32) | | | -| content_id | [string](#string) | | content_id is the id of the content that the reaction is for. This can be a memo. e.g. memos/101 | -| reaction_type | [Reaction.Type](#memos-store-Reaction-Type) | | | - - - - - - + -### Reaction.Type +### ReactionType | Name | Number | Description | | ---- | ------ | ----------- | -| TYPE_UNSPECIFIED | 0 | | +| REACTION_TYPE_UNSPECIFIED | 0 | | | THUMBS_UP | 1 | | | THUMBS_DOWN | 2 | | | HEART | 3 | | @@ -525,43 +469,6 @@ - -

Top

- -## store/webhook.proto - - - - - -### Webhook - - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| id | [int32](#int32) | | | -| created_ts | [int64](#int64) | | | -| updated_ts | [int64](#int64) | | | -| creator_id | [int32](#int32) | | | -| row_status | [RowStatus](#memos-store-RowStatus) | | | -| name | [string](#string) | | | -| url | [string](#string) | | | - - - - - - - - - - - - - - -

Top

diff --git a/proto/gen/store/common.pb.go b/proto/gen/store/common.pb.go deleted file mode 100644 index ecf2b661..00000000 --- a/proto/gen/store/common.pb.go +++ /dev/null @@ -1,141 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc (unknown) -// source: store/common.proto - -package store - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type RowStatus int32 - -const ( - RowStatus_ROW_STATUS_UNSPECIFIED RowStatus = 0 - RowStatus_NORMAL RowStatus = 1 - RowStatus_ARCHIVED RowStatus = 2 -) - -// Enum value maps for RowStatus. -var ( - RowStatus_name = map[int32]string{ - 0: "ROW_STATUS_UNSPECIFIED", - 1: "NORMAL", - 2: "ARCHIVED", - } - RowStatus_value = map[string]int32{ - "ROW_STATUS_UNSPECIFIED": 0, - "NORMAL": 1, - "ARCHIVED": 2, - } -) - -func (x RowStatus) Enum() *RowStatus { - p := new(RowStatus) - *p = x - return p -} - -func (x RowStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (RowStatus) Descriptor() protoreflect.EnumDescriptor { - return file_store_common_proto_enumTypes[0].Descriptor() -} - -func (RowStatus) Type() protoreflect.EnumType { - return &file_store_common_proto_enumTypes[0] -} - -func (x RowStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use RowStatus.Descriptor instead. -func (RowStatus) EnumDescriptor() ([]byte, []int) { - return file_store_common_proto_rawDescGZIP(), []int{0} -} - -var File_store_common_proto protoreflect.FileDescriptor - -var file_store_common_proto_rawDesc = []byte{ - 0x0a, 0x12, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2a, 0x41, 0x0a, 0x09, 0x52, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, - 0x0a, 0x16, 0x52, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4e, 0x4f, - 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x52, 0x43, 0x48, 0x49, 0x56, - 0x45, 0x44, 0x10, 0x02, 0x42, 0x96, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x65, 0x6d, - 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 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 ( - file_store_common_proto_rawDescOnce sync.Once - file_store_common_proto_rawDescData = file_store_common_proto_rawDesc -) - -func file_store_common_proto_rawDescGZIP() []byte { - file_store_common_proto_rawDescOnce.Do(func() { - file_store_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_store_common_proto_rawDescData) - }) - return file_store_common_proto_rawDescData -} - -var file_store_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_store_common_proto_goTypes = []interface{}{ - (RowStatus)(0), // 0: memos.store.RowStatus -} -var file_store_common_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_store_common_proto_init() } -func file_store_common_proto_init() { - if File_store_common_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_store_common_proto_rawDesc, - NumEnums: 1, - NumMessages: 0, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_store_common_proto_goTypes, - DependencyIndexes: file_store_common_proto_depIdxs, - EnumInfos: file_store_common_proto_enumTypes, - }.Build() - File_store_common_proto = out.File - file_store_common_proto_rawDesc = nil - file_store_common_proto_goTypes = nil - file_store_common_proto_depIdxs = nil -} diff --git a/proto/gen/store/reaction.pb.go b/proto/gen/store/reaction.pb.go index af85af46..875fe099 100644 --- a/proto/gen/store/reaction.pb.go +++ b/proto/gen/store/reaction.pb.go @@ -20,28 +20,28 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type Reaction_Type int32 +type ReactionType int32 const ( - Reaction_TYPE_UNSPECIFIED Reaction_Type = 0 - Reaction_THUMBS_UP Reaction_Type = 1 - Reaction_THUMBS_DOWN Reaction_Type = 2 - Reaction_HEART Reaction_Type = 3 - Reaction_FIRE Reaction_Type = 4 - Reaction_CLAPPING_HANDS Reaction_Type = 5 - Reaction_LAUGH Reaction_Type = 6 - Reaction_OK_HAND Reaction_Type = 7 - Reaction_ROCKET Reaction_Type = 8 - Reaction_EYES Reaction_Type = 9 - Reaction_THINKING_FACE Reaction_Type = 10 - Reaction_CLOWN_FACE Reaction_Type = 11 - Reaction_QUESTION_MARK Reaction_Type = 12 + ReactionType_REACTION_TYPE_UNSPECIFIED ReactionType = 0 + ReactionType_THUMBS_UP ReactionType = 1 + ReactionType_THUMBS_DOWN ReactionType = 2 + ReactionType_HEART ReactionType = 3 + ReactionType_FIRE ReactionType = 4 + ReactionType_CLAPPING_HANDS ReactionType = 5 + ReactionType_LAUGH ReactionType = 6 + ReactionType_OK_HAND ReactionType = 7 + ReactionType_ROCKET ReactionType = 8 + ReactionType_EYES ReactionType = 9 + ReactionType_THINKING_FACE ReactionType = 10 + ReactionType_CLOWN_FACE ReactionType = 11 + ReactionType_QUESTION_MARK ReactionType = 12 ) -// Enum value maps for Reaction_Type. +// Enum value maps for ReactionType. var ( - Reaction_Type_name = map[int32]string{ - 0: "TYPE_UNSPECIFIED", + ReactionType_name = map[int32]string{ + 0: "REACTION_TYPE_UNSPECIFIED", 1: "THUMBS_UP", 2: "THUMBS_DOWN", 3: "HEART", @@ -55,171 +55,80 @@ var ( 11: "CLOWN_FACE", 12: "QUESTION_MARK", } - Reaction_Type_value = map[string]int32{ - "TYPE_UNSPECIFIED": 0, - "THUMBS_UP": 1, - "THUMBS_DOWN": 2, - "HEART": 3, - "FIRE": 4, - "CLAPPING_HANDS": 5, - "LAUGH": 6, - "OK_HAND": 7, - "ROCKET": 8, - "EYES": 9, - "THINKING_FACE": 10, - "CLOWN_FACE": 11, - "QUESTION_MARK": 12, + ReactionType_value = map[string]int32{ + "REACTION_TYPE_UNSPECIFIED": 0, + "THUMBS_UP": 1, + "THUMBS_DOWN": 2, + "HEART": 3, + "FIRE": 4, + "CLAPPING_HANDS": 5, + "LAUGH": 6, + "OK_HAND": 7, + "ROCKET": 8, + "EYES": 9, + "THINKING_FACE": 10, + "CLOWN_FACE": 11, + "QUESTION_MARK": 12, } ) -func (x Reaction_Type) Enum() *Reaction_Type { - p := new(Reaction_Type) +func (x ReactionType) Enum() *ReactionType { + p := new(ReactionType) *p = x return p } -func (x Reaction_Type) String() string { +func (x ReactionType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (Reaction_Type) Descriptor() protoreflect.EnumDescriptor { +func (ReactionType) Descriptor() protoreflect.EnumDescriptor { return file_store_reaction_proto_enumTypes[0].Descriptor() } -func (Reaction_Type) Type() protoreflect.EnumType { +func (ReactionType) Type() protoreflect.EnumType { return &file_store_reaction_proto_enumTypes[0] } -func (x Reaction_Type) Number() protoreflect.EnumNumber { +func (x ReactionType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use Reaction_Type.Descriptor instead. -func (Reaction_Type) EnumDescriptor() ([]byte, []int) { - return file_store_reaction_proto_rawDescGZIP(), []int{0, 0} -} - -type Reaction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedTs int64 `protobuf:"varint,2,opt,name=created_ts,json=createdTs,proto3" json:"created_ts,omitempty"` - CreatorId int32 `protobuf:"varint,3,opt,name=creator_id,json=creatorId,proto3" json:"creator_id,omitempty"` - // content_id is the id of the content that the reaction is for. - // This can be a memo. e.g. memos/101 - ContentId string `protobuf:"bytes,4,opt,name=content_id,json=contentId,proto3" json:"content_id,omitempty"` - ReactionType Reaction_Type `protobuf:"varint,5,opt,name=reaction_type,json=reactionType,proto3,enum=memos.store.Reaction_Type" json:"reaction_type,omitempty"` -} - -func (x *Reaction) Reset() { - *x = Reaction{} - if protoimpl.UnsafeEnabled { - mi := &file_store_reaction_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Reaction) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Reaction) ProtoMessage() {} - -func (x *Reaction) ProtoReflect() protoreflect.Message { - mi := &file_store_reaction_proto_msgTypes[0] - 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 Reaction.ProtoReflect.Descriptor instead. -func (*Reaction) Descriptor() ([]byte, []int) { +// Deprecated: Use ReactionType.Descriptor instead. +func (ReactionType) EnumDescriptor() ([]byte, []int) { return file_store_reaction_proto_rawDescGZIP(), []int{0} } -func (x *Reaction) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Reaction) GetCreatedTs() int64 { - if x != nil { - return x.CreatedTs - } - return 0 -} - -func (x *Reaction) GetCreatorId() int32 { - if x != nil { - return x.CreatorId - } - return 0 -} - -func (x *Reaction) GetContentId() string { - if x != nil { - return x.ContentId - } - return "" -} - -func (x *Reaction) GetReactionType() Reaction_Type { - if x != nil { - return x.ReactionType - } - return Reaction_TYPE_UNSPECIFIED -} - var File_store_reaction_proto protoreflect.FileDescriptor var file_store_reaction_proto_rawDesc = []byte{ 0x0a, 0x14, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x22, 0x84, 0x03, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x73, 0x12, - 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x3f, 0x0a, - 0x0d, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0c, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22, 0xc9, - 0x01, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, - 0x09, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, - 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x09, 0x0a, - 0x05, 0x48, 0x45, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x49, 0x52, 0x45, - 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x48, - 0x41, 0x4e, 0x44, 0x53, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x41, 0x55, 0x47, 0x48, 0x10, - 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x4b, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x10, 0x07, 0x12, 0x0a, - 0x0a, 0x06, 0x52, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x45, 0x59, - 0x45, 0x53, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x48, 0x49, 0x4e, 0x4b, 0x49, 0x4e, 0x47, - 0x5f, 0x46, 0x41, 0x43, 0x45, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4c, 0x4f, 0x57, 0x4e, - 0x5f, 0x46, 0x41, 0x43, 0x45, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x51, 0x55, 0x45, 0x53, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, 0x42, 0x98, 0x01, 0x0a, 0x0f, 0x63, - 0x6f, 0x6d, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x0d, - 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, + 0x6f, 0x72, 0x65, 0x2a, 0xda, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x55, 0x50, + 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x55, 0x4d, 0x42, 0x53, 0x5f, 0x44, 0x4f, 0x57, + 0x4e, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x45, 0x41, 0x52, 0x54, 0x10, 0x03, 0x12, 0x08, + 0x0a, 0x04, 0x46, 0x49, 0x52, 0x45, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4c, 0x41, 0x50, + 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x41, 0x4e, 0x44, 0x53, 0x10, 0x05, 0x12, 0x09, 0x0a, 0x05, + 0x4c, 0x41, 0x55, 0x47, 0x48, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x4b, 0x5f, 0x48, 0x41, + 0x4e, 0x44, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x08, + 0x12, 0x08, 0x0a, 0x04, 0x45, 0x59, 0x45, 0x53, 0x10, 0x09, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x48, + 0x49, 0x4e, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x10, 0x0a, 0x12, 0x0e, 0x0a, + 0x0a, 0x43, 0x4c, 0x4f, 0x57, 0x4e, 0x5f, 0x46, 0x41, 0x43, 0x45, 0x10, 0x0b, 0x12, 0x11, 0x0a, + 0x0d, 0x51, 0x55, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x0c, + 0x42, 0x98, 0x01, 0x0a, 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x42, 0x0d, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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 ( @@ -235,18 +144,15 @@ func file_store_reaction_proto_rawDescGZIP() []byte { } var file_store_reaction_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_store_reaction_proto_msgTypes = make([]protoimpl.MessageInfo, 1) var file_store_reaction_proto_goTypes = []interface{}{ - (Reaction_Type)(0), // 0: memos.store.Reaction.Type - (*Reaction)(nil), // 1: memos.store.Reaction + (ReactionType)(0), // 0: memos.store.ReactionType } var file_store_reaction_proto_depIdxs = []int32{ - 0, // 0: memos.store.Reaction.reaction_type:type_name -> memos.store.Reaction.Type - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name } func init() { file_store_reaction_proto_init() } @@ -254,34 +160,19 @@ func file_store_reaction_proto_init() { if File_store_reaction_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_store_reaction_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Reaction); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_store_reaction_proto_rawDesc, NumEnums: 1, - NumMessages: 1, + NumMessages: 0, NumExtensions: 0, NumServices: 0, }, GoTypes: file_store_reaction_proto_goTypes, DependencyIndexes: file_store_reaction_proto_depIdxs, EnumInfos: file_store_reaction_proto_enumTypes, - MessageInfos: file_store_reaction_proto_msgTypes, }.Build() File_store_reaction_proto = out.File file_store_reaction_proto_rawDesc = nil diff --git a/proto/gen/store/webhook.pb.go b/proto/gen/store/webhook.pb.go deleted file mode 100644 index d85d4025..00000000 --- a/proto/gen/store/webhook.pb.go +++ /dev/null @@ -1,214 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.31.0 -// protoc (unknown) -// source: store/webhook.proto - -package store - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -type Webhook struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - CreatedTs int64 `protobuf:"varint,2,opt,name=created_ts,json=createdTs,proto3" json:"created_ts,omitempty"` - UpdatedTs int64 `protobuf:"varint,3,opt,name=updated_ts,json=updatedTs,proto3" json:"updated_ts,omitempty"` - CreatorId int32 `protobuf:"varint,4,opt,name=creator_id,json=creatorId,proto3" json:"creator_id,omitempty"` - RowStatus RowStatus `protobuf:"varint,5,opt,name=row_status,json=rowStatus,proto3,enum=memos.store.RowStatus" json:"row_status,omitempty"` - Name string `protobuf:"bytes,6,opt,name=name,proto3" json:"name,omitempty"` - Url string `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"` -} - -func (x *Webhook) Reset() { - *x = Webhook{} - if protoimpl.UnsafeEnabled { - mi := &file_store_webhook_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Webhook) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Webhook) ProtoMessage() {} - -func (x *Webhook) ProtoReflect() protoreflect.Message { - mi := &file_store_webhook_proto_msgTypes[0] - 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 Webhook.ProtoReflect.Descriptor instead. -func (*Webhook) Descriptor() ([]byte, []int) { - return file_store_webhook_proto_rawDescGZIP(), []int{0} -} - -func (x *Webhook) GetId() int32 { - if x != nil { - return x.Id - } - return 0 -} - -func (x *Webhook) GetCreatedTs() int64 { - if x != nil { - return x.CreatedTs - } - return 0 -} - -func (x *Webhook) GetUpdatedTs() int64 { - if x != nil { - return x.UpdatedTs - } - return 0 -} - -func (x *Webhook) GetCreatorId() int32 { - if x != nil { - return x.CreatorId - } - return 0 -} - -func (x *Webhook) GetRowStatus() RowStatus { - if x != nil { - return x.RowStatus - } - return RowStatus_ROW_STATUS_UNSPECIFIED -} - -func (x *Webhook) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Webhook) GetUrl() string { - if x != nil { - return x.Url - } - return "" -} - -var File_store_webhook_proto protoreflect.FileDescriptor - -var file_store_webhook_proto_rawDesc = []byte{ - 0x0a, 0x13, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x1a, 0x12, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd3, 0x01, 0x0a, 0x07, 0x57, 0x65, 0x62, 0x68, 0x6f, - 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x54, 0x73, - 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x49, 0x64, 0x12, - 0x35, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x52, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x09, 0x72, 0x6f, 0x77, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x42, 0x97, 0x01, 0x0a, - 0x0f, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x65, 0x6d, 0x6f, 0x73, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x42, 0x0c, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 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 ( - file_store_webhook_proto_rawDescOnce sync.Once - file_store_webhook_proto_rawDescData = file_store_webhook_proto_rawDesc -) - -func file_store_webhook_proto_rawDescGZIP() []byte { - file_store_webhook_proto_rawDescOnce.Do(func() { - file_store_webhook_proto_rawDescData = protoimpl.X.CompressGZIP(file_store_webhook_proto_rawDescData) - }) - return file_store_webhook_proto_rawDescData -} - -var file_store_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_store_webhook_proto_goTypes = []interface{}{ - (*Webhook)(nil), // 0: memos.store.Webhook - (RowStatus)(0), // 1: memos.store.RowStatus -} -var file_store_webhook_proto_depIdxs = []int32{ - 1, // 0: memos.store.Webhook.row_status:type_name -> memos.store.RowStatus - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name -} - -func init() { file_store_webhook_proto_init() } -func file_store_webhook_proto_init() { - if File_store_webhook_proto != nil { - return - } - file_store_common_proto_init() - if !protoimpl.UnsafeEnabled { - file_store_webhook_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Webhook); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_store_webhook_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_store_webhook_proto_goTypes, - DependencyIndexes: file_store_webhook_proto_depIdxs, - MessageInfos: file_store_webhook_proto_msgTypes, - }.Build() - File_store_webhook_proto = out.File - file_store_webhook_proto_rawDesc = nil - file_store_webhook_proto_goTypes = nil - file_store_webhook_proto_depIdxs = nil -} diff --git a/proto/store/common.proto b/proto/store/common.proto deleted file mode 100644 index 147cfd31..00000000 --- a/proto/store/common.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -package memos.store; - -option go_package = "gen/store"; - -enum RowStatus { - ROW_STATUS_UNSPECIFIED = 0; - - NORMAL = 1; - - ARCHIVED = 2; -} diff --git a/proto/store/reaction.proto b/proto/store/reaction.proto index 00cec419..0896b11d 100644 --- a/proto/store/reaction.proto +++ b/proto/store/reaction.proto @@ -4,31 +4,18 @@ package memos.store; option go_package = "gen/store"; -message Reaction { - int32 id = 1; - - int64 created_ts = 2; - - int32 creator_id = 3; - - // content_id is the id of the content that the reaction is for. - // This can be a memo. e.g. memos/101 - string content_id = 4; - - enum Type { - TYPE_UNSPECIFIED = 0; - THUMBS_UP = 1; - THUMBS_DOWN = 2; - HEART = 3; - FIRE = 4; - CLAPPING_HANDS = 5; - LAUGH = 6; - OK_HAND = 7; - ROCKET = 8; - EYES = 9; - THINKING_FACE = 10; - CLOWN_FACE = 11; - QUESTION_MARK = 12; - } - Type reaction_type = 5; +enum ReactionType { + REACTION_TYPE_UNSPECIFIED = 0; + THUMBS_UP = 1; + THUMBS_DOWN = 2; + HEART = 3; + FIRE = 4; + CLAPPING_HANDS = 5; + LAUGH = 6; + OK_HAND = 7; + ROCKET = 8; + EYES = 9; + THINKING_FACE = 10; + CLOWN_FACE = 11; + QUESTION_MARK = 12; } diff --git a/proto/store/webhook.proto b/proto/store/webhook.proto deleted file mode 100644 index 04627d7e..00000000 --- a/proto/store/webhook.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; - -package memos.store; - -import "store/common.proto"; - -option go_package = "gen/store"; - -message Webhook { - int32 id = 1; - - int64 created_ts = 2; - - int64 updated_ts = 3; - - int32 creator_id = 4; - - RowStatus row_status = 5; - - string name = 6; - - string url = 7; -} diff --git a/server/route/api/v1/README.md b/server/route/api/v1/README.md new file mode 100644 index 00000000..d3ed6a01 --- /dev/null +++ b/server/route/api/v1/README.md @@ -0,0 +1 @@ +The legacy API is deprecated and has be removed. Please use the v2 API instead. diff --git a/server/route/api/v2/acl.go b/server/route/api/v2/acl.go index 23b0a597..1ff6c9f1 100644 --- a/server/route/api/v2/acl.go +++ b/server/route/api/v2/acl.go @@ -14,7 +14,6 @@ import ( "github.com/usememos/memos/internal/util" storepb "github.com/usememos/memos/proto/gen/store" - "github.com/usememos/memos/server/route/api/auth" "github.com/usememos/memos/store" ) @@ -84,7 +83,7 @@ func (in *GRPCAuthInterceptor) authenticate(ctx context.Context, accessToken str if accessToken == "" { return "", status.Errorf(codes.Unauthenticated, "access token not found") } - claims := &auth.ClaimsMessage{} + claims := &ClaimsMessage{} _, err := jwt.ParseWithClaims(accessToken, claims, func(t *jwt.Token) (any, error) { if t.Method.Alg() != jwt.SigningMethodHS256.Name { return nil, status.Errorf(codes.Unauthenticated, "unexpected access token signing method=%v, expect %v", t.Header["alg"], jwt.SigningMethodHS256) @@ -145,7 +144,7 @@ func getTokenFromMetadata(md metadata.MD) (string, error) { header := http.Header{} header.Add("Cookie", t) request := http.Request{Header: header} - if v, _ := request.Cookie(auth.AccessTokenCookieName); v != nil { + if v, _ := request.Cookie(AccessTokenCookieName); v != nil { accessToken = v.Value } } diff --git a/server/route/api/v2/apidocs.swagger.yaml b/server/route/api/v2/apidocs.swagger.yaml index 216912a6..be89d9a4 100644 --- a/server/route/api/v2/apidocs.swagger.yaml +++ b/server/route/api/v2/apidocs.swagger.yaml @@ -939,7 +939,7 @@ paths: type: string format: date-time rowStatus: - $ref: '#/definitions/apiv2RowStatus' + $ref: '#/definitions/v2RowStatus' name: type: string url: @@ -1159,7 +1159,7 @@ paths: type: string description: The user defined id of the memo. rowStatus: - $ref: '#/definitions/apiv2RowStatus' + $ref: '#/definitions/v2RowStatus' creator: type: string title: |- @@ -1200,7 +1200,7 @@ paths: type: array items: type: object - $ref: '#/definitions/apiv2Reaction' + $ref: '#/definitions/v2Reaction' readOnly: true tags: - MemoService @@ -1913,7 +1913,7 @@ paths: password: type: string rowStatus: - $ref: '#/definitions/apiv2RowStatus' + $ref: '#/definitions/v2RowStatus' createTime: type: string format: date-time @@ -2052,45 +2052,6 @@ definitions: type: string fieldMapping: $ref: '#/definitions/apiv2FieldMapping' - apiv2Reaction: - type: object - properties: - id: - type: integer - format: int32 - creator: - type: string - title: |- - The name of the creator. - Format: users/{id} - contentId: - type: string - reactionType: - $ref: '#/definitions/apiv2ReactionType' - apiv2ReactionType: - type: string - enum: - - TYPE_UNSPECIFIED - - THUMBS_UP - - THUMBS_DOWN - - HEART - - FIRE - - CLAPPING_HANDS - - LAUGH - - OK_HAND - - ROCKET - - EYES - - THINKING_FACE - - CLOWN_FACE - - QUESTION_MARK - default: TYPE_UNSPECIFIED - apiv2RowStatus: - type: string - enum: - - ROW_STATUS_UNSPECIFIED - - ACTIVE - - ARCHIVED - default: ROW_STATUS_UNSPECIFIED apiv2S3Config: type: object properties: @@ -2155,27 +2116,6 @@ definitions: telegramUserId: type: string description: The telegram user id of the user. - apiv2Webhook: - type: object - properties: - id: - type: integer - format: int32 - creatorId: - type: integer - format: int32 - createdTime: - type: string - format: date-time - updatedTime: - type: string - format: date-time - rowStatus: - $ref: '#/definitions/apiv2RowStatus' - name: - type: string - url: - type: string apiv2WorkspaceCustomProfile: type: object properties: @@ -2370,7 +2310,7 @@ definitions: type: object properties: webhook: - $ref: '#/definitions/apiv2Webhook' + $ref: '#/definitions/v2Webhook' v2DeleteIdentityProviderResponse: type: object v2DeleteInboxResponse: @@ -2465,7 +2405,7 @@ definitions: type: object properties: webhook: - $ref: '#/definitions/apiv2Webhook' + $ref: '#/definitions/v2Webhook' v2GetWorkspaceProfileResponse: type: object properties: @@ -2554,7 +2494,7 @@ definitions: type: array items: type: object - $ref: '#/definitions/apiv2Reaction' + $ref: '#/definitions/v2Reaction' v2ListMemoRelationsResponse: type: object properties: @@ -2631,7 +2571,7 @@ definitions: type: array items: type: object - $ref: '#/definitions/apiv2Webhook' + $ref: '#/definitions/v2Webhook' v2ListWorkspaceSettingsResponse: type: object properties: @@ -2653,7 +2593,7 @@ definitions: type: string description: The user defined id of the memo. rowStatus: - $ref: '#/definitions/apiv2RowStatus' + $ref: '#/definitions/v2RowStatus' creator: type: string title: |- @@ -2694,7 +2634,7 @@ definitions: type: array items: type: object - $ref: '#/definitions/apiv2Reaction' + $ref: '#/definitions/v2Reaction' readOnly: true v2MemoRelation: type: object @@ -2718,6 +2658,38 @@ definitions: - REFERENCE - COMMENT default: TYPE_UNSPECIFIED + v2Reaction: + type: object + properties: + id: + type: integer + format: int32 + creator: + type: string + title: |- + The name of the creator. + Format: users/{id} + contentId: + type: string + reactionType: + $ref: '#/definitions/v2ReactionType' + v2ReactionType: + type: string + enum: + - TYPE_UNSPECIFIED + - THUMBS_UP + - THUMBS_DOWN + - HEART + - FIRE + - CLAPPING_HANDS + - LAUGH + - OK_HAND + - ROCKET + - EYES + - THINKING_FACE + - CLOWN_FACE + - QUESTION_MARK + default: TYPE_UNSPECIFIED v2RenameTagResponse: type: object properties: @@ -2756,6 +2728,13 @@ definitions: title: |- The related memo. Format: memos/{id} + v2RowStatus: + type: string + enum: + - ROW_STATUS_UNSPECIFIED + - ACTIVE + - ARCHIVED + default: ROW_STATUS_UNSPECIFIED v2SearchMemosResponse: type: object properties: @@ -2856,12 +2835,12 @@ definitions: type: object properties: webhook: - $ref: '#/definitions/apiv2Webhook' + $ref: '#/definitions/v2Webhook' v2UpsertMemoReactionResponse: type: object properties: reaction: - $ref: '#/definitions/apiv2Reaction' + $ref: '#/definitions/v2Reaction' v2UpsertTagRequest: type: object properties: @@ -2899,7 +2878,7 @@ definitions: password: type: string rowStatus: - $ref: '#/definitions/apiv2RowStatus' + $ref: '#/definitions/v2RowStatus' createTime: type: string format: date-time @@ -2927,6 +2906,27 @@ definitions: - PROTECTED - PUBLIC default: VISIBILITY_UNSPECIFIED + v2Webhook: + type: object + properties: + id: + type: integer + format: int32 + creatorId: + type: integer + format: int32 + createdTime: + type: string + format: date-time + updatedTime: + type: string + format: date-time + rowStatus: + $ref: '#/definitions/v2RowStatus' + name: + type: string + url: + type: string v2WorkspaceProfile: type: object properties: diff --git a/server/route/api/auth/auth.go b/server/route/api/v2/auth.go similarity index 99% rename from server/route/api/auth/auth.go rename to server/route/api/v2/auth.go index 5a46d010..672b260e 100644 --- a/server/route/api/auth/auth.go +++ b/server/route/api/v2/auth.go @@ -1,4 +1,4 @@ -package auth +package v2 import ( "fmt" diff --git a/server/route/api/v2/auth_service.go b/server/route/api/v2/auth_service.go index f1dec643..167ea643 100644 --- a/server/route/api/v2/auth_service.go +++ b/server/route/api/v2/auth_service.go @@ -19,7 +19,6 @@ import ( "github.com/usememos/memos/plugin/idp/oauth2" apiv2pb "github.com/usememos/memos/proto/gen/api/v2" storepb "github.com/usememos/memos/proto/gen/store" - "github.com/usememos/memos/server/route/api/auth" "github.com/usememos/memos/store" ) @@ -58,7 +57,7 @@ func (s *APIV2Service) SignIn(ctx context.Context, request *apiv2pb.SignInReques return nil, status.Errorf(codes.InvalidArgument, "unmatched email and password") } - expireTime := time.Now().Add(auth.AccessTokenDuration) + expireTime := time.Now().Add(AccessTokenDuration) if request.NeverExpire { // Set the expire time to 100 years. expireTime = time.Now().Add(100 * 365 * 24 * time.Hour) @@ -141,7 +140,7 @@ func (s *APIV2Service) SignInWithSSO(ctx context.Context, request *apiv2pb.SignI return nil, status.Errorf(codes.PermissionDenied, fmt.Sprintf("user has been archived with username %s", userInfo.Identifier)) } - if err := s.doSignIn(ctx, user, time.Now().Add(auth.AccessTokenDuration)); err != nil { + if err := s.doSignIn(ctx, user, time.Now().Add(AccessTokenDuration)); err != nil { return nil, status.Errorf(codes.Internal, fmt.Sprintf("failed to sign in, err: %s", err)) } return &apiv2pb.SignInWithSSOResponse{ @@ -150,7 +149,7 @@ func (s *APIV2Service) SignInWithSSO(ctx context.Context, request *apiv2pb.SignI } func (s *APIV2Service) doSignIn(ctx context.Context, user *store.User, expireTime time.Time) error { - accessToken, err := auth.GenerateAccessToken(user.Email, user.ID, expireTime, []byte(s.Secret)) + accessToken, err := GenerateAccessToken(user.Email, user.ID, expireTime, []byte(s.Secret)) if err != nil { return status.Errorf(codes.Internal, fmt.Sprintf("failed to generate tokens, err: %s", err)) } @@ -213,7 +212,7 @@ func (s *APIV2Service) SignUp(ctx context.Context, request *apiv2pb.SignUpReques return nil, status.Errorf(codes.Internal, fmt.Sprintf("failed to create user, err: %s", err)) } - if err := s.doSignIn(ctx, user, time.Now().Add(auth.AccessTokenDuration)); err != nil { + if err := s.doSignIn(ctx, user, time.Now().Add(AccessTokenDuration)); err != nil { return nil, status.Errorf(codes.Internal, fmt.Sprintf("failed to sign in, err: %s", err)) } return &apiv2pb.SignUpResponse{ @@ -243,7 +242,7 @@ func (s *APIV2Service) clearAccessTokenCookie(ctx context.Context) error { func (*APIV2Service) buildAccessTokenCookie(ctx context.Context, accessToken string, expireTime time.Time) (string, error) { attrs := []string{ - fmt.Sprintf("%s=%s", auth.AccessTokenCookieName, accessToken), + fmt.Sprintf("%s=%s", AccessTokenCookieName, accessToken), "Path=/", "HttpOnly", } diff --git a/server/route/api/v2/user_service.go b/server/route/api/v2/user_service.go index 54789993..0c47101b 100644 --- a/server/route/api/v2/user_service.go +++ b/server/route/api/v2/user_service.go @@ -21,7 +21,6 @@ import ( "github.com/usememos/memos/internal/util" apiv2pb "github.com/usememos/memos/proto/gen/api/v2" storepb "github.com/usememos/memos/proto/gen/store" - "github.com/usememos/memos/server/route/api/auth" "github.com/usememos/memos/store" ) @@ -356,7 +355,7 @@ func (s *APIV2Service) ListUserAccessTokens(ctx context.Context, _ *apiv2pb.List accessTokens := []*apiv2pb.UserAccessToken{} for _, userAccessToken := range userAccessTokens { - claims := &auth.ClaimsMessage{} + claims := &ClaimsMessage{} _, err := jwt.ParseWithClaims(userAccessToken.AccessToken, claims, func(t *jwt.Token) (any, error) { if t.Method.Alg() != jwt.SigningMethodHS256.Name { return nil, errors.Errorf("unexpected access token signing method=%v, expect %v", t.Header["alg"], jwt.SigningMethodHS256) @@ -405,12 +404,12 @@ func (s *APIV2Service) CreateUserAccessToken(ctx context.Context, request *apiv2 expiresAt = request.ExpiresAt.AsTime() } - accessToken, err := auth.GenerateAccessToken(user.Username, user.ID, expiresAt, []byte(s.Secret)) + accessToken, err := GenerateAccessToken(user.Username, user.ID, expiresAt, []byte(s.Secret)) if err != nil { return nil, status.Errorf(codes.Internal, "failed to generate access token: %v", err) } - claims := &auth.ClaimsMessage{} + claims := &ClaimsMessage{} _, err = jwt.ParseWithClaims(accessToken, claims, func(t *jwt.Token) (any, error) { if t.Method.Alg() != jwt.SigningMethodHS256.Name { return nil, errors.Errorf("unexpected access token signing method=%v, expect %v", t.Header["alg"], jwt.SigningMethodHS256) diff --git a/server/route/api/v2/webhook_service.go b/server/route/api/v2/webhook_service.go index d508aa6a..ccfc8654 100644 --- a/server/route/api/v2/webhook_service.go +++ b/server/route/api/v2/webhook_service.go @@ -9,7 +9,6 @@ import ( "google.golang.org/protobuf/types/known/timestamppb" apiv2pb "github.com/usememos/memos/proto/gen/api/v2" - storepb "github.com/usememos/memos/proto/gen/store" "github.com/usememos/memos/store" ) @@ -19,8 +18,8 @@ func (s *APIV2Service) CreateWebhook(ctx context.Context, request *apiv2pb.Creat return nil, status.Errorf(codes.Internal, "failed to get user: %v", err) } - webhook, err := s.Store.CreateWebhook(ctx, &storepb.Webhook{ - CreatorId: currentUser.ID, + webhook, err := s.Store.CreateWebhook(ctx, &store.Webhook{ + CreatorID: currentUser.ID, Name: request.Name, Url: request.Url, }) @@ -79,7 +78,7 @@ func (s *APIV2Service) UpdateWebhook(ctx context.Context, request *apiv2pb.Updat for _, field := range request.UpdateMask.Paths { switch field { case "row_status": - rowStatus := storepb.RowStatus(storepb.RowStatus_value[request.Webhook.RowStatus.String()]) + rowStatus := store.RowStatus(request.Webhook.RowStatus.String()) update.RowStatus = &rowStatus case "name": update.Name = &request.Webhook.Name @@ -107,13 +106,13 @@ func (s *APIV2Service) DeleteWebhook(ctx context.Context, request *apiv2pb.Delet return &apiv2pb.DeleteWebhookResponse{}, nil } -func convertWebhookFromStore(webhook *storepb.Webhook) *apiv2pb.Webhook { +func convertWebhookFromStore(webhook *store.Webhook) *apiv2pb.Webhook { return &apiv2pb.Webhook{ - Id: webhook.Id, + Id: webhook.ID, CreatedTime: timestamppb.New(time.Unix(webhook.CreatedTs, 0)), UpdatedTime: timestamppb.New(time.Unix(webhook.UpdatedTs, 0)), - RowStatus: apiv2pb.RowStatus(webhook.RowStatus), - CreatorId: webhook.CreatorId, + RowStatus: convertRowStatusFromStore(webhook.RowStatus), + CreatorId: webhook.CreatorID, Name: webhook.Name, Url: webhook.Url, } diff --git a/store/db/mysql/reaction.go b/store/db/mysql/reaction.go index 511b10fc..ffc48656 100644 --- a/store/db/mysql/reaction.go +++ b/store/db/mysql/reaction.go @@ -10,10 +10,10 @@ import ( "github.com/usememos/memos/store" ) -func (d *DB) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*storepb.Reaction, error) { +func (d *DB) UpsertReaction(ctx context.Context, upsert *store.Reaction) (*store.Reaction, error) { fields := []string{"`creator_id`", "`content_id`", "`reaction_type`"} placeholder := []string{"?", "?", "?"} - args := []interface{}{upsert.CreatorId, upsert.ContentId, upsert.ReactionType.String()} + args := []interface{}{upsert.CreatorID, upsert.ContentID, upsert.ReactionType.String()} stmt := "INSERT INTO `reaction` (" + strings.Join(fields, ", ") + ") VALUES (" + strings.Join(placeholder, ", ") + ")" result, err := d.db.ExecContext(ctx, stmt, args...) if err != nil { @@ -35,7 +35,7 @@ func (d *DB) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*sto return reaction, nil } -func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*storepb.Reaction, error) { +func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*store.Reaction, error) { where, args := []string{"1 = 1"}, []interface{}{} if find.ID != nil { where, args = append(where, "`id` = ?"), append(args, *find.ID) @@ -64,20 +64,20 @@ func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*st } defer rows.Close() - list := []*storepb.Reaction{} + list := []*store.Reaction{} for rows.Next() { - reaction := &storepb.Reaction{} + reaction := &store.Reaction{} var reactionType string if err := rows.Scan( - &reaction.Id, + &reaction.ID, &reaction.CreatedTs, - &reaction.CreatorId, - &reaction.ContentId, + &reaction.CreatorID, + &reaction.ContentID, &reactionType, ); err != nil { return nil, err } - reaction.ReactionType = storepb.Reaction_Type(storepb.Reaction_Type_value[reactionType]) + reaction.ReactionType = storepb.ReactionType(storepb.ReactionType_value[reactionType]) list = append(list, reaction) } @@ -88,7 +88,7 @@ func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*st return list, nil } -func (d *DB) GetReaction(ctx context.Context, find *store.FindReaction) (*storepb.Reaction, error) { +func (d *DB) GetReaction(ctx context.Context, find *store.FindReaction) (*store.Reaction, error) { list, err := d.ListReactions(ctx, find) if err != nil { return nil, err diff --git a/store/db/mysql/webhook.go b/store/db/mysql/webhook.go index 37082df2..7ed650d1 100644 --- a/store/db/mysql/webhook.go +++ b/store/db/mysql/webhook.go @@ -4,14 +4,13 @@ import ( "context" "strings" - storepb "github.com/usememos/memos/proto/gen/store" "github.com/usememos/memos/store" ) -func (d *DB) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*storepb.Webhook, error) { +func (d *DB) CreateWebhook(ctx context.Context, create *store.Webhook) (*store.Webhook, error) { fields := []string{"`name`", "`url`", "`creator_id`"} placeholder := []string{"?", "?", "?"} - args := []any{create.Name, create.Url, create.CreatorId} + args := []any{create.Name, create.Url, create.CreatorID} stmt := "INSERT INTO `webhook` (" + strings.Join(fields, ", ") + ") VALUES (" + strings.Join(placeholder, ", ") + ")" result, err := d.db.ExecContext(ctx, stmt, args...) @@ -24,11 +23,11 @@ func (d *DB) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*store return nil, err } - create.Id = int32(id) - return d.GetWebhook(ctx, &store.FindWebhook{ID: &create.Id}) + create.ID = int32(id) + return d.GetWebhook(ctx, &store.FindWebhook{ID: &create.ID}) } -func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*storepb.Webhook, error) { +func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*store.Webhook, error) { where, args := []string{"1 = 1"}, []any{} if find.ID != nil { where, args = append(where, "`id` = ?"), append(args, *find.ID) @@ -45,22 +44,22 @@ func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*stor } defer rows.Close() - list := []*storepb.Webhook{} + list := []*store.Webhook{} for rows.Next() { - webhook := &storepb.Webhook{} + webhook := &store.Webhook{} var rowStatus string if err := rows.Scan( - &webhook.Id, + &webhook.ID, &webhook.CreatedTs, &webhook.UpdatedTs, &rowStatus, - &webhook.CreatorId, + &webhook.CreatorID, &webhook.Name, &webhook.Url, ); err != nil { return nil, err } - webhook.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + webhook.RowStatus = store.RowStatus(rowStatus) list = append(list, webhook) } @@ -71,7 +70,7 @@ func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*stor return list, nil } -func (d *DB) GetWebhook(ctx context.Context, find *store.FindWebhook) (*storepb.Webhook, error) { +func (d *DB) GetWebhook(ctx context.Context, find *store.FindWebhook) (*store.Webhook, error) { list, err := d.ListWebhooks(ctx, find) if err != nil { return nil, err @@ -82,7 +81,7 @@ func (d *DB) GetWebhook(ctx context.Context, find *store.FindWebhook) (*storepb. return list[0], nil } -func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*storepb.Webhook, error) { +func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*store.Webhook, error) { set, args := []string{}, []any{} if update.RowStatus != nil { set, args = append(set, "`row_status` = ?"), append(args, update.RowStatus.String()) diff --git a/store/db/postgres/reaction.go b/store/db/postgres/reaction.go index 83a3c8f6..f13e2c48 100644 --- a/store/db/postgres/reaction.go +++ b/store/db/postgres/reaction.go @@ -8,12 +8,12 @@ import ( "github.com/usememos/memos/store" ) -func (d *DB) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*storepb.Reaction, error) { +func (d *DB) UpsertReaction(ctx context.Context, upsert *store.Reaction) (*store.Reaction, error) { fields := []string{"creator_id", "content_id", "reaction_type"} - args := []interface{}{upsert.CreatorId, upsert.ContentId, upsert.ReactionType.String()} + args := []interface{}{upsert.CreatorID, upsert.ContentID, upsert.ReactionType.String()} stmt := "INSERT INTO reaction (" + strings.Join(fields, ", ") + ") VALUES (" + placeholders(len(args)) + ") RETURNING id, created_ts" if err := d.db.QueryRowContext(ctx, stmt, args...).Scan( - &upsert.Id, + &upsert.ID, &upsert.CreatedTs, ); err != nil { return nil, err @@ -23,7 +23,7 @@ func (d *DB) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*sto return reaction, nil } -func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*storepb.Reaction, error) { +func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*store.Reaction, error) { where, args := []string{"1 = 1"}, []interface{}{} if find.ID != nil { where, args = append(where, "id = "+placeholder(len(args)+1)), append(args, *find.ID) @@ -52,20 +52,20 @@ func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*st } defer rows.Close() - list := []*storepb.Reaction{} + list := []*store.Reaction{} for rows.Next() { - reaction := &storepb.Reaction{} + reaction := &store.Reaction{} var reactionType string if err := rows.Scan( - &reaction.Id, + &reaction.ID, &reaction.CreatedTs, - &reaction.CreatorId, - &reaction.ContentId, + &reaction.CreatorID, + &reaction.ContentID, &reactionType, ); err != nil { return nil, err } - reaction.ReactionType = storepb.Reaction_Type(storepb.Reaction_Type_value[reactionType]) + reaction.ReactionType = storepb.ReactionType(storepb.ReactionType_value[reactionType]) list = append(list, reaction) } diff --git a/store/db/postgres/webhook.go b/store/db/postgres/webhook.go index d0baf0f2..aefb43e6 100644 --- a/store/db/postgres/webhook.go +++ b/store/db/postgres/webhook.go @@ -4,17 +4,16 @@ import ( "context" "strings" - storepb "github.com/usememos/memos/proto/gen/store" "github.com/usememos/memos/store" ) -func (d *DB) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*storepb.Webhook, error) { +func (d *DB) CreateWebhook(ctx context.Context, create *store.Webhook) (*store.Webhook, error) { fields := []string{"name", "url", "creator_id"} - args := []any{create.Name, create.Url, create.CreatorId} + args := []any{create.Name, create.Url, create.CreatorID} stmt := "INSERT INTO webhook (" + strings.Join(fields, ", ") + ") VALUES (" + placeholders(len(args)) + ") RETURNING id, created_ts, updated_ts, row_status" var rowStatus string if err := d.db.QueryRowContext(ctx, stmt, args...).Scan( - &create.Id, + &create.ID, &create.CreatedTs, &create.UpdatedTs, &rowStatus, @@ -22,12 +21,12 @@ func (d *DB) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*store return nil, err } - create.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + create.RowStatus = store.RowStatus(rowStatus) webhook := create return webhook, nil } -func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*storepb.Webhook, error) { +func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*store.Webhook, error) { where, args := []string{"1 = 1"}, []any{} if find.ID != nil { where, args = append(where, "id = "+placeholder(len(args)+1)), append(args, *find.ID) @@ -55,22 +54,22 @@ func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*stor } defer rows.Close() - list := []*storepb.Webhook{} + list := []*store.Webhook{} for rows.Next() { - webhook := &storepb.Webhook{} + webhook := &store.Webhook{} var rowStatus string if err := rows.Scan( - &webhook.Id, + &webhook.ID, &webhook.CreatedTs, &webhook.UpdatedTs, &rowStatus, - &webhook.CreatorId, + &webhook.CreatorID, &webhook.Name, &webhook.Url, ); err != nil { return nil, err } - webhook.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + webhook.RowStatus = store.RowStatus(rowStatus) list = append(list, webhook) } @@ -81,7 +80,7 @@ func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*stor return list, nil } -func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*storepb.Webhook, error) { +func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*store.Webhook, error) { set, args := []string{}, []any{} if update.RowStatus != nil { set, args = append(set, "row_status = "+placeholder(len(args)+1)), append(args, update.RowStatus.String()) @@ -95,20 +94,20 @@ func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*s stmt := "UPDATE webhook SET " + strings.Join(set, ", ") + " WHERE id = " + placeholder(len(args)+1) + " RETURNING id, created_ts, updated_ts, row_status, creator_id, name, url" args = append(args, update.ID) - webhook := &storepb.Webhook{} + webhook := &store.Webhook{} var rowStatus string if err := d.db.QueryRowContext(ctx, stmt, args...).Scan( - &webhook.Id, + &webhook.ID, &webhook.CreatedTs, &webhook.UpdatedTs, &rowStatus, - &webhook.CreatorId, + &webhook.CreatorID, &webhook.Name, &webhook.Url, ); err != nil { return nil, err } - webhook.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + webhook.RowStatus = store.RowStatus(rowStatus) return webhook, nil } diff --git a/store/db/sqlite/reaction.go b/store/db/sqlite/reaction.go index a56b5c09..7bbceda0 100644 --- a/store/db/sqlite/reaction.go +++ b/store/db/sqlite/reaction.go @@ -8,13 +8,13 @@ import ( "github.com/usememos/memos/store" ) -func (d *DB) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*storepb.Reaction, error) { +func (d *DB) UpsertReaction(ctx context.Context, upsert *store.Reaction) (*store.Reaction, error) { fields := []string{"`creator_id`", "`content_id`", "`reaction_type`"} placeholder := []string{"?", "?", "?"} - args := []interface{}{upsert.CreatorId, upsert.ContentId, upsert.ReactionType.String()} + args := []interface{}{upsert.CreatorID, upsert.ContentID, upsert.ReactionType.String()} stmt := "INSERT INTO `reaction` (" + strings.Join(fields, ", ") + ") VALUES (" + strings.Join(placeholder, ", ") + ") RETURNING `id`, `created_ts`" if err := d.db.QueryRowContext(ctx, stmt, args...).Scan( - &upsert.Id, + &upsert.ID, &upsert.CreatedTs, ); err != nil { return nil, err @@ -24,7 +24,7 @@ func (d *DB) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*sto return reaction, nil } -func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*storepb.Reaction, error) { +func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*store.Reaction, error) { where, args := []string{"1 = 1"}, []interface{}{} if find.ID != nil { where, args = append(where, "id = ?"), append(args, *find.ID) @@ -53,20 +53,20 @@ func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*st } defer rows.Close() - list := []*storepb.Reaction{} + list := []*store.Reaction{} for rows.Next() { - reaction := &storepb.Reaction{} + reaction := &store.Reaction{} var reactionType string if err := rows.Scan( - &reaction.Id, + &reaction.ID, &reaction.CreatedTs, - &reaction.CreatorId, - &reaction.ContentId, + &reaction.CreatorID, + &reaction.ContentID, &reactionType, ); err != nil { return nil, err } - reaction.ReactionType = storepb.Reaction_Type(storepb.Reaction_Type_value[reactionType]) + reaction.ReactionType = storepb.ReactionType(storepb.ReactionType_value[reactionType]) list = append(list, reaction) } diff --git a/store/db/sqlite/webhook.go b/store/db/sqlite/webhook.go index 21df940d..360d1912 100644 --- a/store/db/sqlite/webhook.go +++ b/store/db/sqlite/webhook.go @@ -4,18 +4,17 @@ import ( "context" "strings" - storepb "github.com/usememos/memos/proto/gen/store" "github.com/usememos/memos/store" ) -func (d *DB) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*storepb.Webhook, error) { +func (d *DB) CreateWebhook(ctx context.Context, create *store.Webhook) (*store.Webhook, error) { fields := []string{"`name`", "`url`", "`creator_id`"} placeholder := []string{"?", "?", "?"} - args := []any{create.Name, create.Url, create.CreatorId} + args := []any{create.Name, create.Url, create.CreatorID} stmt := "INSERT INTO `webhook` (" + strings.Join(fields, ", ") + ") VALUES (" + strings.Join(placeholder, ", ") + ") RETURNING `id`, `created_ts`, `updated_ts`, `row_status`" var rowStatus string if err := d.db.QueryRowContext(ctx, stmt, args...).Scan( - &create.Id, + &create.ID, &create.CreatedTs, &create.UpdatedTs, &rowStatus, @@ -23,12 +22,12 @@ func (d *DB) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*store return nil, err } - create.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + create.RowStatus = store.RowStatus(rowStatus) webhook := create return webhook, nil } -func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*storepb.Webhook, error) { +func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*store.Webhook, error) { where, args := []string{"1 = 1"}, []any{} if find.ID != nil { where, args = append(where, "`id` = ?"), append(args, *find.ID) @@ -56,22 +55,22 @@ func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*stor } defer rows.Close() - list := []*storepb.Webhook{} + list := []*store.Webhook{} for rows.Next() { - webhook := &storepb.Webhook{} + webhook := &store.Webhook{} var rowStatus string if err := rows.Scan( - &webhook.Id, + &webhook.ID, &webhook.CreatedTs, &webhook.UpdatedTs, &rowStatus, - &webhook.CreatorId, + &webhook.CreatorID, &webhook.Name, &webhook.Url, ); err != nil { return nil, err } - webhook.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + webhook.RowStatus = store.RowStatus(rowStatus) list = append(list, webhook) } @@ -82,7 +81,7 @@ func (d *DB) ListWebhooks(ctx context.Context, find *store.FindWebhook) ([]*stor return list, nil } -func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*storepb.Webhook, error) { +func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*store.Webhook, error) { set, args := []string{}, []any{} if update.RowStatus != nil { set, args = append(set, "row_status = ?"), append(args, update.RowStatus.String()) @@ -96,20 +95,20 @@ func (d *DB) UpdateWebhook(ctx context.Context, update *store.UpdateWebhook) (*s args = append(args, update.ID) stmt := "UPDATE `webhook` SET " + strings.Join(set, ", ") + " WHERE `id` = ? RETURNING `id`, `created_ts`, `updated_ts`, `row_status`, `creator_id`, `name`, `url`" - webhook := &storepb.Webhook{} + webhook := &store.Webhook{} var rowStatus string if err := d.db.QueryRowContext(ctx, stmt, args...).Scan( - &webhook.Id, + &webhook.ID, &webhook.CreatedTs, &webhook.UpdatedTs, &rowStatus, - &webhook.CreatorId, + &webhook.CreatorID, &webhook.Name, &webhook.Url, ); err != nil { return nil, err } - webhook.RowStatus = storepb.RowStatus(storepb.RowStatus_value[rowStatus]) + webhook.RowStatus = store.RowStatus(rowStatus) return webhook, nil } diff --git a/store/driver.go b/store/driver.go index 3fa08f4c..8ff90ca3 100644 --- a/store/driver.go +++ b/store/driver.go @@ -3,8 +3,6 @@ package store import ( "context" "database/sql" - - storepb "github.com/usememos/memos/proto/gen/store" ) // Driver is an interface for store driver. @@ -88,13 +86,13 @@ type Driver interface { DeleteInbox(ctx context.Context, delete *DeleteInbox) error // Webhook model related methods. - CreateWebhook(ctx context.Context, create *storepb.Webhook) (*storepb.Webhook, error) - ListWebhooks(ctx context.Context, find *FindWebhook) ([]*storepb.Webhook, error) - UpdateWebhook(ctx context.Context, update *UpdateWebhook) (*storepb.Webhook, error) + CreateWebhook(ctx context.Context, create *Webhook) (*Webhook, error) + ListWebhooks(ctx context.Context, find *FindWebhook) ([]*Webhook, error) + UpdateWebhook(ctx context.Context, update *UpdateWebhook) (*Webhook, error) DeleteWebhook(ctx context.Context, delete *DeleteWebhook) error // Reaction model related methods. - UpsertReaction(ctx context.Context, create *storepb.Reaction) (*storepb.Reaction, error) - ListReactions(ctx context.Context, find *FindReaction) ([]*storepb.Reaction, error) + UpsertReaction(ctx context.Context, create *Reaction) (*Reaction, error) + ListReactions(ctx context.Context, find *FindReaction) ([]*Reaction, error) DeleteReaction(ctx context.Context, delete *DeleteReaction) error } diff --git a/store/reaction.go b/store/reaction.go index 67d4906a..72b321e4 100644 --- a/store/reaction.go +++ b/store/reaction.go @@ -6,6 +6,16 @@ import ( storepb "github.com/usememos/memos/proto/gen/store" ) +type Reaction struct { + ID int32 + CreatedTs int64 + CreatorID int32 + // ContentID is the id of the content that the reaction is for. + // This can be a memo. e.g. memos/101 + ContentID string + ReactionType storepb.ReactionType +} + type FindReaction struct { ID *int32 CreatorID *int32 @@ -16,11 +26,11 @@ type DeleteReaction struct { ID int32 } -func (s *Store) UpsertReaction(ctx context.Context, upsert *storepb.Reaction) (*storepb.Reaction, error) { +func (s *Store) UpsertReaction(ctx context.Context, upsert *Reaction) (*Reaction, error) { return s.driver.UpsertReaction(ctx, upsert) } -func (s *Store) ListReactions(ctx context.Context, find *FindReaction) ([]*storepb.Reaction, error) { +func (s *Store) ListReactions(ctx context.Context, find *FindReaction) ([]*Reaction, error) { return s.driver.ListReactions(ctx, find) } diff --git a/store/webhook.go b/store/webhook.go index c261806e..4236c2cc 100644 --- a/store/webhook.go +++ b/store/webhook.go @@ -2,10 +2,18 @@ package store import ( "context" - - storepb "github.com/usememos/memos/proto/gen/store" ) +type Webhook struct { + ID int32 + CreatedTs int64 + UpdatedTs int64 + CreatorID int32 + RowStatus RowStatus + Name string + Url string +} + type FindWebhook struct { ID *int32 CreatorID *int32 @@ -13,7 +21,7 @@ type FindWebhook struct { type UpdateWebhook struct { ID int32 - RowStatus *storepb.RowStatus + RowStatus *RowStatus Name *string URL *string } @@ -22,15 +30,15 @@ type DeleteWebhook struct { ID int32 } -func (s *Store) CreateWebhook(ctx context.Context, create *storepb.Webhook) (*storepb.Webhook, error) { +func (s *Store) CreateWebhook(ctx context.Context, create *Webhook) (*Webhook, error) { return s.driver.CreateWebhook(ctx, create) } -func (s *Store) ListWebhooks(ctx context.Context, find *FindWebhook) ([]*storepb.Webhook, error) { +func (s *Store) ListWebhooks(ctx context.Context, find *FindWebhook) ([]*Webhook, error) { return s.driver.ListWebhooks(ctx, find) } -func (s *Store) GetWebhook(ctx context.Context, find *FindWebhook) (*storepb.Webhook, error) { +func (s *Store) GetWebhook(ctx context.Context, find *FindWebhook) (*Webhook, error) { list, err := s.ListWebhooks(ctx, find) if err != nil { return nil, err @@ -41,7 +49,7 @@ func (s *Store) GetWebhook(ctx context.Context, find *FindWebhook) (*storepb.Web return list[0], nil } -func (s *Store) UpdateWebhook(ctx context.Context, update *UpdateWebhook) (*storepb.Webhook, error) { +func (s *Store) UpdateWebhook(ctx context.Context, update *UpdateWebhook) (*Webhook, error) { return s.driver.UpdateWebhook(ctx, update) } diff --git a/test/store/reaction_test.go b/test/store/reaction_test.go index 3e3b1e2f..32f508d6 100644 --- a/test/store/reaction_test.go +++ b/test/store/reaction_test.go @@ -18,14 +18,14 @@ func TestReactionStore(t *testing.T) { require.NoError(t, err) contentID := "test_content_id" - reaction, err := ts.UpsertReaction(ctx, &storepb.Reaction{ - CreatorId: user.ID, - ContentId: contentID, - ReactionType: storepb.Reaction_HEART, + reaction, err := ts.UpsertReaction(ctx, &store.Reaction{ + CreatorID: user.ID, + ContentID: contentID, + ReactionType: storepb.ReactionType_HEART, }) require.NoError(t, err) require.NotNil(t, reaction) - require.NotEmpty(t, reaction.Id) + require.NotEmpty(t, reaction.ID) reactions, err := ts.ListReactions(ctx, &store.FindReaction{ ContentID: &contentID, @@ -35,7 +35,7 @@ func TestReactionStore(t *testing.T) { require.Equal(t, reaction, reactions[0]) err = ts.DeleteReaction(ctx, &store.DeleteReaction{ - ID: reaction.Id, + ID: reaction.ID, }) require.NoError(t, err) diff --git a/test/store/webhook_test.go b/test/store/webhook_test.go index 2c9ae546..3b3a9394 100644 --- a/test/store/webhook_test.go +++ b/test/store/webhook_test.go @@ -6,7 +6,6 @@ import ( "github.com/stretchr/testify/require" - storepb "github.com/usememos/memos/proto/gen/store" "github.com/usememos/memos/store" ) @@ -15,15 +14,15 @@ func TestWebhookStore(t *testing.T) { ts := NewTestingStore(ctx, t) user, err := createTestingHostUser(ctx, ts) require.NoError(t, err) - webhook, err := ts.CreateWebhook(ctx, &storepb.Webhook{ - CreatorId: user.ID, + webhook, err := ts.CreateWebhook(ctx, &store.Webhook{ + CreatorID: user.ID, Name: "test_webhook", Url: "https://example.com", - RowStatus: storepb.RowStatus_NORMAL, + RowStatus: store.Normal, }) require.NoError(t, err) require.Equal(t, "test_webhook", webhook.Name) - require.Equal(t, user.ID, webhook.CreatorId) + require.Equal(t, user.ID, webhook.CreatorID) webhooks, err := ts.ListWebhooks(ctx, &store.FindWebhook{ CreatorID: &user.ID, }) @@ -32,14 +31,14 @@ func TestWebhookStore(t *testing.T) { require.Equal(t, webhook, webhooks[0]) newName := "test_webhook_new" updatedWebhook, err := ts.UpdateWebhook(ctx, &store.UpdateWebhook{ - ID: webhook.Id, + ID: webhook.ID, Name: &newName, }) require.NoError(t, err) require.Equal(t, newName, updatedWebhook.Name) - require.Equal(t, webhook.CreatorId, updatedWebhook.CreatorId) + require.Equal(t, webhook.CreatorID, updatedWebhook.CreatorID) err = ts.DeleteWebhook(ctx, &store.DeleteWebhook{ - ID: webhook.Id, + ID: webhook.ID, }) require.NoError(t, err) webhooks, err = ts.ListWebhooks(ctx, &store.FindWebhook{