Commit 0dcd0904 authored by johnnyjoy's avatar johnnyjoy

refactor: remove resource uid

parent 97d12db3
...@@ -29,11 +29,6 @@ service ResourceService { ...@@ -29,11 +29,6 @@ service ResourceService {
option (google.api.http) = {get: "/api/v1/{name=resources/*}"}; option (google.api.http) = {get: "/api/v1/{name=resources/*}"};
option (google.api.method_signature) = "name"; option (google.api.method_signature) = "name";
} }
// GetResourceByUid returns a resource by uid.
rpc GetResourceByUid(GetResourceByUidRequest) returns (Resource) {
option (google.api.http) = {get: "/api/v1/resources:by-uid/{uid}"};
option (google.api.method_signature) = "uid";
}
// GetResourceBinary returns a resource binary by name. // GetResourceBinary returns a resource binary by name.
rpc GetResourceBinary(GetResourceBinaryRequest) returns (google.api.HttpBody) { rpc GetResourceBinary(GetResourceBinaryRequest) returns (google.api.HttpBody) {
option (google.api.http) = {get: "/file/{name=resources/*}/{filename}"}; option (google.api.http) = {get: "/file/{name=resources/*}/{filename}"};
...@@ -55,13 +50,12 @@ service ResourceService { ...@@ -55,13 +50,12 @@ service ResourceService {
} }
message Resource { message Resource {
reserved 2;
// The name of the resource. // The name of the resource.
// Format: resources/{id}, id is the system generated auto-incremented id. // Format: resources/{resource}, resource is the user defined if or uuid.
string name = 1; string name = 1;
// The user defined id of the resource.
string uid = 2;
google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
string filename = 4; string filename = 4;
...@@ -93,11 +87,6 @@ message GetResourceRequest { ...@@ -93,11 +87,6 @@ message GetResourceRequest {
string name = 1; string name = 1;
} }
message GetResourceByUidRequest {
// The uid of the resource.
string uid = 1;
}
message GetResourceBinaryRequest { message GetResourceBinaryRequest {
// The name of the resource. // The name of the resource.
string name = 1; string name = 1;
......
This diff is collapsed.
...@@ -113,42 +113,6 @@ func local_request_ResourceService_GetResource_0(ctx context.Context, marshaler ...@@ -113,42 +113,6 @@ func local_request_ResourceService_GetResource_0(ctx context.Context, marshaler
return msg, metadata, err return msg, metadata, err
} }
func request_ResourceService_GetResourceByUid_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var (
protoReq GetResourceByUidRequest
metadata runtime.ServerMetadata
err error
)
val, ok := pathParams["uid"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uid")
}
protoReq.Uid, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "uid", err)
}
msg, err := client.GetResourceByUid(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_ResourceService_GetResourceByUid_0(ctx context.Context, marshaler runtime.Marshaler, server ResourceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var (
protoReq GetResourceByUidRequest
metadata runtime.ServerMetadata
err error
)
val, ok := pathParams["uid"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "uid")
}
protoReq.Uid, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "uid", err)
}
msg, err := server.GetResourceByUid(ctx, &protoReq)
return msg, metadata, err
}
var filter_ResourceService_GetResourceBinary_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0, "filename": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}} var filter_ResourceService_GetResourceBinary_0 = &utilities.DoubleArray{Encoding: map[string]int{"name": 0, "filename": 1}, Base: []int{1, 1, 2, 0, 0}, Check: []int{0, 1, 1, 2, 3}}
func request_ResourceService_GetResourceBinary_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { func request_ResourceService_GetResourceBinary_0(ctx context.Context, marshaler runtime.Marshaler, client ResourceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
...@@ -395,26 +359,6 @@ func RegisterResourceServiceHandlerServer(ctx context.Context, mux *runtime.Serv ...@@ -395,26 +359,6 @@ func RegisterResourceServiceHandlerServer(ctx context.Context, mux *runtime.Serv
} }
forward_ResourceService_GetResource_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_ResourceService_GetResource_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
mux.Handle(http.MethodGet, pattern_ResourceService_GetResourceByUid_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/memos.api.v1.ResourceService/GetResourceByUid", runtime.WithHTTPPathPattern("/api/v1/resources:by-uid/{uid}"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_ResourceService_GetResourceByUid_0(annotatedContext, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_ResourceService_GetResourceByUid_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle(http.MethodGet, pattern_ResourceService_GetResourceBinary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle(http.MethodGet, pattern_ResourceService_GetResourceBinary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
...@@ -566,23 +510,6 @@ func RegisterResourceServiceHandlerClient(ctx context.Context, mux *runtime.Serv ...@@ -566,23 +510,6 @@ func RegisterResourceServiceHandlerClient(ctx context.Context, mux *runtime.Serv
} }
forward_ResourceService_GetResource_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) forward_ResourceService_GetResource_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
}) })
mux.Handle(http.MethodGet, pattern_ResourceService_GetResourceByUid_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/memos.api.v1.ResourceService/GetResourceByUid", runtime.WithHTTPPathPattern("/api/v1/resources:by-uid/{uid}"))
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_ResourceService_GetResourceByUid_0(annotatedContext, inboundMarshaler, client, req, pathParams)
annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md)
if err != nil {
runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err)
return
}
forward_ResourceService_GetResourceByUid_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle(http.MethodGet, pattern_ResourceService_GetResourceBinary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { mux.Handle(http.MethodGet, pattern_ResourceService_GetResourceBinary_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context()) ctx, cancel := context.WithCancel(req.Context())
defer cancel() defer cancel()
...@@ -641,7 +568,6 @@ var ( ...@@ -641,7 +568,6 @@ var (
pattern_ResourceService_CreateResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "resources"}, "")) pattern_ResourceService_CreateResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "resources"}, ""))
pattern_ResourceService_ListResources_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "resources"}, "")) pattern_ResourceService_ListResources_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "resources"}, ""))
pattern_ResourceService_GetResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "resources", "name"}, "")) pattern_ResourceService_GetResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "resources", "name"}, ""))
pattern_ResourceService_GetResourceByUid_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "resources:by-uid", "uid"}, ""))
pattern_ResourceService_GetResourceBinary_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"file", "resources", "name", "filename"}, "")) pattern_ResourceService_GetResourceBinary_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 2, 5, 2, 1, 0, 4, 1, 5, 3}, []string{"file", "resources", "name", "filename"}, ""))
pattern_ResourceService_UpdateResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "resources", "resource.name"}, "")) pattern_ResourceService_UpdateResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "resources", "resource.name"}, ""))
pattern_ResourceService_DeleteResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "resources", "name"}, "")) pattern_ResourceService_DeleteResource_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 2, 5, 3}, []string{"api", "v1", "resources", "name"}, ""))
...@@ -651,7 +577,6 @@ var ( ...@@ -651,7 +577,6 @@ var (
forward_ResourceService_CreateResource_0 = runtime.ForwardResponseMessage forward_ResourceService_CreateResource_0 = runtime.ForwardResponseMessage
forward_ResourceService_ListResources_0 = runtime.ForwardResponseMessage forward_ResourceService_ListResources_0 = runtime.ForwardResponseMessage
forward_ResourceService_GetResource_0 = runtime.ForwardResponseMessage forward_ResourceService_GetResource_0 = runtime.ForwardResponseMessage
forward_ResourceService_GetResourceByUid_0 = runtime.ForwardResponseMessage
forward_ResourceService_GetResourceBinary_0 = runtime.ForwardResponseMessage forward_ResourceService_GetResourceBinary_0 = runtime.ForwardResponseMessage
forward_ResourceService_UpdateResource_0 = runtime.ForwardResponseMessage forward_ResourceService_UpdateResource_0 = runtime.ForwardResponseMessage
forward_ResourceService_DeleteResource_0 = runtime.ForwardResponseMessage forward_ResourceService_DeleteResource_0 = runtime.ForwardResponseMessage
......
...@@ -24,7 +24,6 @@ const ( ...@@ -24,7 +24,6 @@ const (
ResourceService_CreateResource_FullMethodName = "/memos.api.v1.ResourceService/CreateResource" ResourceService_CreateResource_FullMethodName = "/memos.api.v1.ResourceService/CreateResource"
ResourceService_ListResources_FullMethodName = "/memos.api.v1.ResourceService/ListResources" ResourceService_ListResources_FullMethodName = "/memos.api.v1.ResourceService/ListResources"
ResourceService_GetResource_FullMethodName = "/memos.api.v1.ResourceService/GetResource" ResourceService_GetResource_FullMethodName = "/memos.api.v1.ResourceService/GetResource"
ResourceService_GetResourceByUid_FullMethodName = "/memos.api.v1.ResourceService/GetResourceByUid"
ResourceService_GetResourceBinary_FullMethodName = "/memos.api.v1.ResourceService/GetResourceBinary" ResourceService_GetResourceBinary_FullMethodName = "/memos.api.v1.ResourceService/GetResourceBinary"
ResourceService_UpdateResource_FullMethodName = "/memos.api.v1.ResourceService/UpdateResource" ResourceService_UpdateResource_FullMethodName = "/memos.api.v1.ResourceService/UpdateResource"
ResourceService_DeleteResource_FullMethodName = "/memos.api.v1.ResourceService/DeleteResource" ResourceService_DeleteResource_FullMethodName = "/memos.api.v1.ResourceService/DeleteResource"
...@@ -40,8 +39,6 @@ type ResourceServiceClient interface { ...@@ -40,8 +39,6 @@ type ResourceServiceClient interface {
ListResources(ctx context.Context, in *ListResourcesRequest, opts ...grpc.CallOption) (*ListResourcesResponse, error) ListResources(ctx context.Context, in *ListResourcesRequest, opts ...grpc.CallOption) (*ListResourcesResponse, error)
// GetResource returns a resource by name. // GetResource returns a resource by name.
GetResource(ctx context.Context, in *GetResourceRequest, opts ...grpc.CallOption) (*Resource, error) GetResource(ctx context.Context, in *GetResourceRequest, opts ...grpc.CallOption) (*Resource, error)
// GetResourceByUid returns a resource by uid.
GetResourceByUid(ctx context.Context, in *GetResourceByUidRequest, opts ...grpc.CallOption) (*Resource, error)
// GetResourceBinary returns a resource binary by name. // GetResourceBinary returns a resource binary by name.
GetResourceBinary(ctx context.Context, in *GetResourceBinaryRequest, opts ...grpc.CallOption) (*httpbody.HttpBody, error) GetResourceBinary(ctx context.Context, in *GetResourceBinaryRequest, opts ...grpc.CallOption) (*httpbody.HttpBody, error)
// UpdateResource updates a resource. // UpdateResource updates a resource.
...@@ -88,16 +85,6 @@ func (c *resourceServiceClient) GetResource(ctx context.Context, in *GetResource ...@@ -88,16 +85,6 @@ func (c *resourceServiceClient) GetResource(ctx context.Context, in *GetResource
return out, nil return out, nil
} }
func (c *resourceServiceClient) GetResourceByUid(ctx context.Context, in *GetResourceByUidRequest, opts ...grpc.CallOption) (*Resource, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(Resource)
err := c.cc.Invoke(ctx, ResourceService_GetResourceByUid_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *resourceServiceClient) GetResourceBinary(ctx context.Context, in *GetResourceBinaryRequest, opts ...grpc.CallOption) (*httpbody.HttpBody, error) { func (c *resourceServiceClient) GetResourceBinary(ctx context.Context, in *GetResourceBinaryRequest, opts ...grpc.CallOption) (*httpbody.HttpBody, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(httpbody.HttpBody) out := new(httpbody.HttpBody)
...@@ -138,8 +125,6 @@ type ResourceServiceServer interface { ...@@ -138,8 +125,6 @@ type ResourceServiceServer interface {
ListResources(context.Context, *ListResourcesRequest) (*ListResourcesResponse, error) ListResources(context.Context, *ListResourcesRequest) (*ListResourcesResponse, error)
// GetResource returns a resource by name. // GetResource returns a resource by name.
GetResource(context.Context, *GetResourceRequest) (*Resource, error) GetResource(context.Context, *GetResourceRequest) (*Resource, error)
// GetResourceByUid returns a resource by uid.
GetResourceByUid(context.Context, *GetResourceByUidRequest) (*Resource, error)
// GetResourceBinary returns a resource binary by name. // GetResourceBinary returns a resource binary by name.
GetResourceBinary(context.Context, *GetResourceBinaryRequest) (*httpbody.HttpBody, error) GetResourceBinary(context.Context, *GetResourceBinaryRequest) (*httpbody.HttpBody, error)
// UpdateResource updates a resource. // UpdateResource updates a resource.
...@@ -165,9 +150,6 @@ func (UnimplementedResourceServiceServer) ListResources(context.Context, *ListRe ...@@ -165,9 +150,6 @@ func (UnimplementedResourceServiceServer) ListResources(context.Context, *ListRe
func (UnimplementedResourceServiceServer) GetResource(context.Context, *GetResourceRequest) (*Resource, error) { func (UnimplementedResourceServiceServer) GetResource(context.Context, *GetResourceRequest) (*Resource, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetResource not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetResource not implemented")
} }
func (UnimplementedResourceServiceServer) GetResourceByUid(context.Context, *GetResourceByUidRequest) (*Resource, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetResourceByUid not implemented")
}
func (UnimplementedResourceServiceServer) GetResourceBinary(context.Context, *GetResourceBinaryRequest) (*httpbody.HttpBody, error) { func (UnimplementedResourceServiceServer) GetResourceBinary(context.Context, *GetResourceBinaryRequest) (*httpbody.HttpBody, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetResourceBinary not implemented") return nil, status.Errorf(codes.Unimplemented, "method GetResourceBinary not implemented")
} }
...@@ -252,24 +234,6 @@ func _ResourceService_GetResource_Handler(srv interface{}, ctx context.Context, ...@@ -252,24 +234,6 @@ func _ResourceService_GetResource_Handler(srv interface{}, ctx context.Context,
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _ResourceService_GetResourceByUid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetResourceByUidRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ResourceServiceServer).GetResourceByUid(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ResourceService_GetResourceByUid_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ResourceServiceServer).GetResourceByUid(ctx, req.(*GetResourceByUidRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ResourceService_GetResourceBinary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _ResourceService_GetResourceBinary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetResourceBinaryRequest) in := new(GetResourceBinaryRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
...@@ -343,10 +307,6 @@ var ResourceService_ServiceDesc = grpc.ServiceDesc{ ...@@ -343,10 +307,6 @@ var ResourceService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetResource", MethodName: "GetResource",
Handler: _ResourceService_GetResource_Handler, Handler: _ResourceService_GetResource_Handler,
}, },
{
MethodName: "GetResourceByUid",
Handler: _ResourceService_GetResourceByUid_Handler,
},
{ {
MethodName: "GetResourceBinary", MethodName: "GetResourceBinary",
Handler: _ResourceService_GetResourceBinary_Handler, Handler: _ResourceService_GetResourceBinary_Handler,
......
...@@ -409,27 +409,6 @@ paths: ...@@ -409,27 +409,6 @@ paths:
$ref: '#/definitions/v1Resource' $ref: '#/definitions/v1Resource'
tags: tags:
- ResourceService - ResourceService
/api/v1/resources:by-uid/{uid}:
get:
summary: GetResourceByUid returns a resource by uid.
operationId: ResourceService_GetResourceByUid
responses:
"200":
description: A successful response.
schema:
$ref: '#/definitions/v1Resource'
default:
description: An unexpected error response.
schema:
$ref: '#/definitions/googlerpcStatus'
parameters:
- name: uid
description: The uid of the resource.
in: path
required: true
type: string
tags:
- ResourceService
/api/v1/users: /api/v1/users:
get: get:
summary: ListUsers returns a list of users. summary: ListUsers returns a list of users.
...@@ -1509,7 +1488,7 @@ paths: ...@@ -1509,7 +1488,7 @@ paths:
- name: resource.name - name: resource.name
description: |- description: |-
The name of the resource. The name of the resource.
Format: resources/{id}, id is the system generated auto-incremented id. Format: resources/{resource}, resource is the user defined if or uuid.
in: path in: path
required: true required: true
type: string type: string
...@@ -1520,9 +1499,6 @@ paths: ...@@ -1520,9 +1499,6 @@ paths:
schema: schema:
type: object type: object
properties: properties:
uid:
type: string
description: The user defined id of the resource.
createTime: createTime:
type: string type: string
format: date-time format: date-time
...@@ -2839,10 +2815,7 @@ definitions: ...@@ -2839,10 +2815,7 @@ definitions:
type: string type: string
description: |- description: |-
The name of the resource. The name of the resource.
Format: resources/{id}, id is the system generated auto-incremented id. Format: resources/{resource}, resource is the user defined if or uuid.
uid:
type: string
description: The user defined id of the resource.
createTime: createTime:
type: string type: string
format: date-time format: date-time
......
...@@ -16,11 +16,9 @@ var authenticationAllowlistMethods = map[string]bool{ ...@@ -16,11 +16,9 @@ var authenticationAllowlistMethods = map[string]bool{
"/memos.api.v1.UserService/ListAllUserStats": true, "/memos.api.v1.UserService/ListAllUserStats": true,
"/memos.api.v1.UserService/SearchUsers": true, "/memos.api.v1.UserService/SearchUsers": true,
"/memos.api.v1.MemoService/GetMemo": true, "/memos.api.v1.MemoService/GetMemo": true,
"/memos.api.v1.MemoService/GetMemoByUid": true,
"/memos.api.v1.MemoService/ListMemos": true, "/memos.api.v1.MemoService/ListMemos": true,
"/memos.api.v1.MarkdownService/GetLinkMetadata": true, "/memos.api.v1.MarkdownService/GetLinkMetadata": true,
"/memos.api.v1.ResourceService/GetResourceBinary": true, "/memos.api.v1.ResourceService/GetResourceBinary": true,
"/memos.api.v1.ResourceService/GetResourceByUid": true,
} }
// isUnauthorizeAllowedMethod returns whether the method is exempted from authentication. // isUnauthorizeAllowedMethod returns whether the method is exempted from authentication.
......
...@@ -33,7 +33,11 @@ func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMe ...@@ -33,7 +33,11 @@ func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMe
for _, resource := range resources { for _, resource := range resources {
found := false found := false
for _, requestResource := range request.Resources { for _, requestResource := range request.Resources {
if resource.UID == requestResource.Uid { requestResourceUID, err := ExtractResourceUIDFromName(requestResource.Name)
if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid resource name: %v", err)
}
if resource.UID == requestResourceUID {
found = true found = true
break break
} }
...@@ -51,13 +55,17 @@ func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMe ...@@ -51,13 +55,17 @@ func (s *APIV1Service) SetMemoResources(ctx context.Context, request *v1pb.SetMe
slices.Reverse(request.Resources) slices.Reverse(request.Resources)
// Update resources' memo_id in the request. // Update resources' memo_id in the request.
for index, resource := range request.Resources { for index, resource := range request.Resources {
id, err := ExtractResourceIDFromName(resource.Name) resourceUID, err := ExtractResourceUIDFromName(resource.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid resource name: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid resource name: %v", err)
} }
tempResource, err := s.Store.GetResource(ctx, &store.FindResource{UID: &resourceUID})
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get resource: %v", err)
}
updatedTs := time.Now().Unix() + int64(index) updatedTs := time.Now().Unix() + int64(index)
if err := s.Store.UpdateResource(ctx, &store.UpdateResource{ if err := s.Store.UpdateResource(ctx, &store.UpdateResource{
ID: id, ID: tempResource.ID,
MemoID: &memo.ID, MemoID: &memo.ID,
UpdatedTs: &updatedTs, UpdatedTs: &updatedTs,
}); err != nil { }); err != nil {
......
...@@ -29,7 +29,6 @@ func (s *APIV1Service) convertMemoFromStore(ctx context.Context, memo *store.Mem ...@@ -29,7 +29,6 @@ func (s *APIV1Service) convertMemoFromStore(ctx context.Context, memo *store.Mem
name := fmt.Sprintf("%s%s", MemoNamePrefix, memo.UID) name := fmt.Sprintf("%s%s", MemoNamePrefix, memo.UID)
memoMessage := &v1pb.Memo{ memoMessage := &v1pb.Memo{
Name: name, Name: name,
Uid: memo.ID,
State: convertStateFromStore(memo.RowStatus), State: convertStateFromStore(memo.RowStatus),
Creator: fmt.Sprintf("%s%d", UserNamePrefix, memo.CreatorID), Creator: fmt.Sprintf("%s%d", UserNamePrefix, memo.CreatorID),
CreateTime: timestamppb.New(time.Unix(memo.CreatedTs, 0)), CreateTime: timestamppb.New(time.Unix(memo.CreatedTs, 0)),
......
...@@ -72,16 +72,13 @@ func ExtractMemoUIDFromName(name string) (string, error) { ...@@ -72,16 +72,13 @@ func ExtractMemoUIDFromName(name string) (string, error) {
return id, nil return id, nil
} }
// ExtractResourceIDFromName returns the resource ID from a resource name. // ExtractResourceUIDFromName returns the resource UID from a resource name.
func ExtractResourceIDFromName(name string) (int32, error) { func ExtractResourceUIDFromName(name string) (string, error) {
tokens, err := GetNameParentTokens(name, ResourceNamePrefix) tokens, err := GetNameParentTokens(name, ResourceNamePrefix)
if err != nil { if err != nil {
return 0, err return "", err
}
id, err := util.ConvertStringToInt32(tokens[0])
if err != nil {
return 0, errors.Errorf("invalid resource ID %q", tokens[0])
} }
id := tokens[0]
return id, nil return id, nil
} }
......
...@@ -114,27 +114,11 @@ func (s *APIV1Service) ListResources(ctx context.Context, _ *v1pb.ListResourcesR ...@@ -114,27 +114,11 @@ func (s *APIV1Service) ListResources(ctx context.Context, _ *v1pb.ListResourcesR
} }
func (s *APIV1Service) GetResource(ctx context.Context, request *v1pb.GetResourceRequest) (*v1pb.Resource, error) { func (s *APIV1Service) GetResource(ctx context.Context, request *v1pb.GetResourceRequest) (*v1pb.Resource, error) {
id, err := ExtractResourceIDFromName(request.Name) resourceUID, err := ExtractResourceUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err)
} }
resource, err := s.Store.GetResource(ctx, &store.FindResource{ resource, err := s.Store.GetResource(ctx, &store.FindResource{UID: &resourceUID})
ID: &id,
})
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get resource: %v", err)
}
if resource == nil {
return nil, status.Errorf(codes.NotFound, "resource not found")
}
return s.convertResourceFromStore(ctx, resource), nil
}
//nolint:all
func (s *APIV1Service) GetResourceByUid(ctx context.Context, request *v1pb.GetResourceByUidRequest) (*v1pb.Resource, error) {
resource, err := s.Store.GetResource(ctx, &store.FindResource{
UID: &request.Uid,
})
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get resource: %v", err) return nil, status.Errorf(codes.Internal, "failed to get resource: %v", err)
} }
...@@ -149,11 +133,11 @@ func (s *APIV1Service) GetResourceBinary(ctx context.Context, request *v1pb.GetR ...@@ -149,11 +133,11 @@ func (s *APIV1Service) GetResourceBinary(ctx context.Context, request *v1pb.GetR
GetBlob: true, GetBlob: true,
} }
if request.Name != "" { if request.Name != "" {
id, err := ExtractResourceIDFromName(request.Name) resourceUID, err := ExtractResourceUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err)
} }
resourceFind.ID = &id resourceFind.UID = &resourceUID
} }
resource, err := s.Store.GetResource(ctx, resourceFind) resource, err := s.Store.GetResource(ctx, resourceFind)
if err != nil { if err != nil {
...@@ -215,17 +199,21 @@ func (s *APIV1Service) GetResourceBinary(ctx context.Context, request *v1pb.GetR ...@@ -215,17 +199,21 @@ func (s *APIV1Service) GetResourceBinary(ctx context.Context, request *v1pb.GetR
} }
func (s *APIV1Service) UpdateResource(ctx context.Context, request *v1pb.UpdateResourceRequest) (*v1pb.Resource, error) { func (s *APIV1Service) UpdateResource(ctx context.Context, request *v1pb.UpdateResourceRequest) (*v1pb.Resource, error) {
id, err := ExtractResourceIDFromName(request.Resource.Name) resourceUID, err := ExtractResourceUIDFromName(request.Resource.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err)
} }
if request.UpdateMask == nil || len(request.UpdateMask.Paths) == 0 { if request.UpdateMask == nil || len(request.UpdateMask.Paths) == 0 {
return nil, status.Errorf(codes.InvalidArgument, "update mask is required") return nil, status.Errorf(codes.InvalidArgument, "update mask is required")
} }
resource, err := s.Store.GetResource(ctx, &store.FindResource{UID: &resourceUID})
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to get resource: %v", err)
}
currentTs := time.Now().Unix() currentTs := time.Now().Unix()
update := &store.UpdateResource{ update := &store.UpdateResource{
ID: id, ID: resource.ID,
UpdatedTs: &currentTs, UpdatedTs: &currentTs,
} }
for _, field := range request.UpdateMask.Paths { for _, field := range request.UpdateMask.Paths {
...@@ -243,7 +231,7 @@ func (s *APIV1Service) UpdateResource(ctx context.Context, request *v1pb.UpdateR ...@@ -243,7 +231,7 @@ func (s *APIV1Service) UpdateResource(ctx context.Context, request *v1pb.UpdateR
} }
func (s *APIV1Service) DeleteResource(ctx context.Context, request *v1pb.DeleteResourceRequest) (*emptypb.Empty, error) { func (s *APIV1Service) DeleteResource(ctx context.Context, request *v1pb.DeleteResourceRequest) (*emptypb.Empty, error) {
id, err := ExtractResourceIDFromName(request.Name) resourceUID, err := ExtractResourceUIDFromName(request.Name)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err) return nil, status.Errorf(codes.InvalidArgument, "invalid resource id: %v", err)
} }
...@@ -252,7 +240,7 @@ func (s *APIV1Service) DeleteResource(ctx context.Context, request *v1pb.DeleteR ...@@ -252,7 +240,7 @@ func (s *APIV1Service) DeleteResource(ctx context.Context, request *v1pb.DeleteR
return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err) return nil, status.Errorf(codes.Internal, "failed to get current user: %v", err)
} }
resource, err := s.Store.GetResource(ctx, &store.FindResource{ resource, err := s.Store.GetResource(ctx, &store.FindResource{
ID: &id, UID: &resourceUID,
CreatorID: &user.ID, CreatorID: &user.ID,
}) })
if err != nil { if err != nil {
...@@ -272,8 +260,7 @@ func (s *APIV1Service) DeleteResource(ctx context.Context, request *v1pb.DeleteR ...@@ -272,8 +260,7 @@ func (s *APIV1Service) DeleteResource(ctx context.Context, request *v1pb.DeleteR
func (s *APIV1Service) convertResourceFromStore(ctx context.Context, resource *store.Resource) *v1pb.Resource { func (s *APIV1Service) convertResourceFromStore(ctx context.Context, resource *store.Resource) *v1pb.Resource {
resourceMessage := &v1pb.Resource{ resourceMessage := &v1pb.Resource{
Name: fmt.Sprintf("%s%d", ResourceNamePrefix, resource.ID), Name: fmt.Sprintf("%s%s", ResourceNamePrefix, resource.UID),
Uid: resource.UID,
CreateTime: timestamppb.New(time.Unix(resource.CreatedTs, 0)), CreateTime: timestamppb.New(time.Unix(resource.CreatedTs, 0)),
Filename: resource.Filename, Filename: resource.Filename,
Type: resource.Type, Type: resource.Type,
......
...@@ -42,7 +42,7 @@ const EmbeddedResource = ({ resourceId: uid, params: paramsStr }: Props) => { ...@@ -42,7 +42,7 @@ const EmbeddedResource = ({ resourceId: uid, params: paramsStr }: Props) => {
const params = new URLSearchParams(paramsStr); const params = new URLSearchParams(paramsStr);
useEffect(() => { useEffect(() => {
resourceStore.fetchResourceByUID(uid).finally(() => loadingState.setFinish()); resourceStore.fetchResourceByName(`resources/${uid}`).finally(() => loadingState.setFinish());
}, [uid]); }, [uid]);
if (loadingState.isLoading) { if (loadingState.isLoading) {
......
...@@ -15,9 +15,9 @@ export const useResourceStore = create( ...@@ -15,9 +15,9 @@ export const useResourceStore = create(
combine(getDefaultState(), (set, get) => ({ combine(getDefaultState(), (set, get) => ({
setState: (state: State) => set(state), setState: (state: State) => set(state),
getState: () => get(), getState: () => get(),
fetchResourceByUID: async (uid: string) => { fetchResourceByName: async (name: string) => {
const resource = await resourceServiceClient.getResourceByUid({ const resource = await resourceServiceClient.getResource({
uid, name,
}); });
const resourceMap = get().resourceMapByName; const resourceMap = get().resourceMapByName;
resourceMap[resource.name] = resource; resourceMap[resource.name] = resource;
......
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