package packs

import (
	kernelconnector "github.com/nexuscrm/kernel/pkg/connector"
	connector "github.com/pingcap-inc/nexuscrm-contract/pkg/connector"
)

type sourceBackedConnectorPushHistoricalReconciliationDeclaration struct {
	Contract connector.ConnectorPushDurableMetadataContract
	Key      connector.ConnectorPushHistoricalReconciliationKeyContract
}

func resolveConnectorPushHistoricalReconciliationBindings(
	declarations []sourceBackedConnectorPushHistoricalReconciliationDeclaration,
	mappings []connector.ConnectorFieldMappingInput,
	opts connector.ConnectorPushContractValidationOptions,
) ([]kernelconnector.ConnectorPushHistoricalReconciliationBinding, error) {
	if declarations == nil {
		return nil, nil
	}
	bindings := make([]kernelconnector.ConnectorPushHistoricalReconciliationBinding, 0, len(declarations))
	for _, declaration := range declarations {
		binding, err := kernelconnector.ResolveConnectorPushHistoricalReconciliationBinding(
			declaration.Contract,
			declaration.Key,
			mappings,
			opts,
		)
		if err != nil {
			return nil, err
		}
		bindings = append(bindings, binding)
	}
	return bindings, nil
}
