Commit 98aa0b73 authored by johnnyjoy's avatar johnnyjoy

refactor: retire memo uid

parent b0119f32
...@@ -124,13 +124,12 @@ enum Visibility { ...@@ -124,13 +124,12 @@ enum Visibility {
} }
message Memo { message Memo {
reserved 2;
// The name of the memo. // The name of the memo.
// Format: memos/{memo}, memo is the user defined id or uuid. // Format: memos/{memo}, memo is the user defined id or uuid.
string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 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; State state = 3;
// The name of the creator. // The name of the creator.
......
This diff is collapsed.
...@@ -796,11 +796,6 @@ paths: ...@@ -796,11 +796,6 @@ paths:
schema: schema:
type: object type: object
properties: properties:
uid:
type: integer
format: int32
description: The system generated unique id. Auto-incremented.
readOnly: true
state: state:
$ref: '#/definitions/v1State' $ref: '#/definitions/v1State'
creator: creator:
...@@ -1894,11 +1889,6 @@ definitions: ...@@ -1894,11 +1889,6 @@ definitions:
type: string type: string
description: "The name of the memo.\r\nFormat: memos/{memo}, memo is the user defined id or uuid." description: "The name of the memo.\r\nFormat: memos/{memo}, memo is the user defined id or uuid."
readOnly: true readOnly: true
uid:
type: integer
format: int32
description: The system generated unique id. Auto-incremented.
readOnly: true
state: state:
$ref: '#/definitions/v1State' $ref: '#/definitions/v1State'
creator: creator:
......
...@@ -14,11 +14,11 @@ import ( ...@@ -14,11 +14,11 @@ import (
) )
func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMemoRelationsRequest) (*emptypb.Empty, error) { func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMemoRelationsRequest) (*emptypb.Empty, error) {
memoID, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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: &memoUID})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get memo") return nil, status.Errorf(codes.Internal, "failed to get memo")
} }
...@@ -41,11 +41,11 @@ func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMe ...@@ -41,11 +41,11 @@ func (s *APIV1Service) SetMemoRelations(ctx context.Context, request *v1pb.SetMe
if relation.Type == v1pb.MemoRelation_COMMENT { if relation.Type == v1pb.MemoRelation_COMMENT {
continue continue
} }
relatedMemoID, err := ExtractMemoIDFromName(relation.RelatedMemo.Name) relatedMemoUID, err := ExtractMemoUIDFromName(relation.RelatedMemo.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid related memo name: %v", err) 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: &relatedMemoUID})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get related memo") 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 ...@@ -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) { func (s *APIV1Service) ListMemoRelations(ctx context.Context, request *v1pb.ListMemoRelationsRequest) (*v1pb.ListMemoRelationsResponse, error) {
memoID, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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: &memoUID})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get memo") return nil, status.Errorf(codes.Internal, "failed to get memo")
} }
......
...@@ -14,11 +14,11 @@ import ( ...@@ -14,11 +14,11 @@ import (
) )
func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMemoResourcesRequest) (*emptypb.Empty, error) { func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMemoResourcesRequest) (*emptypb.Empty, error) {
memoID, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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: &memoUID})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get memo") return nil, status.Errorf(codes.Internal, "failed to get memo")
} }
...@@ -69,11 +69,11 @@ func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMe ...@@ -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) { func (s *APIV1Service) ListMemoResources(ctx context.Context, request *v1pb.ListMemoResourcesRequest) (*v1pb.ListMemoResourcesResponse, error) {
id, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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 { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get memo: %v", err) return nil, status.Errorf(codes.Internal, "failed to get memo: %v", err)
} }
......
...@@ -150,12 +150,12 @@ func (s *APIV1Service) ListMemos(ctx context.Context, request *v1pb.ListMemosReq ...@@ -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) { func (s *APIV1Service) GetMemo(ctx context.Context, request *v1pb.GetMemoRequest) (*v1pb.Memo, error) {
id, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err)
} }
memo, err := s.Store.GetMemo(ctx, &store.FindMemo{ memo, err := s.Store.GetMemo(ctx, &store.FindMemo{
UID: &id, UID: &memoUID,
}) })
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -184,7 +184,7 @@ func (s *APIV1Service) GetMemo(ctx context.Context, request *v1pb.GetMemoRequest ...@@ -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) { func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoRequest) (*v1pb.Memo, error) {
id, err := ExtractMemoIDFromName(request.Memo.Name) memoUID, err := ExtractMemoUIDFromName(request.Memo.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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 ...@@ -192,7 +192,7 @@ func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoR
return nil, status.Errorf(codes.InvalidArgument, "update mask is required") 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 { if err != nil {
return nil, err return nil, err
} }
...@@ -308,12 +308,12 @@ func (s *APIV1Service) UpdateMemo(ctx context.Context, request *v1pb.UpdateMemoR ...@@ -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) { func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoRequest) (*emptypb.Empty, error) {
id, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err)
} }
memo, err := s.Store.GetMemo(ctx, &store.FindMemo{ memo, err := s.Store.GetMemo(ctx, &store.FindMemo{
UID: &id, UID: &memoUID,
}) })
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -380,42 +380,50 @@ func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoR ...@@ -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) { func (s *APIV1Service) CreateMemoComment(ctx context.Context, request *v1pb.CreateMemoCommentRequest) (*v1pb.Memo, error) {
id, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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 { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get memo") return nil, status.Errorf(codes.Internal, "failed to get memo")
} }
// Create the comment memo first. // Create the memo comment first.
memo, err := s.CreateMemo(ctx, request.Comment) memoComment, err := s.CreateMemo(ctx, request.Comment)
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to create memo") 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. // Build the relation between the comment memo and the original memo.
_, err = s.Store.UpsertMemoRelation(ctx, &store.MemoRelation{ _, err = s.Store.UpsertMemoRelation(ctx, &store.MemoRelation{
MemoID: memo.Uid, MemoID: memo.ID,
RelatedMemoID: relatedMemo.ID, RelatedMemoID: relatedMemo.ID,
Type: store.MemoRelationComment, Type: store.MemoRelationComment,
}) })
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to create memo relation") return nil, status.Errorf(codes.Internal, "failed to create memo relation")
} }
creatorID, err := ExtractUserIDFromName(memo.Creator) creatorID, err := ExtractUserIDFromName(memoComment.Creator)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo creator") return nil, status.Errorf(codes.InvalidArgument, "invalid memo creator")
} }
if memo.Visibility != v1pb.Visibility_PRIVATE && creatorID != relatedMemo.CreatorID { if memoComment.Visibility != v1pb.Visibility_PRIVATE && creatorID != relatedMemo.CreatorID {
activity, err := s.Store.CreateActivity(ctx, &store.Activity{ activity, err := s.Store.CreateActivity(ctx, &store.Activity{
CreatorID: creatorID, CreatorID: creatorID,
Type: store.ActivityTypeMemoComment, Type: store.ActivityTypeMemoComment,
Level: store.ActivityLevelInfo, Level: store.ActivityLevelInfo,
Payload: &storepb.ActivityPayload{ Payload: &storepb.ActivityPayload{
MemoComment: &storepb.ActivityMemoCommentPayload{ MemoComment: &storepb.ActivityMemoCommentPayload{
MemoId: memo.Uid, MemoId: memo.ID,
RelatedMemoId: relatedMemo.ID, RelatedMemoId: relatedMemo.ID,
}, },
}, },
...@@ -436,15 +444,15 @@ func (s *APIV1Service) CreateMemoComment(ctx context.Context, request *v1pb.Crea ...@@ -436,15 +444,15 @@ func (s *APIV1Service) CreateMemoComment(ctx context.Context, request *v1pb.Crea
} }
} }
return memo, nil return memoComment, nil
} }
func (s *APIV1Service) ListMemoComments(ctx context.Context, request *v1pb.ListMemoCommentsRequest) (*v1pb.ListMemoCommentsResponse, error) { func (s *APIV1Service) ListMemoComments(ctx context.Context, request *v1pb.ListMemoCommentsRequest) (*v1pb.ListMemoCommentsResponse, error) {
memoID, err := ExtractMemoIDFromName(request.Name) memoUID, err := ExtractMemoUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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: &memoUID})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get memo") return nil, status.Errorf(codes.Internal, "failed to get memo")
} }
...@@ -492,11 +500,11 @@ func (s *APIV1Service) RenameMemoTag(ctx context.Context, request *v1pb.RenameMe ...@@ -492,11 +500,11 @@ func (s *APIV1Service) RenameMemoTag(ctx context.Context, request *v1pb.RenameMe
ExcludeComments: true, ExcludeComments: true,
} }
if (request.Parent) != "memos/-" { if (request.Parent) != "memos/-" {
memoID, err := ExtractMemoIDFromName(request.Parent) memoUID, err := ExtractMemoUIDFromName(request.Parent)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err)
} }
memoFind.UID = &memoID memoFind.UID = &memoUID
} }
memos, err := s.Store.ListMemos(ctx, memoFind) memos, err := s.Store.ListMemos(ctx, memoFind)
...@@ -542,12 +550,12 @@ func (s *APIV1Service) DeleteMemoTag(ctx context.Context, request *v1pb.DeleteMe ...@@ -542,12 +550,12 @@ func (s *APIV1Service) DeleteMemoTag(ctx context.Context, request *v1pb.DeleteMe
ExcludeContent: true, ExcludeContent: true,
ExcludeComments: true, ExcludeComments: true,
} }
if (request.Parent) != "memos/-" { if request.Parent != "memos/-" {
memoID, err := ExtractMemoIDFromName(request.Parent) memoUID, err := ExtractMemoUIDFromName(request.Parent)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err)
} }
memoFind.UID = &memoID memoFind.UID = &memoUID
} }
memos, err := s.Store.ListMemos(ctx, memoFind) memos, err := s.Store.ListMemos(ctx, memoFind)
......
...@@ -61,8 +61,9 @@ func ExtractUserIDFromName(name string) (int32, error) { ...@@ -61,8 +61,9 @@ func ExtractUserIDFromName(name string) (int32, error) {
return id, nil return id, nil
} }
// ExtractMemoIDFromName returns the memo ID from a resource name. // ExtractMemoUIDFromName returns the memo UID from a resource name.
func ExtractMemoIDFromName(name string) (string, error) { // e.g., "memos/uuid" -> "uuid"
func ExtractMemoUIDFromName(name string) (string, error) {
tokens, err := GetNameParentTokens(name, MemoNamePrefix) tokens, err := GetNameParentTokens(name, MemoNamePrefix)
if err != nil { if err != nil {
return "", err return "", err
......
...@@ -76,11 +76,11 @@ func (s *APIV1Service) CreateResource(ctx context.Context, request *v1pb.CreateR ...@@ -76,11 +76,11 @@ func (s *APIV1Service) CreateResource(ctx context.Context, request *v1pb.CreateR
} }
if request.Resource.Memo != nil { if request.Resource.Memo != nil {
id, err := ExtractMemoIDFromName(*request.Resource.Memo) memoUID, err := ExtractMemoUIDFromName(*request.Resource.Memo)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid memo name: %v", err) 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 { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to find memo: %v", err) return nil, status.Errorf(codes.Internal, "failed to find memo: %v", err)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment