package appcontroller

import (
	"context"

	"github.com/tidbcloud/infra-provider/regional-server/api/v1alpha1"
	"sigs.k8s.io/controller-runtime/pkg/client"
)

type APPControllerReaderWriter interface {
	APPControllerReader
	APPControllerWriter
}

type APPControllerWriter interface {
	Create(ctx context.Context, appController *v1alpha1.APPController) error
}

type APPControllerReader interface {
	Get(ctx context.Context) (*v1alpha1.APPController, error)
}

func NewAPPControllerReaderWriter(cli client.Client) APPControllerReaderWriter {
	return &appControllerReaderWriter{
		appControllerReader: appControllerReader{cli},
		appControllerWriter: appControllerWriter{cli},
	}
}

func NewAPPControllerReader(cli client.Client) APPControllerReader {
	return &appControllerReader{
		readCli: cli,
	}
}

func NewAPPControllerWriter(cli client.Client) APPControllerWriter {
	return &appControllerWriter{
		cli: cli,
	}
}

type appControllerReaderWriter struct {
	appControllerReader
	appControllerWriter
}

type appControllerWriter struct {
	cli client.Client
}

func (w *appControllerWriter) Create(ctx context.Context, appController *v1alpha1.APPController) error {
	return nil
}

type appControllerReader struct {
	readCli client.Reader
}

func (r *appControllerReader) Get(ctx context.Context) (*v1alpha1.APPController, error) {
	return &v1alpha1.APPController{}, nil
}
