@@ -15,6 +15,11 @@ import (
1515func CreateCmd (ch * cmdutil.Helper ) * cobra.Command {
1616 createReq := & ps.CreateDatabaseRequest {}
1717
18+ var flags struct {
19+ clusterSize string
20+ engine string
21+ }
22+
1823 cmd := & cobra.Command {
1924 Use : "create <database>" ,
2025 Short : "Create a database instance" ,
@@ -25,12 +30,12 @@ func CreateCmd(ch *cmdutil.Helper) *cobra.Command {
2530 createReq .Organization = ch .Config .Organization
2631 createReq .Name = args [0 ]
2732
28- clusterSize , err := cmd . Flags (). GetString ( "cluster-size" )
33+ engine , err := parseDatabaseEngine ( flags . engine )
2934 if err != nil {
3035 return err
3136 }
3237
33- createReq .ClusterSize = clusterSize
38+ createReq .Kind = engine
3439
3540 client , err := ch .Client ()
3641 if err != nil {
@@ -62,10 +67,9 @@ func CreateCmd(ch *cmdutil.Helper) *cobra.Command {
6267
6368 cmd .Flags ().StringVar (& createReq .Region , "region" , "" , "region for the database" )
6469
65- cmd .Flags ().String ("cluster-size" , "" , "cluster size for Scaler Pro databases. Use `pscale size cluster list` to see the valid sizes." )
66-
67- cmd .Flags ().StringVar (& createReq .Kind , "kind" , "mysql" , "Kind of database to create. Supported values: mysql, postgresql. Defaults to mysql." )
68- cmd .RegisterFlagCompletionFunc ("kind" , func (cmd * cobra.Command , args []string , toComplete string ) ([]cobra.Completion , cobra.ShellCompDirective ) {
70+ cmd .Flags ().StringVar (& createReq .ClusterSize , "cluster-size" , "" , "cluster size for Scaler Pro databases. Use `pscale size cluster list` to see the valid sizes." )
71+ cmd .Flags ().StringVar (& flags .engine , "engine" , string (ps .DatabaseEngineMySQL ), "The database engine for the database. Supported values: mysql, postgresql. Defaults to mysql." )
72+ cmd .RegisterFlagCompletionFunc ("engine" , func (cmd * cobra.Command , args []string , toComplete string ) ([]cobra.Completion , cobra.ShellCompDirective ) {
6973 return []cobra.Completion {
7074 cobra .CompletionWithDesc ("mysql" , "A Vitess database" ),
7175 cobra .CompletionWithDesc ("postgresql" , "The fastest cloud Postgres" ),
@@ -82,3 +86,14 @@ func CreateCmd(ch *cmdutil.Helper) *cobra.Command {
8286
8387 return cmd
8488}
89+
90+ func parseDatabaseEngine (engine string ) (ps.DatabaseEngine , error ) {
91+ switch engine {
92+ case "mysql" :
93+ return ps .DatabaseEngineMySQL , nil
94+ case "postgresql" , "postgres" :
95+ return ps .DatabaseEnginePostgres , nil
96+ default :
97+ return ps .DatabaseEngineMySQL , fmt .Errorf ("invalid database engine %q, supported values: mysql, postgresql" , engine )
98+ }
99+ }
0 commit comments