1919
2020import java .text .SimpleDateFormat ;
2121
22+
23+ import org .openapitools .codegen .CliOption ;
2224import org .openapitools .codegen .CodegenType ;
25+ import org .openapitools .codegen .CodegenConstants ;
2326import org .openapitools .codegen .SupportingFile ;
2427
2528import io .swagger .v3 .oas .models .media .*;
@@ -64,6 +67,8 @@ public class RubyOnRailsServerCodegen extends AbstractRubyCodegen {
6467 protected String pidFolder = tmpFolder + File .separator + "pids" ;
6568 protected String socketsFolder = tmpFolder + File .separator + "sockets" ;
6669 protected String vendorFolder = "vendor" ;
70+ protected String databaseAdapter = "sqlite" ;
71+
6772
6873 public RubyOnRailsServerCodegen () {
6974 super ();
@@ -87,6 +92,9 @@ public RubyOnRailsServerCodegen() {
8792
8893 // remove modelPackage and apiPackage added by default
8994 cliOptions .clear ();
95+
96+ cliOptions .add (new CliOption (CodegenConstants .DATABASE_ADAPTER , CodegenConstants .DATABASE_ADAPTER_DESC ).
97+ defaultValue ("sqlite" ));
9098 }
9199
92100 @ Override
@@ -97,6 +105,23 @@ public void processOpts() {
97105 //setModelPackage("models");
98106 setApiPackage ("app/controllers" );
99107
108+ // determine which db adapter to use
109+ if (additionalProperties .containsKey (CodegenConstants .DATABASE_ADAPTER )) {
110+ setDatabaseAdapter ((String ) additionalProperties .get (CodegenConstants .DATABASE_ADAPTER ));
111+ } else {
112+ // not set, pass the default value to template
113+ additionalProperties .put (CodegenConstants .DATABASE_ADAPTER , databaseAdapter );
114+ }
115+
116+ if ("sqlite" .equals (databaseAdapter )) {
117+ additionalProperties .put ("isDBSQLite" , Boolean .TRUE );
118+ } else if ("mysql" .equals (databaseAdapter )) {
119+ additionalProperties .put ("isDBMySQL" , Boolean .TRUE );
120+ } else {
121+ LOGGER .warn ("Unknown database {}. Defaul to 'sqlite'." , databaseAdapter );
122+ additionalProperties .put ("isDBSQLite" , Boolean .TRUE );
123+ }
124+
100125 supportingFiles .add (new SupportingFile ("Gemfile" , "" , "Gemfile" ));
101126 supportingFiles .add (new SupportingFile ("README.md" , "" , "README.md" ));
102127 supportingFiles .add (new SupportingFile ("Rakefile" , "" , "Rakefile" ));
@@ -230,7 +255,7 @@ public String toApiName(String name) {
230255 if (name .length () == 0 ) {
231256 return "ApiController" ;
232257 }
233- // e.g. phone_number_api => PhoneNumberApi
258+ // e.g. phone_number_controller => PhoneNumberController
234259 return camelize (name ) + "Controller" ;
235260 }
236261
@@ -239,4 +264,8 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
239264 generateYAMLSpecFile (objs );
240265 return super .postProcessSupportingFileData (objs );
241266 }
267+
268+ public void setDatabaseAdapter (String databaseAdapter ) {
269+ this .databaseAdapter = databaseAdapter ;
270+ }
242271}
0 commit comments