package tools

import (
	"context"

	"github.com/modelcontextprotocol/go-sdk/mcp"

	"git.warky.dev/wdevs/amcs/internal/store"
)

type DeleteTool struct {
	store *store.DB
}

type DeleteInput struct {
	ID string `json:"id" jsonschema:"the thought id"`
}

type DeleteOutput struct {
	Deleted bool `json:"deleted"`
}

func NewDeleteTool(db *store.DB) *DeleteTool {
	return &DeleteTool{store: db}
}

func (t *DeleteTool) Handle(ctx context.Context, _ *mcp.CallToolRequest, in DeleteInput) (*mcp.CallToolResult, DeleteOutput, error) {
	id, err := parseUUID(in.ID)
	if err != nil {
		return nil, DeleteOutput{}, err
	}
	if err := t.store.DeleteThought(ctx, id); err != nil {
		return nil, DeleteOutput{}, err
	}
	return nil, DeleteOutput{Deleted: true}, nil
}
