package client

import (
	"context"
	"net/url"
)

// PluginRemoveOptions holds parameters to remove plugins.
type PluginRemoveOptions struct {
	Force bool
}

// PluginRemoveResult represents the result of a plugin removal.
type PluginRemoveResult struct {
	// Currently empty; can be extended in the future if needed.
}

// PluginRemove removes a plugin
func (cli *Client) PluginRemove(ctx context.Context, name string, options PluginRemoveOptions) (PluginRemoveResult, error) {
	name, err := trimID("plugin", name)
	if err != nil {
		return PluginRemoveResult{}, err
	}

	query := url.Values{}
	if options.Force {
		query.Set("force", "1")
	}

	resp, err := cli.delete(ctx, "/plugins/"+name, query, nil)
	defer ensureReaderClosed(resp)
	return PluginRemoveResult{}, err
}