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
98aa0b73
Commit
98aa0b73
authored
Feb 01, 2025
by
johnnyjoy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor: retire memo uid
parent
b0119f32
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
375 additions
and
387 deletions
+375
-387
memo_service.proto
proto/api/v1/memo_service.proto
+2
-3
memo_service.pb.go
proto/gen/api/v1/memo_service.pb.go
+328
-338
apidocs.swagger.yaml
proto/gen/apidocs.swagger.yaml
+0
-10
memo_relation_service.go
server/router/api/v1/memo_relation_service.go
+6
-6
memo_resource_service.go
server/router/api/v1/memo_resource_service.go
+4
-4
memo_service.go
server/router/api/v1/memo_service.go
+30
-22
resource_name.go
server/router/api/v1/resource_name.go
+3
-2
resource_service.go
server/router/api/v1/resource_service.go
+2
-2
No files found.
proto/api/v1/memo_service.proto
View file @
98aa0b73
...
...
@@ -124,13 +124,12 @@ enum Visibility {
}
message
Memo
{
reserved
2
;
// The name of the memo.
// Format: memos/{memo}, memo is the user defined id or uuid.
string
name
=
1
[(
google.api.field_behavior
)
=
OUTPUT_ONLY
];
// The system generated unique id. Auto-incremented.
int32
uid
=
2
[(
google.api.field_behavior
)
=
OUTPUT_ONLY
];
State
state
=
3
;
// The name of the creator.
...
...
proto/gen/api/v1/memo_service.pb.go
View file @
98aa0b73
This diff is collapsed.
Click to expand it.
proto/gen/apidocs.swagger.yaml
View file @
98aa0b73
...
...
@@ -796,11 +796,6 @@ paths:
schema
:
type
:
object
properties
:
uid
:
type
:
integer
format
:
int32
description
:
The system generated unique id. Auto-incremented.
readOnly
:
true
state
:
$ref
:
'
#/definitions/v1State'
creator
:
...
...
@@ -1894,11 +1889,6 @@ definitions:
type
:
string
description
:
"
The
name
of
the
memo.
\r\n
Format:
memos/{memo},
memo
is
the
user
defined
id
or
uuid."
readOnly
:
true
uid
:
type
:
integer
format
:
int32
description
:
The system generated unique id. Auto-incremented.
readOnly
:
true
state
:
$ref
:
'
#/definitions/v1State'
creator
:
...
...
server/router/api/v1/memo_relation_service.go
View file @
98aa0b73
...
...
@@ -14,11 +14,11 @@ import (
)
func
(
s
*
APIV1Service
)
SetMemoRelations
(
ctx
context
.
Context
,
request
*
v1pb
.
SetMemoRelationsRequest
)
(
*
emptypb
.
Empty
,
error
)
{
memo
ID
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memo
UID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoID
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memo
U
ID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
...
...
@@ -41,11 +41,11 @@ func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMe
if
relation
.
Type
==
v1pb
.
MemoRelation_COMMENT
{
continue
}
relatedMemo
ID
,
err
:=
ExtractMemo
IDFromName
(
relation
.
RelatedMemo
.
Name
)
relatedMemo
UID
,
err
:=
ExtractMemoU
IDFromName
(
relation
.
RelatedMemo
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid related memo name: %v"
,
err
)
}
relatedMemo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
relatedMemoID
})
relatedMemo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
relatedMemo
U
ID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get related memo"
)
}
...
...
@@ -62,11 +62,11 @@ func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMe
}
func
(
s
*
APIV1Service
)
ListMemoRelations
(
ctx
context
.
Context
,
request
*
v1pb
.
ListMemoRelationsRequest
)
(
*
v1pb
.
ListMemoRelationsResponse
,
error
)
{
memo
ID
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memo
UID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoID
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memo
U
ID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
...
...
server/router/api/v1/memo_resource_service.go
View file @
98aa0b73
...
...
@@ -14,11 +14,11 @@ import (
)
func
(
s
*
APIV1Service
)
SetMemoResources
(
ctx
context
.
Context
,
request
*
v1pb
.
SetMemoResourcesRequest
)
(
*
emptypb
.
Empty
,
error
)
{
memo
ID
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memo
UID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoID
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memo
U
ID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
...
...
@@ -69,11 +69,11 @@ func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMe
}
func
(
s
*
APIV1Service
)
ListMemoResources
(
ctx
context
.
Context
,
request
*
v1pb
.
ListMemoResourcesRequest
)
(
*
v1pb
.
ListMemoResourcesResponse
,
error
)
{
id
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memoUID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
id
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoUID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo: %v"
,
err
)
}
...
...
server/router/api/v1/memo_service.go
View file @
98aa0b73
...
...
@@ -150,12 +150,12 @@ func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosReq
}
func
(
s
*
APIV1Service
)
GetMemo
(
ctx
context
.
Context
,
request
*
v1pb
.
GetMemoRequest
)
(
*
v1pb
.
Memo
,
error
)
{
id
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memoUID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
id
,
UID
:
&
memoUID
,
})
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -184,7 +184,7 @@ func (s *APIV1Service) GetMemo(ctx context.Context, request *v1pb.GetMemoRequest
}
func
(
s
*
APIV1Service
)
UpdateMemo
(
ctx
context
.
Context
,
request
*
v1pb
.
UpdateMemoRequest
)
(
*
v1pb
.
Memo
,
error
)
{
id
,
err
:=
ExtractMemo
IDFromName
(
request
.
Memo
.
Name
)
memoUID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Memo
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
...
...
@@ -192,7 +192,7 @@ func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoR
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"update mask is required"
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
id
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoUID
})
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -308,12 +308,12 @@ func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoR
}
func
(
s
*
APIV1Service
)
DeleteMemo
(
ctx
context
.
Context
,
request
*
v1pb
.
DeleteMemoRequest
)
(
*
emptypb
.
Empty
,
error
)
{
id
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memoUID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
id
,
UID
:
&
memoUID
,
})
if
err
!=
nil
{
return
nil
,
err
...
...
@@ -380,42 +380,50 @@ func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoR
}
func
(
s
*
APIV1Service
)
CreateMemoComment
(
ctx
context
.
Context
,
request
*
v1pb
.
CreateMemoCommentRequest
)
(
*
v1pb
.
Memo
,
error
)
{
id
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memoUID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
relatedMemo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
id
})
relatedMemo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoUID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
// Create the
comment memo
first.
memo
,
err
:=
s
.
CreateMemo
(
ctx
,
request
.
Comment
)
// Create the
memo comment
first.
memo
Comment
,
err
:=
s
.
CreateMemo
(
ctx
,
request
.
Comment
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to create memo"
)
}
memoUID
,
err
=
ExtractMemoUIDFromName
(
memoComment
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoUID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
// Build the relation between the comment memo and the original memo.
_
,
err
=
s
.
Store
.
UpsertMemoRelation
(
ctx
,
&
store
.
MemoRelation
{
MemoID
:
memo
.
Uid
,
MemoID
:
memo
.
ID
,
RelatedMemoID
:
relatedMemo
.
ID
,
Type
:
store
.
MemoRelationComment
,
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to create memo relation"
)
}
creatorID
,
err
:=
ExtractUserIDFromName
(
memo
.
Creator
)
creatorID
,
err
:=
ExtractUserIDFromName
(
memo
Comment
.
Creator
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo creator"
)
}
if
memo
.
Visibility
!=
v1pb
.
Visibility_PRIVATE
&&
creatorID
!=
relatedMemo
.
CreatorID
{
if
memo
Comment
.
Visibility
!=
v1pb
.
Visibility_PRIVATE
&&
creatorID
!=
relatedMemo
.
CreatorID
{
activity
,
err
:=
s
.
Store
.
CreateActivity
(
ctx
,
&
store
.
Activity
{
CreatorID
:
creatorID
,
Type
:
store
.
ActivityTypeMemoComment
,
Level
:
store
.
ActivityLevelInfo
,
Payload
:
&
storepb
.
ActivityPayload
{
MemoComment
:
&
storepb
.
ActivityMemoCommentPayload
{
MemoId
:
memo
.
Uid
,
MemoId
:
memo
.
ID
,
RelatedMemoId
:
relatedMemo
.
ID
,
},
},
...
...
@@ -436,15 +444,15 @@ func (s *APIV1Service) CreateMemoComment(ctx context.Context, request *v1pb.Crea
}
}
return
memo
,
nil
return
memo
Comment
,
nil
}
func
(
s
*
APIV1Service
)
ListMemoComments
(
ctx
context
.
Context
,
request
*
v1pb
.
ListMemoCommentsRequest
)
(
*
v1pb
.
ListMemoCommentsResponse
,
error
)
{
memo
ID
,
err
:=
ExtractMemo
IDFromName
(
request
.
Name
)
memo
UID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoID
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memo
U
ID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get memo"
)
}
...
...
@@ -492,11 +500,11 @@ func (s *APIV1Service) RenameMemoTag(ctx context.Context, request *v1pb.RenameMe
ExcludeComments
:
true
,
}
if
(
request
.
Parent
)
!=
"memos/-"
{
memo
ID
,
err
:=
ExtractMemo
IDFromName
(
request
.
Parent
)
memo
UID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Parent
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memoFind
.
UID
=
&
memoID
memoFind
.
UID
=
&
memo
U
ID
}
memos
,
err
:=
s
.
Store
.
ListMemos
(
ctx
,
memoFind
)
...
...
@@ -542,12 +550,12 @@ func (s *APIV1Service) DeleteMemoTag(ctx context.Context, request *v1pb.DeleteMe
ExcludeContent
:
true
,
ExcludeComments
:
true
,
}
if
(
request
.
Parent
)
!=
"memos/-"
{
memo
ID
,
err
:=
ExtractMemo
IDFromName
(
request
.
Parent
)
if
request
.
Parent
!=
"memos/-"
{
memo
UID
,
err
:=
ExtractMemoU
IDFromName
(
request
.
Parent
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memoFind
.
UID
=
&
memoID
memoFind
.
UID
=
&
memo
U
ID
}
memos
,
err
:=
s
.
Store
.
ListMemos
(
ctx
,
memoFind
)
...
...
server/router/api/v1/resource_name.go
View file @
98aa0b73
...
...
@@ -61,8 +61,9 @@ func ExtractUserIDFromName(name string) (int32, error) {
return
id
,
nil
}
// ExtractMemoIDFromName returns the memo ID from a resource name.
func
ExtractMemoIDFromName
(
name
string
)
(
string
,
error
)
{
// ExtractMemoUIDFromName returns the memo UID from a resource name.
// e.g., "memos/uuid" -> "uuid"
func
ExtractMemoUIDFromName
(
name
string
)
(
string
,
error
)
{
tokens
,
err
:=
GetNameParentTokens
(
name
,
MemoNamePrefix
)
if
err
!=
nil
{
return
""
,
err
...
...
server/router/api/v1/resource_service.go
View file @
98aa0b73
...
...
@@ -76,11 +76,11 @@ func (s *APIV1Service) CreateResource(ctx context.Context, request *v1pb.CreateR
}
if
request
.
Resource
.
Memo
!=
nil
{
id
,
err
:=
ExtractMemo
IDFromName
(
*
request
.
Resource
.
Memo
)
memoUID
,
err
:=
ExtractMemoU
IDFromName
(
*
request
.
Resource
.
Memo
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid memo name: %v"
,
err
)
}
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
id
})
memo
,
err
:=
s
.
Store
.
GetMemo
(
ctx
,
&
store
.
FindMemo
{
UID
:
&
memoUID
})
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to find memo: %v"
,
err
)
}
...
...
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