package knowledgeqa

import (
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/store/model"
)

func marshalAuthorizedRoots(roots []AuthorizedRoot) ([]byte, error) {
	persisted := make([]model.KnowledgeQAAuthorizedRootJSON, 0, len(roots))
	for _, root := range roots {
		persisted = append(persisted, model.KnowledgeQAAuthorizedRootJSON{
			ID:              root.ID,
			KnowledgeBaseID: root.KnowledgeBaseID,
			SourceID:        root.SourceID,
			RootHandleRef:   root.RootHandleRef,
			RootKind:        root.RootKind,
			RepoRole:        root.RepoRole,
			Revision:        root.Revision,
			FreshnessStatus: root.FreshnessStatus,
		})
	}
	return model.MarshalJSONObject("Knowledge Q&A authorized roots", persisted)
}

func unmarshalAuthorizedRoots(raw []byte) ([]AuthorizedRoot, error) {
	var persisted []model.KnowledgeQAAuthorizedRootJSON
	if err := model.UnmarshalJSONObject("Knowledge Q&A authorized roots", raw, &persisted); err != nil {
		return nil, err
	}
	roots := make([]AuthorizedRoot, 0, len(persisted))
	for _, root := range persisted {
		repoRole := strings.TrimSpace(root.RepoRole)
		roots = append(roots, AuthorizedRoot{
			ID:              root.ID,
			KnowledgeBaseID: root.KnowledgeBaseID,
			SourceID:        root.SourceID,
			RootHandleRef:   root.RootHandleRef,
			RootKind:        root.RootKind,
			RepoRole:        repoRole,
			Revision:        root.Revision,
			FreshnessStatus: root.FreshnessStatus,
		})
	}
	return roots, nil
}
