package daemon

import (
	"context"

	"github.com/tidbcloud/AgentTeam/internal/coredb"
	"github.com/tidbcloud/AgentTeam/internal/store/extension"
)

// NewCatalogHintReader creates a hint reader function that reads the Agent's
// Extension Catalog hint from the durable catalog row. Used by the daemon Hub to
// populate the extensionCatalog field in the machine agent payload.
func NewCatalogHintReader(db coredb.DB) func(context.Context, string, string) (*ExtensionCatalogHint, error) {
	store := extension.New(db)
	return func(ctx context.Context, workspaceID, agentID string) (*ExtensionCatalogHint, error) {
		var hint extension.CatalogHint
		err := coredb.WithTx(ctx, db, func(tx coredb.Tx) error {
			var err error
			hint, err = store.InTx(tx).ReadAgentCatalogHint(ctx, workspaceID, agentID)
			return err
		})
		if err != nil {
			return nil, err
		}
		return &ExtensionCatalogHint{
			Version: hint.Version,
		}, nil
	}
}
