package certmanager

import (
	"k8s.io/client-go/dynamic"
)

type Client struct {
	crdClient      dynamic.DynamicClient
	certIssuerName string
	certIssuerKind string

	Certificates certificateClient
}

type ClientOption func(*Client)

func WithCertIssuerName(name string) ClientOption {
	return func(c *Client) {
		c.certIssuerName = name
	}
}

func WithCertIssuerKind(kind string) ClientOption {
	return func(c *Client) {
		c.certIssuerKind = kind
	}
}

func NewClient(crdClient dynamic.DynamicClient, options ...ClientOption) *Client {
	client := &Client{
		crdClient: crdClient,
	}

	for _, option := range options {
		option(client)
	}

	client.Certificates = newCertificateClient(client)

	return client
}