Transfer command refactoring

Make transfer command processing even more modular
This commit is contained in:
Philipp Wolfer 2023-12-05 08:10:38 +01:00
parent 7c85ba05ab
commit a9e07915ce
No known key found for this signature in database
GPG key ID: 8FDF744D4919943B
7 changed files with 236 additions and 179 deletions

View file

@ -18,8 +18,11 @@ package cmd
import (
"github.com/spf13/cobra"
"github.com/spf13/viper"
"go.uploadedlobster.com/scotty/internal/backends"
"go.uploadedlobster.com/scotty/internal/cli"
"go.uploadedlobster.com/scotty/internal/models"
"go.uploadedlobster.com/scotty/internal/storage"
)
// listensCmd represents the listens command
@ -28,15 +31,18 @@ var listensCmd = &cobra.Command{
Short: "Transfer listens between two services",
Long: `Transfers listens between two configured services.`,
Run: func(cmd *cobra.Command, args []string) {
exp, imp, err := resolveBackends[models.ListensExport, models.ListensImport, models.ListensResult](cmd)
db, err := storage.New(viper.GetString("database"))
cobra.CheckErr(err)
c, err := cli.NewTransferCmd[
models.ListensExport,
models.ListensImport,
models.ListensResult,
](cmd, &db, "listens")
cobra.CheckErr(err)
exp := backends.ListensExportProcessor{Backend: c.ExpBackend}
imp := backends.ListensImportProcessor{Backend: c.ImpBackend}
err = c.Transfer(exp, imp)
cobra.CheckErr(err)
exp.processor = backends.ListensExportProcessor{
Backend: exp.backend,
}
imp.processor = backends.ListensImportProcessor{
Backend: imp.backend,
}
cmdExportImport(cmd, "listens", exp, imp)
},
}