package sub import ( "github.com/urfave/cli/v2" "github.com/veypi/OneAuth/cfg" "github.com/veypi/OneAuth/models" "github.com/veypi/utils/log" ) var Role = &cli.Command{ Name: "role", Usage: "", Description: "", Subcommands: []*cli.Command{ { Name: "list", Action: runRoleList, }, { Name: "create", Action: runRoleCreate, Flags: []cli.Flag{ &cli.StringFlag{ Name: "uuid", Usage: "app uuid", Required: true, }, &cli.StringFlag{ Name: "name", Usage: "role name", Required: true, }, }, }, }, Flags: []cli.Flag{}, } func runRoleList(c *cli.Context) error { roles := make([]*models.Role, 0, 10) err := cfg.DB().Find(&roles).Error if err != nil { return err } for _, r := range roles { log.Info().Msgf("%d %s@%d", r.ID, r.Name, r.AppUUID) } return nil } func runRoleCreate(c *cli.Context) error { id := c.String("uuid") name := c.String("name") rl := &models.Role{} rl.AppUUID = id rl.Name = name err := cfg.DB().Where(rl).FirstOrCreate(rl).Error return err } var Resource = &cli.Command{ Name: "resource", Usage: "resource manual", Subcommands: []*cli.Command{ { Name: "list", Action: runResourceList, Flags: []cli.Flag{ &cli.StringFlag{ Name: "uuid", Usage: "app uuid", }, }, }, { Name: "create", Action: runResourceCreate, Flags: []cli.Flag{ &cli.StringFlag{ Name: "uuid", Usage: "app uuid", Required: true, }, &cli.StringFlag{ Name: "name", Usage: "role name", Required: true, }, }, }, }, } func runResourceList(c *cli.Context) error { query := &models.Resource{} query.AppUUID = c.String("uuid") l := make([]*models.Resource, 0, 10) err := cfg.DB().Where(query).Find(&l).Error if err != nil { return nil } for _, r := range l { log.Info().Msgf("%d: %s@%s", r.ID, r.Name, r.AppUUID) } return nil } func runResourceCreate(c *cli.Context) error { query := &models.Resource{} query.AppUUID = c.String("uuid") query.Name = c.String("name") err := cfg.DB().Where(query).FirstOrCreate(query).Error return err }