Added logic to delete memo relation and memo comments recursively when a memo is deleted

This commit is contained in:
Martin MacDonald 2024-05-30 19:40:56 +01:00
parent 98f2cf6397
commit 613e90bd86
1 changed files with 16 additions and 0 deletions

View File

@ -352,6 +352,11 @@ func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoR
return nil, status.Errorf(codes.Internal, "failed to delete memo")
}
// Delete memo relation
if err := s.Store.DeleteMemoRelation(ctx, &store.DeleteMemoRelation{MemoID: &id}); err != nil {
return nil, status.Errorf(codes.Internal, "failed to delete memo relations")
}
// Delete related resources.
resources, err := s.Store.ListResources(ctx, &store.FindResource{MemoID: &id})
if err != nil {
@ -363,6 +368,17 @@ func (s *APIV1Service) DeleteMemo(ctx context.Context, request *v1pb.DeleteMemoR
}
}
// Delete memo comments
relations, err := s.Store.ListMemoRelations(ctx, &store.FindMemoRelation{RelatedMemoID: &id})
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to list memo relations")
}
for _, relation := range relations {
if _, err := s.DeleteMemo(ctx, &v1pb.DeleteMemoRequest{Name: fmt.Sprintf("%s%d", MemoNamePrefix, relation.MemoID)}); err != nil {
return nil, status.Errorf(codes.Internal, "failed to delete memo comment")
}
}
return &emptypb.Empty{}, nil
}