Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
922de077
Commit
922de077
authored
Oct 01, 2023
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: impl memo comment api
parent
7549c807
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1179 additions
and
92 deletions
+1179
-92
memo_service.go
api/v2/memo_service.go
+78
-0
memo_service.proto
proto/api/v2/memo_service.proto
+48
-5
README.md
proto/gen/api/v2/README.md
+101
-0
memo_service.pb.go
proto/gen/api/v2/memo_service.pb.go
+524
-83
memo_service.pb.gw.go
proto/gen/api/v2/memo_service.pb.gw.go
+311
-0
memo_service_grpc.pb.go
proto/gen/api/v2/memo_service_grpc.pb.go
+113
-2
memo_relation.go
store/memo_relation.go
+4
-2
No files found.
api/v2/memo_service.go
View file @
922de077
...
...
@@ -26,6 +26,31 @@ func NewMemoService(store *store.Store) *MemoService {
}
}
func
(
s
*
MemoService
)
CreateMemo
(
ctx
context
.
Context
,
request
*
apiv2pb
.
CreateMemoRequest
)
(
*
apiv2pb
.
CreateMemoResponse
,
error
)
{
user
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get user"
)
}
if
user
==
nil
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
create
:=
&
store
.
Memo
{
CreatorID
:
user
.
ID
,
Content
:
request
.
Content
,
Visibility
:
store
.
Visibility
(
request
.
Visibility
),
}
memo
,
err
:=
s
.
Store
.
CreateMemo
(
ctx
,
create
)
if
err
!=
nil
{
return
nil
,
err
}
response
:=
&
apiv2pb
.
CreateMemoResponse
{
Memo
:
convertMemoFromStore
(
memo
),
}
return
response
,
nil
}
func
(
s
*
MemoService
)
ListMemos
(
ctx
context
.
Context
,
request
*
apiv2pb
.
ListMemosRequest
)
(
*
apiv2pb
.
ListMemosResponse
,
error
)
{
memoFind
:=
&
store
.
FindMemo
{}
if
request
.
Filter
!=
""
{
...
...
@@ -99,6 +124,59 @@ func (s *MemoService) GetMemo(ctx context.Context, request *apiv2pb.GetMemoReque
return
response
,
nil
}
func
(
s
*
MemoService
)
CreateMemoComment
(
ctx
context
.
Context
,
request
*
apiv2pb
.
CreateMemoCommentRequest
)
(
*
apiv2pb
.
CreateMemoCommentResponse
,
error
)
{
// Create the comment memo first.
createMemoResponse
,
err
:=
s
.
CreateMemo
(
ctx
,
request
.
Create
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to create memo"
)
}
// Build the relation between the comment memo and the original memo.
memo
:=
createMemoResponse
.
Memo
_
,
err
=
s
.
Store
.
UpsertMemoRelation
(
ctx
,
&
store
.
MemoRelation
{
MemoID
:
memo
.
Id
,
RelatedMemoID
:
request
.
Id
,
Type
:
store
.
MemoRelationComment
,
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to create memo relation"
)
}
response
:=
&
apiv2pb
.
CreateMemoCommentResponse
{
Memo
:
memo
,
}
return
response
,
nil
}
func
(
s
*
MemoService
)
ListMemoComments
(
ctx
context
.
Context
,
request
*
apiv2pb
.
ListMemoCommentsRequest
)
(
*
apiv2pb
.
ListMemoCommentsResponse
,
error
)
{
memoRelationComment
:=
store
.
MemoRelationComment
memoRelations
,
err
:=
s
.
Store
.
ListMemoRelations
(
ctx
,
&
store
.
FindMemoRelation
{
RelatedMemoID
:
&
request
.
Id
,
Type
:
&
memoRelationComment
,
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to list memo relations"
)
}
var
memos
[]
*
apiv2pb
.
Memo
for
_
,
memoRelation
:=
range
memoRelations
{
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
ID
:
&
memoRelation
.
MemoID
,
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
if
memo
!=
nil
{
memos
=
append
(
memos
,
convertMemoFromStore
(
memo
))
}
}
response
:=
&
apiv2pb
.
ListMemoCommentsResponse
{
Memos
:
memos
,
}
return
response
,
nil
}
// ListMemosFilterCELAttributes are the CEL attributes for ListMemosFilter.
var
ListMemosFilterCELAttributes
=
[]
cel
.
EnvOption
{
cel
.
Variable
(
"visibility"
,
cel
.
StringType
),
...
...
proto/api/v2/memo_service.proto
View file @
922de077
...
...
@@ -9,6 +9,10 @@ import "google/api/client.proto";
option
go_package
=
"gen/api/v2"
;
service
MemoService
{
rpc
CreateMemo
(
CreateMemoRequest
)
returns
(
CreateMemoResponse
)
{
option
(
google.api.http
)
=
{
post
:
"/api/v2/memos"
};
}
rpc
ListMemos
(
ListMemosRequest
)
returns
(
ListMemosResponse
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v2/memos"
};
}
...
...
@@ -17,6 +21,26 @@ service MemoService {
option
(
google.api.http
)
=
{
get
:
"/api/v2/memos/{id}"
};
option
(
google.api.method_signature
)
=
"id"
;
}
rpc
CreateMemoComment
(
CreateMemoCommentRequest
)
returns
(
CreateMemoCommentResponse
)
{
option
(
google.api.http
)
=
{
post
:
"/api/v2/memos/{id}/comments"
};
option
(
google.api.method_signature
)
=
"id"
;
}
rpc
ListMemoComments
(
ListMemoCommentsRequest
)
returns
(
ListMemoCommentsResponse
)
{
option
(
google.api.http
)
=
{
get
:
"/api/v2/memos/{id}/comments"
};
option
(
google.api.method_signature
)
=
"id"
;
}
}
enum
Visibility
{
VISIBILITY_UNSPECIFIED
=
0
;
PRIVATE
=
1
;
PROTECTED
=
2
;
PUBLIC
=
3
;
}
message
Memo
{
...
...
@@ -37,6 +61,16 @@ message Memo {
bool
pinned
=
8
;
}
message
CreateMemoRequest
{
string
content
=
1
;
Visibility
visibility
=
2
;
}
message
CreateMemoResponse
{
Memo
memo
=
1
;
}
message
ListMemosRequest
{
int32
page
=
1
;
...
...
@@ -58,12 +92,21 @@ message GetMemoResponse {
Memo
memo
=
1
;
}
enum
Visibility
{
VISIBILITY_UNSPECIFIED
=
0
;
message
CreateMemoCommentRequest
{
// id is the memo id to create comment for.
int32
id
=
1
;
PRIVATE
=
1
;
CreateMemoRequest
create
=
2
;
}
PROTECTED
=
2
;
message
CreateMemoCommentResponse
{
Memo
memo
=
1
;
}
PUBLIC
=
3
;
message
ListMemoCommentsRequest
{
int32
id
=
1
;
}
message
ListMemoCommentsResponse
{
repeated
Memo
memos
=
1
;
}
proto/gen/api/v2/README.md
View file @
922de077
...
...
@@ -7,8 +7,14 @@
-
[
RowStatus
](
#memos-api-v2-RowStatus
)
-
[
api/v2/memo_service.proto
](
#api_v2_memo_service-proto
)
-
[
CreateMemoCommentRequest
](
#memos-api-v2-CreateMemoCommentRequest
)
-
[
CreateMemoCommentResponse
](
#memos-api-v2-CreateMemoCommentResponse
)
-
[
CreateMemoRequest
](
#memos-api-v2-CreateMemoRequest
)
-
[
CreateMemoResponse
](
#memos-api-v2-CreateMemoResponse
)
-
[
GetMemoRequest
](
#memos-api-v2-GetMemoRequest
)
-
[
GetMemoResponse
](
#memos-api-v2-GetMemoResponse
)
-
[
ListMemoCommentsRequest
](
#memos-api-v2-ListMemoCommentsRequest
)
-
[
ListMemoCommentsResponse
](
#memos-api-v2-ListMemoCommentsResponse
)
-
[
ListMemosRequest
](
#memos-api-v2-ListMemosRequest
)
-
[
ListMemosResponse
](
#memos-api-v2-ListMemosResponse
)
-
[
Memo
](
#memos-api-v2-Memo
)
...
...
@@ -100,6 +106,68 @@
<a
name=
"memos-api-v2-CreateMemoCommentRequest"
></a>
### CreateMemoCommentRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id |
[
int32
](
#int32
)
| | id is the memo id to create comment for. |
| create |
[
CreateMemoRequest
](
#memos-api-v2-CreateMemoRequest
)
| | |
<a
name=
"memos-api-v2-CreateMemoCommentResponse"
></a>
### CreateMemoCommentResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| memo |
[
Memo
](
#memos-api-v2-Memo
)
| | |
<a
name=
"memos-api-v2-CreateMemoRequest"
></a>
### CreateMemoRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| content |
[
string
](
#string
)
| | |
| visibility |
[
Visibility
](
#memos-api-v2-Visibility
)
| | |
<a
name=
"memos-api-v2-CreateMemoResponse"
></a>
### CreateMemoResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| memo |
[
Memo
](
#memos-api-v2-Memo
)
| | |
<a
name=
"memos-api-v2-GetMemoRequest"
></a>
### GetMemoRequest
...
...
@@ -130,6 +198,36 @@
<a
name=
"memos-api-v2-ListMemoCommentsRequest"
></a>
### ListMemoCommentsRequest
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| id |
[
int32
](
#int32
)
| | |
<a
name=
"memos-api-v2-ListMemoCommentsResponse"
></a>
### ListMemoCommentsResponse
| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| memos |
[
Memo
](
#memos-api-v2-Memo
)
| repeated | |
<a
name=
"memos-api-v2-ListMemosRequest"
></a>
### ListMemosRequest
...
...
@@ -211,8 +309,11 @@
| Method Name | Request Type | Response Type | Description |
| ----------- | ------------ | ------------- | ------------|
| CreateMemo |
[
CreateMemoRequest
](
#memos-api-v2-CreateMemoRequest
)
|
[
CreateMemoResponse
](
#memos-api-v2-CreateMemoResponse
)
| |
| ListMemos |
[
ListMemosRequest
](
#memos-api-v2-ListMemosRequest
)
|
[
ListMemosResponse
](
#memos-api-v2-ListMemosResponse
)
| |
| GetMemo |
[
GetMemoRequest
](
#memos-api-v2-GetMemoRequest
)
|
[
GetMemoResponse
](
#memos-api-v2-GetMemoResponse
)
| |
| CreateMemoComment |
[
CreateMemoCommentRequest
](
#memos-api-v2-CreateMemoCommentRequest
)
|
[
CreateMemoCommentResponse
](
#memos-api-v2-CreateMemoCommentResponse
)
| |
| ListMemoComments |
[
ListMemoCommentsRequest
](
#memos-api-v2-ListMemoCommentsRequest
)
|
[
ListMemoCommentsResponse
](
#memos-api-v2-ListMemoCommentsResponse
)
| |
...
...
proto/gen/api/v2/memo_service.pb.go
View file @
922de077
This diff is collapsed.
Click to expand it.
proto/gen/api/v2/memo_service.pb.gw.go
View file @
922de077
This diff is collapsed.
Click to expand it.
proto/gen/api/v2/memo_service_grpc.pb.go
View file @
922de077
...
...
@@ -19,16 +19,22 @@ import (
const
_
=
grpc
.
SupportPackageIsVersion7
const
(
MemoService_ListMemos_FullMethodName
=
"/memos.api.v2.MemoService/ListMemos"
MemoService_GetMemo_FullMethodName
=
"/memos.api.v2.MemoService/GetMemo"
MemoService_CreateMemo_FullMethodName
=
"/memos.api.v2.MemoService/CreateMemo"
MemoService_ListMemos_FullMethodName
=
"/memos.api.v2.MemoService/ListMemos"
MemoService_GetMemo_FullMethodName
=
"/memos.api.v2.MemoService/GetMemo"
MemoService_CreateMemoComment_FullMethodName
=
"/memos.api.v2.MemoService/CreateMemoComment"
MemoService_ListMemoComments_FullMethodName
=
"/memos.api.v2.MemoService/ListMemoComments"
)
// MemoServiceClient is the client API for MemoService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type
MemoServiceClient
interface
{
CreateMemo
(
ctx
context
.
Context
,
in
*
CreateMemoRequest
,
opts
...
grpc
.
CallOption
)
(
*
CreateMemoResponse
,
error
)
ListMemos
(
ctx
context
.
Context
,
in
*
ListMemosRequest
,
opts
...
grpc
.
CallOption
)
(
*
ListMemosResponse
,
error
)
GetMemo
(
ctx
context
.
Context
,
in
*
GetMemoRequest
,
opts
...
grpc
.
CallOption
)
(
*
GetMemoResponse
,
error
)
CreateMemoComment
(
ctx
context
.
Context
,
in
*
CreateMemoCommentRequest
,
opts
...
grpc
.
CallOption
)
(
*
CreateMemoCommentResponse
,
error
)
ListMemoComments
(
ctx
context
.
Context
,
in
*
ListMemoCommentsRequest
,
opts
...
grpc
.
CallOption
)
(
*
ListMemoCommentsResponse
,
error
)
}
type
memoServiceClient
struct
{
...
...
@@ -39,6 +45,15 @@ func NewMemoServiceClient(cc grpc.ClientConnInterface) MemoServiceClient {
return
&
memoServiceClient
{
cc
}
}
func
(
c
*
memoServiceClient
)
CreateMemo
(
ctx
context
.
Context
,
in
*
CreateMemoRequest
,
opts
...
grpc
.
CallOption
)
(
*
CreateMemoResponse
,
error
)
{
out
:=
new
(
CreateMemoResponse
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
MemoService_CreateMemo_FullMethodName
,
in
,
out
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
func
(
c
*
memoServiceClient
)
ListMemos
(
ctx
context
.
Context
,
in
*
ListMemosRequest
,
opts
...
grpc
.
CallOption
)
(
*
ListMemosResponse
,
error
)
{
out
:=
new
(
ListMemosResponse
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
MemoService_ListMemos_FullMethodName
,
in
,
out
,
opts
...
)
...
...
@@ -57,12 +72,33 @@ func (c *memoServiceClient) GetMemo(ctx context.Context, in *GetMemoRequest, opt
return
out
,
nil
}
func
(
c
*
memoServiceClient
)
CreateMemoComment
(
ctx
context
.
Context
,
in
*
CreateMemoCommentRequest
,
opts
...
grpc
.
CallOption
)
(
*
CreateMemoCommentResponse
,
error
)
{
out
:=
new
(
CreateMemoCommentResponse
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
MemoService_CreateMemoComment_FullMethodName
,
in
,
out
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
func
(
c
*
memoServiceClient
)
ListMemoComments
(
ctx
context
.
Context
,
in
*
ListMemoCommentsRequest
,
opts
...
grpc
.
CallOption
)
(
*
ListMemoCommentsResponse
,
error
)
{
out
:=
new
(
ListMemoCommentsResponse
)
err
:=
c
.
cc
.
Invoke
(
ctx
,
MemoService_ListMemoComments_FullMethodName
,
in
,
out
,
opts
...
)
if
err
!=
nil
{
return
nil
,
err
}
return
out
,
nil
}
// MemoServiceServer is the server API for MemoService service.
// All implementations must embed UnimplementedMemoServiceServer
// for forward compatibility
type
MemoServiceServer
interface
{
CreateMemo
(
context
.
Context
,
*
CreateMemoRequest
)
(
*
CreateMemoResponse
,
error
)
ListMemos
(
context
.
Context
,
*
ListMemosRequest
)
(
*
ListMemosResponse
,
error
)
GetMemo
(
context
.
Context
,
*
GetMemoRequest
)
(
*
GetMemoResponse
,
error
)
CreateMemoComment
(
context
.
Context
,
*
CreateMemoCommentRequest
)
(
*
CreateMemoCommentResponse
,
error
)
ListMemoComments
(
context
.
Context
,
*
ListMemoCommentsRequest
)
(
*
ListMemoCommentsResponse
,
error
)
mustEmbedUnimplementedMemoServiceServer
()
}
...
...
@@ -70,12 +106,21 @@ type MemoServiceServer interface {
type
UnimplementedMemoServiceServer
struct
{
}
func
(
UnimplementedMemoServiceServer
)
CreateMemo
(
context
.
Context
,
*
CreateMemoRequest
)
(
*
CreateMemoResponse
,
error
)
{
return
nil
,
status
.
Errorf
(
codes
.
Unimplemented
,
"method CreateMemo not implemented"
)
}
func
(
UnimplementedMemoServiceServer
)
ListMemos
(
context
.
Context
,
*
ListMemosRequest
)
(
*
ListMemosResponse
,
error
)
{
return
nil
,
status
.
Errorf
(
codes
.
Unimplemented
,
"method ListMemos not implemented"
)
}
func
(
UnimplementedMemoServiceServer
)
GetMemo
(
context
.
Context
,
*
GetMemoRequest
)
(
*
GetMemoResponse
,
error
)
{
return
nil
,
status
.
Errorf
(
codes
.
Unimplemented
,
"method GetMemo not implemented"
)
}
func
(
UnimplementedMemoServiceServer
)
CreateMemoComment
(
context
.
Context
,
*
CreateMemoCommentRequest
)
(
*
CreateMemoCommentResponse
,
error
)
{
return
nil
,
status
.
Errorf
(
codes
.
Unimplemented
,
"method CreateMemoComment not implemented"
)
}
func
(
UnimplementedMemoServiceServer
)
ListMemoComments
(
context
.
Context
,
*
ListMemoCommentsRequest
)
(
*
ListMemoCommentsResponse
,
error
)
{
return
nil
,
status
.
Errorf
(
codes
.
Unimplemented
,
"method ListMemoComments not implemented"
)
}
func
(
UnimplementedMemoServiceServer
)
mustEmbedUnimplementedMemoServiceServer
()
{}
// UnsafeMemoServiceServer may be embedded to opt out of forward compatibility for this service.
...
...
@@ -89,6 +134,24 @@ func RegisterMemoServiceServer(s grpc.ServiceRegistrar, srv MemoServiceServer) {
s
.
RegisterService
(
&
MemoService_ServiceDesc
,
srv
)
}
func
_MemoService_CreateMemo_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
CreateMemoRequest
)
if
err
:=
dec
(
in
);
err
!=
nil
{
return
nil
,
err
}
if
interceptor
==
nil
{
return
srv
.
(
MemoServiceServer
)
.
CreateMemo
(
ctx
,
in
)
}
info
:=
&
grpc
.
UnaryServerInfo
{
Server
:
srv
,
FullMethod
:
MemoService_CreateMemo_FullMethodName
,
}
handler
:=
func
(
ctx
context
.
Context
,
req
interface
{})
(
interface
{},
error
)
{
return
srv
.
(
MemoServiceServer
)
.
CreateMemo
(
ctx
,
req
.
(
*
CreateMemoRequest
))
}
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
func
_MemoService_ListMemos_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
ListMemosRequest
)
if
err
:=
dec
(
in
);
err
!=
nil
{
...
...
@@ -125,6 +188,42 @@ func _MemoService_GetMemo_Handler(srv interface{}, ctx context.Context, dec func
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
func
_MemoService_CreateMemoComment_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
CreateMemoCommentRequest
)
if
err
:=
dec
(
in
);
err
!=
nil
{
return
nil
,
err
}
if
interceptor
==
nil
{
return
srv
.
(
MemoServiceServer
)
.
CreateMemoComment
(
ctx
,
in
)
}
info
:=
&
grpc
.
UnaryServerInfo
{
Server
:
srv
,
FullMethod
:
MemoService_CreateMemoComment_FullMethodName
,
}
handler
:=
func
(
ctx
context
.
Context
,
req
interface
{})
(
interface
{},
error
)
{
return
srv
.
(
MemoServiceServer
)
.
CreateMemoComment
(
ctx
,
req
.
(
*
CreateMemoCommentRequest
))
}
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
func
_MemoService_ListMemoComments_Handler
(
srv
interface
{},
ctx
context
.
Context
,
dec
func
(
interface
{})
error
,
interceptor
grpc
.
UnaryServerInterceptor
)
(
interface
{},
error
)
{
in
:=
new
(
ListMemoCommentsRequest
)
if
err
:=
dec
(
in
);
err
!=
nil
{
return
nil
,
err
}
if
interceptor
==
nil
{
return
srv
.
(
MemoServiceServer
)
.
ListMemoComments
(
ctx
,
in
)
}
info
:=
&
grpc
.
UnaryServerInfo
{
Server
:
srv
,
FullMethod
:
MemoService_ListMemoComments_FullMethodName
,
}
handler
:=
func
(
ctx
context
.
Context
,
req
interface
{})
(
interface
{},
error
)
{
return
srv
.
(
MemoServiceServer
)
.
ListMemoComments
(
ctx
,
req
.
(
*
ListMemoCommentsRequest
))
}
return
interceptor
(
ctx
,
in
,
info
,
handler
)
}
// MemoService_ServiceDesc is the grpc.ServiceDesc for MemoService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
...
...
@@ -132,6 +231,10 @@ var MemoService_ServiceDesc = grpc.ServiceDesc{
ServiceName
:
"memos.api.v2.MemoService"
,
HandlerType
:
(
*
MemoServiceServer
)(
nil
),
Methods
:
[]
grpc
.
MethodDesc
{
{
MethodName
:
"CreateMemo"
,
Handler
:
_MemoService_CreateMemo_Handler
,
},
{
MethodName
:
"ListMemos"
,
Handler
:
_MemoService_ListMemos_Handler
,
...
...
@@ -140,6 +243,14 @@ var MemoService_ServiceDesc = grpc.ServiceDesc{
MethodName
:
"GetMemo"
,
Handler
:
_MemoService_GetMemo_Handler
,
},
{
MethodName
:
"CreateMemoComment"
,
Handler
:
_MemoService_CreateMemoComment_Handler
,
},
{
MethodName
:
"ListMemoComments"
,
Handler
:
_MemoService_ListMemoComments_Handler
,
},
},
Streams
:
[]
grpc
.
StreamDesc
{},
Metadata
:
"api/v2/memo_service.proto"
,
...
...
store/memo_relation.go
View file @
922de077
...
...
@@ -7,8 +7,10 @@ import (
type
MemoRelationType
string
const
(
MemoRelationReference
MemoRelationType
=
"REFERENCE"
MemoRelationAdditional
MemoRelationType
=
"ADDITIONAL"
// MemoRelationReference is the type for a reference memo relation.
MemoRelationReference
MemoRelationType
=
"REFERENCE"
// MemoRelationComment is the type for a comment memo relation.
MemoRelationComment
MemoRelationType
=
"COMMENT"
)
type
MemoRelation
struct
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment