Use extensive piping throughout the templates

- Haskell ftw
This commit is contained in:
Aaron L 2016-06-19 22:22:50 -07:00
parent 5fbcb27f3f
commit 119e683952
19 changed files with 112 additions and 109 deletions

View file

@ -78,6 +78,8 @@ func (s *State) Run(includeTests bool) error {
Tables: s.Tables, Tables: s.Tables,
DriverName: s.Config.DriverName, DriverName: s.Config.DriverName,
PkgName: s.Config.PkgName, PkgName: s.Config.PkgName,
StringFuncs: templateStringMappers,
} }
if err := generateSingletonOutput(s, singletonData); err != nil { if err := generateSingletonOutput(s, singletonData); err != nil {
@ -103,6 +105,8 @@ func (s *State) Run(includeTests bool) error {
Table: table, Table: table,
DriverName: s.Config.DriverName, DriverName: s.Config.DriverName,
PkgName: s.Config.PkgName, PkgName: s.Config.PkgName,
StringFuncs: templateStringMappers,
} }
// Generate the regular templates // Generate the regular templates

View file

@ -125,7 +125,7 @@ func TestColumnNames(t *testing.T) {
} }
} }
func TestDriverUsesResults(t *testing.T) { func TestDriverUsesLastInsertID(t *testing.T) {
t.Parallel() t.Parallel()
if DriverUsesLastInsertID("postgres") { if DriverUsesLastInsertID("postgres") {

View file

@ -1,6 +1,7 @@
package main package main
import ( import (
"fmt"
"os" "os"
"path/filepath" "path/filepath"
"sort" "sort"
@ -17,6 +18,8 @@ type templateData struct {
Table dbdrivers.Table Table dbdrivers.Table
DriverName string DriverName string
PkgName string PkgName string
StringFuncs map[string]func(string) string
} }
type templateList []*template.Template type templateList []*template.Template
@ -80,45 +83,53 @@ func loadTemplate(dir string, filename string) (*template.Template, error) {
return tpl.Lookup(filename), err return tpl.Lookup(filename), err
} }
// templateStringMappers are placed into the data to make it easy to use the
// stringMap function.
var templateStringMappers = map[string]func(string) string{
"singular": strmangle.Singular,
"plural": strmangle.Plural,
// Casing
"toLower": strings.ToLower,
"toUpper": strings.ToUpper,
"titleCase": strmangle.TitleCase,
"camelCase": strmangle.CamelCase,
}
// templateFunctions is a map of all the functions that get passed into the // templateFunctions is a map of all the functions that get passed into the
// templates. If you wish to pass a new function into your own template, // templates. If you wish to pass a new function into your own template,
// add a function pointer here. // add a function pointer here.
var templateFunctions = template.FuncMap{ var templateFunctions = template.FuncMap{
"tolower": strings.ToLower, // String ops
"toupper": strings.ToUpper, "substring": strmangle.Substring,
"substring": strmangle.Substring, "remove": func(rem string, str string) string { return strings.Replace(str, rem, "", -1) },
"singular": strmangle.Singular, "prefix": func(add string, str string) string { return fmt.Sprintf("%s%s", add, str) },
"plural": strmangle.Plural,
"titleCase": strmangle.TitleCase, // Pluralization
"titleCaseSingular": strmangle.TitleCaseSingular, "singular": strmangle.Singular,
"titleCasePlural": strmangle.TitleCasePlural, "plural": strmangle.Plural,
"titleCaseCommaList": strmangle.TitleCaseCommaList,
"camelCase": strmangle.CamelCase, // Casing
"camelCaseSingular": strmangle.CamelCaseSingular, "toLower": strings.ToLower,
"camelCasePlural": strmangle.CamelCasePlural, "toUpper": strings.ToUpper,
"camelCaseCommaList": strmangle.CamelCaseCommaList, "titleCase": strmangle.TitleCase,
"columnsToStrings": strmangle.ColumnsToStrings, "camelCase": strmangle.CamelCase,
"commaList": strmangle.CommaList,
"makeDBName": strmangle.MakeDBName, // String Slice ops
"selectParamNames": strmangle.SelectParamNames, "join": func(sep string, slice []string) string { return strings.Join(slice, sep) },
"insertParamNames": strmangle.InsertParamNames, "stringMap": strmangle.StringMap,
"insertParamFlags": strmangle.InsertParamFlags, "hasElement": strmangle.HasElement,
"insertParamVariables": strmangle.InsertParamVariables, "prefixStringSlice": strmangle.PrefixStringSlice,
"scanParamNames": strmangle.ScanParamNames,
"hasPrimaryKey": strmangle.HasPrimaryKey, // Database related mangling
"primaryKeyFuncSig": strmangle.PrimaryKeyFuncSig, "wherePrimaryKey": strmangle.WherePrimaryKey,
"wherePrimaryKey": strmangle.WherePrimaryKey,
"paramsPrimaryKey": strmangle.ParamsPrimaryKey, // dbdrivers ops
"primaryKeyFlagIndex": strmangle.PrimaryKeyFlagIndex, "driverUsesLastInsertID": strmangle.DriverUsesLastInsertID,
"updateParamNames": strmangle.UpdateParamNames,
"updateParamVariables": strmangle.UpdateParamVariables,
"supportsResultObject": strmangle.SupportsResultObject,
"filterColumnsByDefault": strmangle.FilterColumnsByDefault, "filterColumnsByDefault": strmangle.FilterColumnsByDefault,
"filterColumnsByAutoIncrement": strmangle.FilterColumnsByAutoIncrement, "filterColumnsByAutoIncrement": strmangle.FilterColumnsByAutoIncrement,
"autoIncPrimaryKey": strmangle.AutoIncPrimaryKey, "autoIncPrimaryKey": strmangle.AutoIncPrimaryKey,
"addID": strmangle.AddID, "primaryKeyFuncSig": strmangle.PrimaryKeyFuncSig,
"removeID": strmangle.RemoveID, "columnNames": strmangle.ColumnNames,
"makeDBName": strmangle.MakeDBName,
"randDBStruct": strmangle.RandDBStruct,
"randDBStructSlice": strmangle.RandDBStructSlice,
} }

View file

@ -1,4 +1,4 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
// {{$tableNameSingular}} is an object representing the database table. // {{$tableNameSingular}} is an object representing the database table.
type {{$tableNameSingular}} struct { type {{$tableNameSingular}} struct {

View file

@ -1,10 +1,10 @@
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
var ( var (
{{$varNameSingular}}Columns = []string{{"{"}}{{columnsToStrings .Table.Columns | commaList}}{{"}"}} {{$varNameSingular}}Columns = []string{{"{"}}{{.Table.Columns | columnNames | join ", "}}{{"}"}}
{{$varNameSingular}}ColumnsWithoutDefault = []string{{"{"}}{{filterColumnsByDefault .Table.Columns false}}{{"}"}} {{$varNameSingular}}ColumnsWithoutDefault = []string{{"{"}}{{filterColumnsByDefault .Table.Columns false}}{{"}"}}
{{$varNameSingular}}ColumnsWithDefault = []string{{"{"}}{{filterColumnsByDefault .Table.Columns true}}{{"}"}} {{$varNameSingular}}ColumnsWithDefault = []string{{"{"}}{{filterColumnsByDefault .Table.Columns true}}{{"}"}}
{{$varNameSingular}}PrimaryKeyColumns = []string{{"{"}}{{commaList .Table.PKey.Columns}}{{"}"}} {{$varNameSingular}}PrimaryKeyColumns = []string{{"{"}}{{.Table.PKey.Columns | join ", "}}{{"}"}}
{{$varNameSingular}}AutoIncrementColumns = []string{{"{"}}{{filterColumnsByAutoIncrement .Table.Columns}}{{"}"}} {{$varNameSingular}}AutoIncrementColumns = []string{{"{"}}{{filterColumnsByAutoIncrement .Table.Columns}}{{"}"}}
{{$varNameSingular}}AutoIncPrimaryKey = "{{autoIncPrimaryKey .Table.Columns .Table.PKey}}" {{$varNameSingular}}AutoIncPrimaryKey = "{{autoIncPrimaryKey .Table.Columns .Table.PKey}}"
) )

View file

@ -1,5 +1,5 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
var {{$varNameSingular}}BeforeCreateHooks []{{$tableNameSingular}}Hook var {{$varNameSingular}}BeforeCreateHooks []{{$tableNameSingular}}Hook
var {{$varNameSingular}}BeforeUpdateHooks []{{$tableNameSingular}}Hook var {{$varNameSingular}}BeforeUpdateHooks []{{$tableNameSingular}}Hook
var {{$varNameSingular}}AfterCreateHooks []{{$tableNameSingular}}Hook var {{$varNameSingular}}AfterCreateHooks []{{$tableNameSingular}}Hook

View file

@ -1,5 +1,5 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
// One returns a single {{$varNameSingular}} record from the query. // One returns a single {{$varNameSingular}} record from the query.
func (q {{$varNameSingular}}Query) One() (*{{$tableNameSingular}}, error) { func (q {{$varNameSingular}}Query) One() (*{{$tableNameSingular}}, error) {
o := &{{$tableNameSingular}}{} o := &{{$tableNameSingular}}{}

View file

@ -1,13 +1,13 @@
{{- if .Table.IsJoinTable -}} {{- if .Table.IsJoinTable -}}
{{- else -}} {{- else -}}
{{- $pkg := .PkgName -}} {{- $pkg := .PkgName -}}
{{- $localTable := titleCaseSingular .Table.Name -}} {{- $localTable := .Table.Name | singular | titleCase -}}
{{- range .Table.FKeys -}} {{- range .Table.FKeys -}}
{{- $localColumn := .Column | removeID | titleCaseSingular -}} {{- $localColumn := .Column | remove "_id" | singular | titleCase -}}
{{- $foreignColumn := .Column | removeID | titleCaseSingular -}} {{- $foreignColumn := .Column | remove "_id" | singular | titleCase -}}
{{- $foreignTable := titleCaseSingular .ForeignTable -}} {{- $foreignTable := .ForeignTable | singular | titleCase -}}
{{- $varname := camelCaseSingular .ForeignTable -}} {{- $varname := .ForeignTable | singular | camelCase -}}
{{- $receiver := $localTable | tolower | substring 0 1 -}} {{- $receiver := $localTable | toLower | substring 0 1 -}}
// {{$foreignColumn}} fetches the {{$foreignTable}} pointed to by the foreign key. // {{$foreignColumn}} fetches the {{$foreignTable}} pointed to by the foreign key.
func ({{$receiver}} *{{$localTable}}) {{$foreignColumn}}(exec boil.Executor, selectCols ...string) (*{{$foreignTable}}, error) { func ({{$receiver}} *{{$localTable}}) {{$foreignColumn}}(exec boil.Executor, selectCols ...string) (*{{$foreignTable}}, error) {
{{$varname}} := &{{$foreignTable}}{} {{$varname}} := &{{$foreignTable}}{}

View file

@ -1,6 +1,6 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $tableNamePlural := titleCasePlural .Table.Name -}} {{- $tableNamePlural := .Table.Name | plural | titleCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
// {{$tableNamePlural}}All retrieves all records. // {{$tableNamePlural}}All retrieves all records.
func {{$tableNamePlural}}(mods ...qm.QueryMod) {{$varNameSingular}}Query { func {{$tableNamePlural}}(mods ...qm.QueryMod) {{$varNameSingular}}Query {
return {{$tableNamePlural}}X(boil.GetDB(), mods...) return {{$tableNamePlural}}X(boil.GetDB(), mods...)

View file

@ -1,10 +1,9 @@
{{- if hasPrimaryKey .Table.PKey -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $tableNameSingular := titleCaseSingular .Table.Name -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
// {{$tableNameSingular}}Find retrieves a single record by ID. // {{$tableNameSingular}}Find retrieves a single record by ID.
func {{$tableNameSingular}}Find({{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, selectCols ...string) (*{{$tableNameSingular}}, error) { func {{$tableNameSingular}}Find({{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, selectCols ...string) (*{{$tableNameSingular}}, error) {
return {{$tableNameSingular}}FindX(boil.GetDB(), {{camelCaseCommaList "" .Table.PKey.Columns}}, selectCols...) return {{$tableNameSingular}}FindX(boil.GetDB(), {{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | join ", "}}, selectCols...)
} }
func {{$tableNameSingular}}FindX(exec boil.Executor, {{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, selectCols ...string) (*{{$tableNameSingular}}, error) { func {{$tableNameSingular}}FindX(exec boil.Executor, {{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, selectCols ...string) (*{{$tableNameSingular}}, error) {
@ -13,7 +12,7 @@ func {{$tableNameSingular}}FindX(exec boil.Executor, {{primaryKeyFuncSig .Table.
mods := []qm.QueryMod{ mods := []qm.QueryMod{
qm.Select(selectCols...), qm.Select(selectCols...),
qm.Table("{{.Table.Name}}"), qm.Table("{{.Table.Name}}"),
qm.Where("{{wherePrimaryKey .Table.PKey.Columns 1}}", {{camelCaseCommaList "" .Table.PKey.Columns}}), qm.Where("{{wherePrimaryKey .Table.PKey.Columns 1}}", {{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | join ", "}}),
} }
q := NewQueryX(exec, mods...) q := NewQueryX(exec, mods...)
@ -26,4 +25,3 @@ func {{$tableNameSingular}}FindX(exec boil.Executor, {{primaryKeyFuncSig .Table.
return {{$varNameSingular}}, nil return {{$varNameSingular}}, nil
} }
{{- end -}}

View file

@ -1,6 +1,5 @@
{{- if hasPrimaryKey .Table.PKey -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}}
// {{$tableNameSingular}}Insert inserts a single record. // {{$tableNameSingular}}Insert inserts a single record.
func (o *{{$tableNameSingular}}) Insert(whitelist ... string) error { func (o *{{$tableNameSingular}}) Insert(whitelist ... string) error {
return o.InsertX(boil.GetDB(), whitelist...) return o.InsertX(boil.GetDB(), whitelist...)
@ -31,7 +30,7 @@ func (o *{{$tableNameSingular}}) InsertX(exec boil.Executor, whitelist ... strin
ins := fmt.Sprintf(`INSERT INTO {{.Table.Name}} (%s) VALUES (%s)`, strings.Join(wl, ","), boil.GenerateParamFlags(len(wl), 1)) ins := fmt.Sprintf(`INSERT INTO {{.Table.Name}} (%s) VALUES (%s)`, strings.Join(wl, ","), boil.GenerateParamFlags(len(wl), 1))
{{if supportsResultObject .DriverName}} {{if driverUsesLastInsertID .DriverName}}
if len(returnColumns) != 0 { if len(returnColumns) != 0 {
result, err := exec.Exec(ins, boil.GetStructValues(o, wl...)...) result, err := exec.Exec(ins, boil.GetStructValues(o, wl...)...)
if err != nil { if err != nil {
@ -66,7 +65,7 @@ func (o *{{$tableNameSingular}}) InsertX(exec boil.Executor, whitelist ... strin
ins = ins + fmt.Sprintf(` RETURNING %s`, strings.Join(returnColumns, ",")) ins = ins + fmt.Sprintf(` RETURNING %s`, strings.Join(returnColumns, ","))
err = exec.QueryRow(ins, boil.GetStructValues(o, wl...)...).Scan(boil.GetStructPointers(o, returnColumns...)...) err = exec.QueryRow(ins, boil.GetStructValues(o, wl...)...).Scan(boil.GetStructPointers(o, returnColumns...)...)
} else { } else {
_, err = exec.Exec(ins, {{insertParamVariables "o." .Table.Columns}}) _, err = exec.Exec(ins, {{.Table.Columns | columnNames | prefixStringSlice "o." | join ", "}})
} }
{{end}} {{end}}
@ -84,4 +83,3 @@ func (o *{{$tableNameSingular}}) InsertX(exec boil.Executor, whitelist ... strin
return nil return nil
} }
{{- end -}}

View file

@ -1,6 +1,5 @@
{{if hasPrimaryKey .Table.PKey -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}}
// Update a single {{$tableNameSingular}} record. It takes a whitelist of // Update a single {{$tableNameSingular}} record. It takes a whitelist of
// column_name's that should be updated. The primary key will be used to find // column_name's that should be updated. The primary key will be used to find
// the record to update. // the record to update.
@ -11,11 +10,11 @@ func (o *{{$tableNameSingular}}) Update(whitelist ... string) error {
} }
func (o *{{$tableNameSingular}}) UpdateX(exec boil.Executor, whitelist ... string) error { func (o *{{$tableNameSingular}}) UpdateX(exec boil.Executor, whitelist ... string) error {
return o.UpdateAtX(exec, {{titleCaseCommaList "o." .Table.PKey.Columns}}, whitelist...) return o.UpdateAtX(exec, {{.Table.PKey.Columns | prefixStringSlice "o." | stringMap .StringFuncs.titleCase | join ", "}}, whitelist...)
} }
func (o *{{$tableNameSingular}}) UpdateAt({{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, whitelist ...string) error { func (o *{{$tableNameSingular}}) UpdateAt({{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, whitelist ...string) error {
return o.UpdateAtX(boil.GetDB(), {{camelCaseCommaList "" .Table.PKey.Columns}}, whitelist...) return o.UpdateAtX(boil.GetDB(), {{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | join ", "}}, whitelist...)
} }
func (o *{{$tableNameSingular}}) UpdateAtX(exec boil.Executor, {{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, whitelist ...string) error { func (o *{{$tableNameSingular}}) UpdateAtX(exec boil.Executor, {{primaryKeyFuncSig .Table.Columns .Table.PKey.Columns}}, whitelist ...string) error {
@ -37,8 +36,8 @@ func (o *{{$tableNameSingular}}) UpdateAtX(exec boil.Executor, {{primaryKeyFuncS
var err error var err error
var query string var query string
if len(whitelist) != 0 { if len(whitelist) != 0 {
query = fmt.Sprintf(`UPDATE {{.Table.Name}} SET %s WHERE %s`, boil.SetParamNames(whitelist), boil.WherePrimaryKey(len(whitelist)+1, {{commaList .Table.PKey.Columns}})) query = fmt.Sprintf(`UPDATE {{.Table.Name}} SET %s WHERE %s`, boil.SetParamNames(whitelist), boil.WherePrimaryKey(len(whitelist)+1, {{.Table.PKey.Columns | join ", "}}))
_, err = exec.Exec(query, boil.GetStructValues(o, whitelist...), {{paramsPrimaryKey "o." .Table.PKey.Columns true}}) _, err = exec.Exec(query, boil.GetStructValues(o, whitelist...), {{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | prefixStringSlice "o." | join ", "}})
} else { } else {
return fmt.Errorf("{{.PkgName}}: unable to update {{.Table.Name}}, could not build a whitelist for row: %s", err) return fmt.Errorf("{{.PkgName}}: unable to update {{.Table.Name}}, could not build a whitelist for row: %s", err)
} }
@ -68,4 +67,3 @@ func (q {{$varNameSingular}}Query) UpdateAll(cols M) error {
return nil return nil
} }
{{- end}}

View file

@ -1,6 +1,5 @@
{{if hasPrimaryKey .Table.PKey -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}}
// Delete deletes a single {{$tableNameSingular}} record. // Delete deletes a single {{$tableNameSingular}} record.
// Delete will match against the primary key column to find the record to delete. // Delete will match against the primary key column to find the record to delete.
func (o *{{$tableNameSingular}}) Delete() error { func (o *{{$tableNameSingular}}) Delete() error {
@ -20,7 +19,7 @@ func (o *{{$tableNameSingular}}) DeleteX(exec boil.Executor) error {
mods = append(mods, mods = append(mods,
qm.Table("{{.Table.Name}}"), qm.Table("{{.Table.Name}}"),
qm.Where("{{wherePrimaryKey .Table.PKey.Columns 1}}", {{paramsPrimaryKey "o." .Table.PKey.Columns true}}), qm.Where("{{wherePrimaryKey .Table.PKey.Columns 1}}", {{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | prefixStringSlice "o." | join ", "}}),
) )
query := NewQueryX(exec, mods...) query := NewQueryX(exec, mods...)
@ -64,7 +63,7 @@ func (o {{$varNameSingular}}Slice) DeleteAllX(exec boil.Executor) error {
var mods []qm.QueryMod var mods []qm.QueryMod
args := o.inPrimaryKeyArgs() args := o.inPrimaryKeyArgs()
in := boil.WherePrimaryKeyIn(len(o), {{commaList .Table.PKey.Columns}}) in := boil.WherePrimaryKeyIn(len(o), {{.Table.PKey.Columns | join ", "}})
mods = append(mods, mods = append(mods,
qm.Table("{{.Table.Name}}"), qm.Table("{{.Table.Name}}"),
@ -84,4 +83,3 @@ func (o {{$varNameSingular}}Slice) DeleteAllX(exec boil.Executor) error {
return nil return nil
} }
{{- end}}

View file

@ -1,6 +1,5 @@
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
{{- if hasPrimaryKey .Table.PKey -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $tableNameSingular := titleCaseSingular .Table.Name -}}
func (o {{$tableNameSingular}}) inPrimaryKeyArgs() []interface{} { func (o {{$tableNameSingular}}) inPrimaryKeyArgs() []interface{} {
var args []interface{} var args []interface{}
@ -22,4 +21,3 @@ func (o {{$varNameSingular}}Slice) inPrimaryKeyArgs() []interface{} {
return args return args
} }
{{- end}}

View file

@ -1,8 +1,8 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $tableNamePlural := titleCasePlural .Table.Name -}} {{- $tableNamePlural := .Table.Name | plural | titleCase -}}
{{- $varNamePlural := camelCasePlural .Table.Name -}} {{- $varNamePlural := .Table.Name | plural | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
func {{$varNameSingular}}CompareVals(o *{{$tableNameSingular}}, j *{{$tableNameSingular}}, t *testing.T) { func {{$varNameSingular}}CompareVals(o *{{$tableNameSingular}}, j *{{$tableNameSingular}}, t *testing.T) {
{{range $key, $value := .Table.Columns}} {{range $key, $value := .Table.Columns}}
{{if eq $value.Type "null.Time"}} {{if eq $value.Type "null.Time"}}

View file

@ -1,8 +1,8 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $tableNamePlural := titleCasePlural .Table.Name -}} {{- $tableNamePlural := .Table.Name | plural | titleCase -}}
{{- $varNamePlural := camelCasePlural .Table.Name -}} {{- $varNamePlural := .Table.Name | plural | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
func {{$varNamePlural}}DeleteAllRows(t *testing.T) { func {{$varNamePlural}}DeleteAllRows(t *testing.T) {
// Delete all rows to give a clean slate // Delete all rows to give a clean slate
err := {{$tableNamePlural}}().DeleteAll() err := {{$tableNamePlural}}().DeleteAll()

View file

@ -1,8 +1,8 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $tableNamePlural := titleCasePlural .Table.Name -}} {{- $tableNamePlural := .Table.Name | plural | titleCase -}}
{{- $varNamePlural := camelCasePlural .Table.Name -}} {{- $varNamePlural := .Table.Name | plural | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
func Test{{$tableNamePlural}}Find(t *testing.T) { func Test{{$tableNamePlural}}Find(t *testing.T) {
var err error var err error
@ -22,17 +22,15 @@ func Test{{$tableNamePlural}}Find(t *testing.T) {
j := make({{$varNameSingular}}Slice, 3) j := make({{$varNameSingular}}Slice, 3)
// Perform all Find queries and assign result objects to slice for comparison // Perform all Find queries and assign result objects to slice for comparison
for i := 0; i < len(j); i++ { for i := 0; i < len(j); i++ {
j[i], err = {{$tableNameSingular}}Find({{titleCaseCommaList "o[i]." .Table.PKey.Columns}}) j[i], err = {{$tableNameSingular}}Find({{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | prefixStringSlice "o[i]." | join ", "}})
{{$varNameSingular}}CompareVals(o[i], j[i], t) {{$varNameSingular}}CompareVals(o[i], j[i], t)
} }
{{if hasPrimaryKey .Table.PKey}} f, err := {{$tableNameSingular}}Find({{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | prefixStringSlice "o[0]." | join ", "}}, {{$varNameSingular}}PrimaryKeyColumns...)
f, err := {{$tableNameSingular}}Find({{titleCaseCommaList "o[0]." .Table.PKey.Columns}}, {{$varNameSingular}}PrimaryKeyColumns...)
{{range $key, $value := .Table.PKey.Columns}} {{range $key, $value := .Table.PKey.Columns}}
if o[0].{{titleCase $value}} != f.{{titleCase $value}} { if o[0].{{titleCase $value}} != f.{{titleCase $value}} {
t.Errorf("Expected primary key values to match, {{titleCase $value}} did not match") t.Errorf("Expected primary key values to match, {{titleCase $value}} did not match")
} }
{{end}}
colsWithoutPrimKeys := boil.SetComplement({{$varNameSingular}}Columns, {{$varNameSingular}}PrimaryKeyColumns) colsWithoutPrimKeys := boil.SetComplement({{$varNameSingular}}Columns, {{$varNameSingular}}PrimaryKeyColumns)
fRef := reflect.ValueOf(f).Elem() fRef := reflect.ValueOf(f).Elem()

View file

@ -1,8 +1,8 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $tableNamePlural := titleCasePlural .Table.Name -}} {{- $tableNamePlural := .Table.Name | plural | titleCase -}}
{{- $varNamePlural := camelCasePlural .Table.Name -}} {{- $varNamePlural := .Table.Name | plural | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
func Test{{$tableNamePlural}}Bind(t *testing.T) { func Test{{$tableNamePlural}}Bind(t *testing.T) {
var err error var err error
@ -19,7 +19,7 @@ func Test{{$tableNamePlural}}Bind(t *testing.T) {
j := {{$tableNameSingular}}{} j := {{$tableNameSingular}}{}
err = {{$tableNamePlural}}(qm.Where("{{wherePrimaryKey .Table.PKey.Columns 1}}", {{titleCaseCommaList "o." .Table.PKey.Columns}})).Bind(&j) err = {{$tableNamePlural}}(qm.Where("{{wherePrimaryKey .Table.PKey.Columns 1}}", {{.Table.PKey.Columns | stringMap .StringFuncs.camelCase | prefixStringSlice "o." | join ", "}})).Bind(&j)
if err != nil { if err != nil {
t.Errorf("Unable to call Bind on {{$tableNameSingular}} single object: %s", err) t.Errorf("Unable to call Bind on {{$tableNameSingular}} single object: %s", err)
} }
@ -47,7 +47,7 @@ func Test{{$tableNamePlural}}Bind(t *testing.T) {
if err != nil { if err != nil {
t.Errorf("Unable to call Bind on {{$tableNameSingular}} slice of objects: %s", err) t.Errorf("Unable to call Bind on {{$tableNameSingular}} slice of objects: %s", err)
} }
if len(k) != 3 { if len(k) != 3 {
t.Errorf("Expected 3 results, got %d", len(k)) t.Errorf("Expected 3 results, got %d", len(k))
} }

View file

@ -1,8 +1,8 @@
{{- $tableNameSingular := titleCaseSingular .Table.Name -}} {{- $tableNameSingular := .Table.Name | singular | titleCase -}}
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $tableNamePlural := titleCasePlural .Table.Name -}} {{- $tableNamePlural := .Table.Name | plural | titleCase -}}
{{- $varNamePlural := camelCasePlural .Table.Name -}} {{- $varNamePlural := .Table.Name | plural | camelCase -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := .Table.Name | singular | camelCase -}}
func Test{{$tableNamePlural}}InPrimaryKeyArgs(t *testing.T) { func Test{{$tableNamePlural}}InPrimaryKeyArgs(t *testing.T) {
var err error var err error
var o {{$tableNameSingular}} var o {{$tableNameSingular}}