package repo

import (
	"context"

	"github.com/tidbcloud/pkgv2/bizerr"
	"github.com/tidbcloud/serverless-service/internal/domain/entity"
)

type AuditLogFilterRuleRepo interface {
	// Create a new filter rule
	Create(ctx context.Context, filterRule *entity.AuditLogFilterRule) bizerr.BizError
	// Get a filter rule by ID
	GetByID(ctx context.Context, clusterId, filterRuleId string) (*entity.AuditLogFilterRule, bizerr.BizError)
	// List filter rules
	ListByFilter(
		ctx context.Context,
		filter entity.AuditLogFilterRuleFilter,
	) ([]*entity.AuditLogFilterRule, bizerr.BizError)
	// Count filter rules
	CountByFilter(ctx context.Context, filter entity.AuditLogFilterRuleFilter) (int64, bizerr.BizError)
	// Save a filter rule
	Save(ctx context.Context, filterRule *entity.AuditLogFilterRule) bizerr.BizError
	// Delete a filter rule by ID
	Delete(ctx context.Context, clusterId, filterRuleId string) bizerr.BizError
}

type AuditLogConfigRepo interface {
	// Get audit log config by cluster ID
	Get(ctx context.Context, clusterId string) (*entity.AuditLogConfig, bizerr.BizError)
	// Update audit log config
	Save(ctx context.Context, config *entity.AuditLogConfig) bizerr.BizError
	// Create audit log config
	Create(ctx context.Context, config *entity.AuditLogConfig) bizerr.BizError
	// Delete audit log config by cluster ID
	Delete(ctx context.Context, clusterId string) bizerr.BizError
}
