package accountdb

import (
	"context"

	"github.com/tidbcloud/account/idl/pbgen/proto/account"
	"github.com/tidbcloud/dataflow-service/internal/grpc/grpcli"
	"github.com/tidbcloud/dataflow-service/pkg/account/accounttypes"
)

func GetOrgByID(orgId uint64) (*accounttypes.Tenant, error) {
	ctx := context.Background()
	request := &account.GetOrgByIDRequest{
		Id: orgId,
	}

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

	return convertOrg(response.Org), 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
}
