// internal/handlers/vfs_driver/vfs_bookmark.go package vfsdriver import ( "context" "encoding/json" "fmt" api "git.zzyxyz.com/zzy/zzyxyz_go_api/gen/bookmarks" "git.zzyxyz.com/zzy/zzyxyz_go_api/internal/handlers" "git.zzyxyz.com/zzy/zzyxyz_go_api/internal/models" "github.com/gin-gonic/gin" ) type VfsBookMarkService struct { client *api.ClientWithResponses } func NewVfsBookMarkService(serverURL string) (*VfsBookMarkService, error) { client, err := api.NewClientWithResponses(serverURL) if err != nil { return nil, err } return &VfsBookMarkService{ client: client, }, nil } // Create implements ServiceProxy. func (v *VfsBookMarkService) Create(c *gin.Context, servicePath string, node *models.VfsNode, data []byte) (string, error) { ctx := context.Background() // 解析传入的数据为 BookmarkRequest var req api.BookmarkRequest if err := json.Unmarshal(data, &req); err != nil { return "", err } // 调用 bookmark 服务创建书签 resp, err := v.client.CreateBookmarkWithResponse(ctx, int64(node.ID), req) if err != nil { return "", err } // 处理响应 if resp.JSON201 != nil { result, err := json.Marshal(resp.JSON201) if err != nil { return "", err } return string(result), nil } // 处理错误情况 if resp.JSON400 != nil { return "", fmt.Errorf("bad request: %s", resp.JSON400.Message) } if resp.JSON500 != nil { return "", fmt.Errorf("server error: %s", resp.JSON500.Message) } return "", fmt.Errorf("unknown error") } // Delete implements ServiceProxy. func (v *VfsBookMarkService) Delete(c *gin.Context, servicePath string, node *models.VfsNode) error { ctx := context.Background() // 调用 bookmark 服务删除书签 resp, err := v.client.DeleteBookmarkWithResponse(ctx, int64(node.ID)) if err != nil { return err } // 处理响应 if resp.StatusCode() == 204 { return nil } // 处理错误情况 if resp.JSON404 != nil { return fmt.Errorf("not found: %s", resp.JSON404.Message) } if resp.JSON500 != nil { return fmt.Errorf("server error: %s", resp.JSON500.Message) } return fmt.Errorf("unknown error") } // Get implements ServiceProxy. func (v *VfsBookMarkService) Get(c *gin.Context, servicePath string, node *models.VfsNode) (any, error) { ctx := context.Background() // 调用 bookmark 服务获取书签 resp, err := v.client.GetBookmarkWithResponse(ctx, int64(node.ID)) if err != nil { return nil, err } // 处理响应 if resp.JSON200 != nil { return resp.JSON200, nil } // 处理错误情况 if resp.JSON404 != nil { return nil, fmt.Errorf("not found: %s", resp.JSON404.Message) } return nil, fmt.Errorf("unknown error") } // GetName implements ServiceProxy. func (v *VfsBookMarkService) GetName() string { return "bookmark" } // Update implements ServiceProxy. func (v *VfsBookMarkService) Update(c *gin.Context, servicePath string, node *models.VfsNode, data []byte) error { ctx := context.Background() // 解析传入的数据为 BookmarkRequest var req api.BookmarkRequest if err := json.Unmarshal(data, &req); err != nil { return err } // 调用 bookmark 服务更新书签 resp, err := v.client.UpdateBookmarkWithResponse(ctx, int64(node.ID), req) if err != nil { return err } // 处理响应 if resp.JSON200 != nil { return nil } // 处理错误情况 if resp.JSON400 != nil { return fmt.Errorf("bad request: %s", resp.JSON400.Message) } if resp.JSON404 != nil { return fmt.Errorf("not found: %s", resp.JSON404.Message) } if resp.JSON500 != nil { return fmt.Errorf("server error: %s", resp.JSON500.Message) } return fmt.Errorf("unknown error") } var _ handlers.ServiceProxy = (*VfsBookMarkService)(nil)