package accountdb

import (
	"context"

	"github.com/tidbcloud/account/idl/pbgen/proto/account"
	"github.com/tidbcloud/metrics-integration/global/internal/infrastructure/account/accounttypes"
	"github.com/tidbcloud/metrics-integration/global/internal/infrastructure/grpc/grpcli"
)

func GetOrgByID(orgId uint64) (*accounttypes.Tenant, error) {
	ctx := context.Background()

	response, err := grpcli.GetOrgByID(ctx, orgId)
	if err != nil {
		return nil, err
	}

	return convertOrg(response), nil
}

func ListOrgMapByIDs(ids []uint64) (map[uint64]accounttypes.Tenant, error) {
	if len(ids) == 0 {
		return nil, nil
	}

	ctx := context.Background()
	request := &account.OrgFilter{
		Ids: ids,
	}

	response, err := grpcli.ListOrgs(ctx, request)
	if err != nil {
		return nil, err
	}

	result := make(map[uint64]accounttypes.Tenant)
	for _, org := range response.Orgs {
		result[org.Id] = *convertOrg(org)
	}

	return result, nil
}
