package storageusageevent

import (
	"go.uber.org/zap"

	"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/config"
	"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/domain/storageusageevent"
)

// Wire providers for storage usage event use cases

func ProvideCreateStorageUsageEventUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storageusageevent.StorageUsageEventRepository,
) CreateStorageUsageEventUseCase {
	return NewCreateStorageUsageEventUseCase(cfg, logger, repo)
}

func ProvideGetStorageUsageEventsUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storageusageevent.StorageUsageEventRepository,
) GetStorageUsageEventsUseCase {
	return NewGetStorageUsageEventsUseCase(cfg, logger, repo)
}

func ProvideGetStorageUsageEventsTrendAnalysisUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storageusageevent.StorageUsageEventRepository,
) GetStorageUsageEventsTrendAnalysisUseCase {
	return NewGetStorageUsageEventsTrendAnalysisUseCase(cfg, logger, repo)
}

func ProvideDeleteByUserUseCase(
	logger *zap.Logger,
	repo storageusageevent.StorageUsageEventRepository,
) DeleteByUserUseCase {
	return NewDeleteByUserUseCase(logger, repo)
}
