Files
member-console/cmd/seed_demo.go
T
cgalo5758 494f25860c Stabilize demo operator walkthroughs
Configure the personal org-type default ladder and floor vacant pools so
the seeded dataset survives grant revocation. Let the modal mechanics
test
fall back to plan-ladder action triggers in full-suite order.
2026-08-01 18:53:28 -05:00

57 lines
1.7 KiB
Go

package cmd
import (
"context"
"log/slog"
"git.coopcloud.tech/wiki-cafe/member-console/internal/db"
"git.coopcloud.tech/wiki-cafe/member-console/internal/demoseed"
"git.coopcloud.tech/wiki-cafe/member-console/internal/logging"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var seedDemoCmd = &cobra.Command{
Use: "seed-demo",
Short: "Seed a fixed reference catalog of demo data for the operator panel",
Long: `Insert an idempotent reference catalog (products, entitlement sets, plan ladder,
the personal org-type default, one grant) so the operator panel has data to walk
through. Re-running is a no-op. Person rows for bob/carlos/diana are pre-seeded;
Alice is not — log in as alice once (before seeding, so her pool gets floored at
the org-type default) to exercise the OIDC lazy-creation path. See OpenSpec change
2026-05-10-member-console-demo-seeder for the rationale.`,
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, args []string) error {
ctx := context.Background()
env := viper.GetString("env")
logger := logging.SetupLogger(env)
ctx = logging.WithContext(ctx, logger)
dbDSN := viper.GetString("db-dsn")
dbConfig := db.DefaultDBConfig(dbDSN)
database, err := db.ConnectAndMigrate(ctx, logger, dbConfig, migrationSources())
if err != nil {
logger.Error("failed to initialize database", slog.Any("error", err))
return err
}
defer database.Close()
summary, err := demoseed.Seed(ctx, database, logger)
if err != nil {
logger.Error("seed-demo failed", slog.Any("error", err))
return err
}
logger.Info("seed-demo complete",
slog.Int("created", summary.Created),
slog.Int("skipped", summary.Skipped),
)
return nil
},
}
func init() {
rootCmd.AddCommand(seedDemoCmd)
}