Added SortByKeys to insert

This commit is contained in:
Patrick O'brien 2016-06-07 17:08:00 +10:00
parent d0b494600e
commit a20574110c
5 changed files with 14 additions and 1 deletions

View file

@ -74,6 +74,7 @@ func NonZeroDefaultSet(defaults []string, obj interface{}) []string {
return c
}
// SortByKeys returns a new ordered slice based on the keys ordering
func SortByKeys(keys []string, strs []string) []string {
c := make([]string, len(strs))

View file

@ -142,6 +142,7 @@ var sqlBoilerTemplateFuncs = template.FuncMap{
"camelCaseSingular": strmangle.CamelCaseSingular,
"camelCasePlural": strmangle.CamelCasePlural,
"camelCaseCommaList": strmangle.CamelCaseCommaList,
"columnsToStrings": strmangle.ColumnsToStrings,
"commaList": strmangle.CommaList,
"makeDBName": strmangle.MakeDBName,
"selectParamNames": strmangle.SelectParamNames,

View file

@ -1,5 +1,5 @@
{{- $varNameSingular := camelCaseSingular .Table.Name -}}
var {{$varNameSingular}}Columns = []string{{"{"}}{{commaList .Table.Columns}}{{"}"}}
var {{$varNameSingular}}Columns = []string{{"{"}}{{columnsToStrings .Table.Columns | commaList}}{{"}"}}
var {{$varNameSingular}}ColumnsWithoutDefault = []string{{"{"}}{{filterColumnsByDefault .Table.Columns false}}{{"}"}}
var {{$varNameSingular}}ColumnsWithDefault = []string{{"{"}}{{filterColumnsByDefault .Table.Columns true}}{{"}"}}
var {{$varNameSingular}}PrimaryKeyColumns = []string{{"{"}}{{commaList .Table.PKey.Columns}}{{"}"}}

View file

@ -19,6 +19,7 @@ func (o *{{$tableNameSingular}}) InsertX(exec boil.Executor, whitelist ... strin
}
wl = append(boil.NonZeroDefaultSet({{$varNameSingular}}ColumnsWithDefault, o), wl...)
wl = boil.SortByKeys({{$varNameSingular}}Columns, wl)
// Only return the columns with default values that are not in the insert whitelist
returnColumns := boil.SetComplement({{$varNameSingular}}ColumnsWithDefault, wl)

View file

@ -310,6 +310,16 @@ func AutoIncPrimaryKey(cols []dbdrivers.Column, pkey *dbdrivers.PrimaryKey) stri
return ""
}
// ColumnsToString changes the columns into a list of column names
func ColumnsToStrings(cols []dbdrivers.Column) []string {
names := make([]string, len(cols))
for i, c := range cols {
names[i] = c.Name
}
return names
}
// CommaList returns a comma seperated list: "col1", "col2", "col3"
func CommaList(cols []string) string {
return fmt.Sprintf(`"%s"`, strings.Join(cols, `", "`))