diff --git a/server/pkg/seeder/commands/commands.go b/server/pkg/seeder/commands/commands.go deleted file mode 100644 index 6eaebd5d9..000000000 --- a/server/pkg/seeder/commands/commands.go +++ /dev/null @@ -1,20 +0,0 @@ -package commands - -import ( - "context" - - "github.com/cortezaproject/corteza/server/pkg/cli" - "github.com/spf13/cobra" -) - -type ( - serviceInitializer interface { - InitServices(ctx context.Context) error - } -) - -func commandPreRunInitService(app serviceInitializer) func(*cobra.Command, []string) error { - return func(_ *cobra.Command, _ []string) error { - return app.InitServices(cli.Context()) - } -} diff --git a/server/pkg/seeder/commands/seeder.go b/server/pkg/seeder/commands/seeder.go index 98f48e3ed..0b6ef5e46 100644 --- a/server/pkg/seeder/commands/seeder.go +++ b/server/pkg/seeder/commands/seeder.go @@ -2,9 +2,8 @@ package commands import ( "context" - "fmt" - - "github.com/cortezaproject/corteza/server/compose/types" + cService "github.com/cortezaproject/corteza/server/compose/service" + cTypes "github.com/cortezaproject/corteza/server/compose/types" "github.com/cortezaproject/corteza/server/pkg/cli" "github.com/cortezaproject/corteza/server/pkg/dal" "github.com/cortezaproject/corteza/server/pkg/seeder" @@ -12,72 +11,97 @@ import ( "github.com/spf13/cobra" ) +type ( + serviceInitializer interface { + InitServices(ctx context.Context) error + } + + seederService interface { + CreateUser(seeder.Params) ([]uint64, error) + CreateRecord(seeder.RecordParams) ([]uint64, error) + DeleteAllUser() error + DeleteAllRecord(*cTypes.Module) error + DeleteAll(*seeder.RecordParams) (err error) + } +) + +var ( + svc seederService +) + func Seeder(ctx context.Context, app serviceInitializer) *cobra.Command { cmd := &cobra.Command{ Use: "seeder", Short: "Seeds fake data", Long: "Generates fake data for user and records", + + PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) { + if err = app.InitServices(cli.Context()); err != nil { + return err + } + + if err = cService.Activate(ctx); err != nil { + return err + } + + svc = seeder.Seeder(ctx, seeder.DefaultStore, dal.Service(), seeder.Faker()) + return nil + }, } // @todo improve cli command with sub-command cmd.AddCommand( - users(ctx, app), - records(ctx, app), - deleteAll(ctx, app), + cmdUsers(), + cmdRecords(), + cmdDelete(), ) return cmd } -func users(ctx context.Context, app serviceInitializer) (cmd *cobra.Command) { +func cmdUsers() (cmd *cobra.Command) { var ( limit int ) cmd = &cobra.Command{ - Use: "users [action]", - Short: "Seed users", - ValidArgs: []string{"create", "delete"}, - Args: cobra.MinimumNArgs(1), - PreRunE: commandPreRunInitService(app), - Run: func(cmd *cobra.Command, args []string) { - var ( - seed = seeder.Seeder(ctx, seeder.DefaultStore, dal.Service(), seeder.Faker()) - err error - ) - - action := args[0] - switch action { - case "create": - userIDs, err := seed.CreateUser(seeder.Params{Limit: limit}) - cli.HandleError(err) - - fmt.Fprintf( - cmd.OutOrStdout(), - " Created %d users\n", - len(userIDs), - ) - - break - case "delete": - err = seed.DeleteAllUser() - cli.HandleError(err) - - fmt.Fprintf( - cmd.OutOrStdout(), - " Deleted all users\n", - ) - - break - } - }, + Use: "users", + Short: "Seed users", + Args: cobra.MaximumNArgs(0), } - cmd.Flags().IntVarP(&limit, "limit", "l", 1, "How many users to be created") + cmd.AddCommand( + &cobra.Command{ + Use: "create", + Short: "Create users", + Args: cobra.MaximumNArgs(0), + Run: func(cmd *cobra.Command, args []string) { + userIDs, err := svc.CreateUser(seeder.Params{Limit: limit}) + cli.HandleError(err) + + cmd.Printf(" Created %d users", len(userIDs)) + cmd.Println() + }, + }, + &cobra.Command{ + Use: "delete", + Short: "Delete users", + Args: cobra.MaximumNArgs(0), + Run: func(cmd *cobra.Command, args []string) { + cli.HandleError(svc.DeleteAllUser()) + + cmd.Println(" Deleted all users") + + }, + }, + ) + + cmdCreate := cmd.Commands()[0] + cmdCreate.Flags().IntVarP(&limit, "limit", "l", 1, "How many users to be created") return cmd } -func records(ctx context.Context, app serviceInitializer) (cmd *cobra.Command) { +func cmdRecords() (cmd *cobra.Command) { var ( namespaceID int moduleID int @@ -85,56 +109,53 @@ func records(ctx context.Context, app serviceInitializer) (cmd *cobra.Command) { params = seeder.RecordParams{} ) cmd = &cobra.Command{ - Use: "records [action]", + Use: "records", Short: "Seed records", Args: cobra.MinimumNArgs(1), ValidArgs: []string{"create", "delete"}, - PreRunE: commandPreRunInitService(app), - Run: func(cmd *cobra.Command, args []string) { - var ( - seed = seeder.Seeder(ctx, seeder.DefaultStore, dal.Service(), seeder.Faker()) - err error - ) - - params.NamespaceID = uint64(namespaceID) - params.ModuleID = uint64(moduleID) - - switch args[0] { - case "create": - recordIDs, err := seed.CreateRecord(params) - cli.HandleError(err) - - fmt.Fprintf( - cmd.OutOrStdout(), - " Created %d records\n", - len(recordIDs), - ) - break - case "delete": - err = seed.DeleteAllRecord(&types.Module{}) - cli.HandleError(err) - - fmt.Fprintf( - cmd.OutOrStdout(), - " Deleted all records\n", - ) - - break - } - }, } - cmd.Flags().IntVarP(¶ms.Limit, "limit", "l", 1, "How many users to be created") + cmd.AddCommand( + &cobra.Command{ + Use: "create", + Short: "Create records", + Args: cobra.MaximumNArgs(0), + Run: func(cmd *cobra.Command, args []string) { + params.NamespaceID = uint64(namespaceID) + params.ModuleID = uint64(moduleID) + + userIDs, err := svc.CreateRecord(params) + cli.HandleError(err) + + cmd.Printf(" Created %d records", len(userIDs)) + cmd.Println() + }, + }, + &cobra.Command{ + Use: "delete", + Short: "Delete records", + Args: cobra.MaximumNArgs(0), + Run: func(cmd *cobra.Command, args []string) { + cli.HandleError(svc.DeleteAllRecord(&cTypes.Module{})) + + cmd.Println(" Deleted all records") + + }, + }, + ) + + cmdCreate := cmd.Commands()[0] + cmdCreate.Flags().IntVarP(¶ms.Limit, "limit", "l", 1, "How many records to be created") // @todo: Can be improved by adding one flag which accept string(handle) or id(int) for namespace and module - cmd.Flags().IntVarP(&namespaceID, "namespace-id", "n", 0, "namespace id for recode creation") - cmd.Flags().StringVarP(¶ms.NamespaceHandle, "namespace-handle", "a", "", "namespace handle for recode creation") - cmd.Flags().IntVarP(&moduleID, "module-id", "m", 0, "module id for recode creation") - cmd.Flags().StringVarP(¶ms.ModuleHandle, "module-handle", "b", "", "module handle for recode creation") + cmdCreate.Flags().IntVarP(&namespaceID, "namespace-id", "n", 0, "namespace id for recode creation") + cmdCreate.Flags().StringVarP(¶ms.NamespaceHandle, "namespace-handle", "a", "", "namespace handle for recode creation") + cmdCreate.Flags().IntVarP(&moduleID, "module-id", "m", 0, "module id for recode creation") + cmdCreate.Flags().StringVarP(¶ms.ModuleHandle, "module-handle", "b", "", "module handle for recode creation") return cmd } -func deleteAll(ctx context.Context, app serviceInitializer) (cmd *cobra.Command) { +func cmdDelete() (cmd *cobra.Command) { var ( namespaceID int moduleID int @@ -142,25 +163,15 @@ func deleteAll(ctx context.Context, app serviceInitializer) (cmd *cobra.Command) params = seeder.RecordParams{} ) cmd = &cobra.Command{ - Use: "delete", - Short: "delete all seeded data", - PreRunE: commandPreRunInitService(app), + Use: "delete", + Short: "delete all seeded data", Run: func(cmd *cobra.Command, args []string) { - var ( - seed = seeder.Seeder(ctx, seeder.DefaultStore, dal.Service(), seeder.Faker()) - err error - ) - params.NamespaceID = uint64(namespaceID) params.ModuleID = uint64(moduleID) - err = seed.DeleteAll(¶ms) - cli.HandleError(err) + cli.HandleError(svc.DeleteAll(¶ms)) - fmt.Fprintf( - cmd.OutOrStdout(), - " Deleted all fake data\n", - ) + cmd.Println(" Deleted all fake data") }, }