package storagedailyusage

import (
	"go.uber.org/zap"

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

// Wire providers for storage daily usage use cases

func ProvideGetStorageDailyUsageTrendUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storagedailyusage.StorageDailyUsageRepository,
) GetStorageDailyUsageTrendUseCase {
	return NewGetStorageDailyUsageTrendUseCase(cfg, logger, repo)
}

func ProvideGetStorageUsageSummaryUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storagedailyusage.StorageDailyUsageRepository,
) GetStorageUsageSummaryUseCase {
	return NewGetStorageUsageSummaryUseCase(cfg, logger, repo)
}

func ProvideGetStorageUsageByDateRangeUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storagedailyusage.StorageDailyUsageRepository,
) GetStorageUsageByDateRangeUseCase {
	return NewGetStorageUsageByDateRangeUseCase(cfg, logger, repo)
}

func ProvideUpdateStorageUsageUseCase(
	cfg *config.Configuration,
	logger *zap.Logger,
	repo storagedailyusage.StorageDailyUsageRepository,
) UpdateStorageUsageUseCase {
	return NewUpdateStorageUsageUseCase(cfg, logger, repo)
}

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