package auditlog_svc

import (
	"context"

	"github.com/tidbcloud/pkgv2/bizerr"
	"github.com/tidbcloud/pkgv2/log"
	"github.com/tidbcloud/serverless-service/idl/pbgen/proto/v1beta1"
	"go.uber.org/zap"
)

type auditLogV1beta1Service struct {
	v1beta1.UnimplementedAuditLogServiceServer
}

func NewAuditLogV1beta1Service() v1beta1.AuditLogServiceServer {
	return &auditLogV1beta1Service{}
}

func (a *auditLogV1beta1Service) ListAuditLogs(
	ctx context.Context,
	request *v1beta1.ListAuditLogsRequestV1,
) (_ *v1beta1.ListAuditLogsResponseV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to list audit logs", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}

func (a *auditLogV1beta1Service) DownloadAuditLogs(
	ctx context.Context,
	request *v1beta1.DownloadAuditLogsRequestV1,
) (_ *v1beta1.DownloadAuditLogsResponseV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to download audit logs", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}

func (a *auditLogV1beta1Service) GetAuditLogFilterRule(
	ctx context.Context,
	request *v1beta1.GetAuditLogFilterRuleRequestV1,
) (_ *v1beta1.AuditLogFilterRuleV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to get audit log filter rule", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}

func (a *auditLogV1beta1Service) ListAuditLogFilterRules(
	ctx context.Context,
	request *v1beta1.ListAuditLogFilterRulesRequestV1,
) (_ *v1beta1.ListAuditLogFilterRulesResponseV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to list audit log filter rules", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}

func (a *auditLogV1beta1Service) CreateAuditLogFilterRule(
	ctx context.Context,
	request *v1beta1.CreateAuditLogFilterRuleRequestV1,
) (_ *v1beta1.AuditLogFilterRuleV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to create audit log filter rule", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}

func (a *auditLogV1beta1Service) DeleteAuditLogFilterRule(
	ctx context.Context,
	request *v1beta1.DeleteAuditLogFilterRuleRequestV1,
) (_ *v1beta1.AuditLogFilterRuleV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to delete audit log filter rule", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}

func (a *auditLogV1beta1Service) UpdateAuditLogFilterRule(
	ctx context.Context,
	request *v1beta1.UpdateAuditLogFilterRuleRequestV1,
) (_ *v1beta1.AuditLogFilterRuleV1, err error) {
	logger := log.WithContextL(ctx)
	logger.Info("[deprecated] start to update audit log filter rule", zap.Any("request", request))
	return nil, bizerr.New(
		bizerr.ErrCodeParams,
		"This API is deprecated and not supported, please update your CLI version.",
	)
}
