this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

lexgen: include non-required query params conditionally

+19 -6
+19 -6
lex/type_schema.go
··· 3 3 import ( 4 4 "fmt" 5 5 "io" 6 + "slices" 6 7 "strings" 7 8 ) 8 9 ··· 145 146 queryparams := "nil" 146 147 if s.Parameters != nil { 147 148 queryparams = "params" 148 - pf(` 149 - params := map[string]interface{}{ 150 - `) 149 + pf("\n\tparams := map[string]interface{}{}\n") 151 150 if err := orderedMapIter(s.Parameters.Properties, func(name string, t *TypeSchema) error { 152 - pf(`"%s": %s, 153 - `, name, name) 151 + if slices.Contains(s.Parameters.Required, name) { 152 + pf("params[\"%s\"] = %s\n", name, name) 153 + } else { 154 + // if parameter isn't required, only include conditionally 155 + switch t.Type { 156 + case "integer": 157 + pf("if %s != 0 { params[\"%s\"] = %s }\n", name, name, name) 158 + case "string": 159 + pf("if %s != \"\" { params[\"%s\"] = %s }\n", name, name, name) 160 + case "array": 161 + pf("if len(%s) != 0 { params[\"%s\"] = %s }\n", name, name, name) 162 + case "boolean": 163 + pf("if %s { params[\"%s\"] = %s }\n", name, name, name) 164 + default: 165 + return fmt.Errorf("unhandled query param type: %s", t.Type) 166 + } 167 + } 154 168 return nil 155 169 }); err != nil { 156 170 return err 157 171 } 158 - pf("}\n") 159 172 } 160 173 161 174 var reqtype string