package app

import (
	"context"

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

type ownerQuoteSourceMessageQueryer interface {
	Query(context.Context, string, ...any) (coredb.Rows, error)
}

func (store *Store) validateOwnerQuoteMessageForTarget(ctx context.Context, queryer ownerQuoteSourceMessageQueryer, workspaceID string, target message.ThreadAccess, content string) error {
	sourceMessageIDs := message.ParseOwnerQuoteSourceMessageIDs(content)
	if len(sourceMessageIDs) == 0 {
		return badRequest("owner quote requires source message refs")
	}

	sources, err := message.LoadOwnerQuoteSourceMessages(ctx, queryer, workspaceID, sourceMessageIDs)
	if err != nil {
		return err
	}
	return message.ValidateOwnerQuoteSourceMessages(sources)
}
