package backup import ( "git.eeqj.de/sneak/vaultik/internal/config" "git.eeqj.de/sneak/vaultik/internal/database" "git.eeqj.de/sneak/vaultik/internal/s3" "github.com/spf13/afero" "go.uber.org/fx" ) // ScannerParams holds parameters for scanner creation type ScannerParams struct { EnableProgress bool } // Module exports backup functionality as an fx module. // It provides a ScannerFactory that can create Scanner instances // with custom parameters while sharing common dependencies. var Module = fx.Module("backup", fx.Provide( provideScannerFactory, ), ) // ScannerFactory creates scanners with custom parameters type ScannerFactory func(params ScannerParams) *Scanner func provideScannerFactory(cfg *config.Config, repos *database.Repositories, s3Client *s3.Client) ScannerFactory { return func(params ScannerParams) *Scanner { return NewScanner(ScannerConfig{ FS: afero.NewOsFs(), ChunkSize: cfg.ChunkSize.Int64(), Repositories: repos, S3Client: s3Client, MaxBlobSize: cfg.BlobSizeLimit.Int64(), CompressionLevel: cfg.CompressionLevel, AgeRecipients: cfg.AgeRecipients, EnableProgress: params.EnableProgress, }) } }