Fixed quotating bug for primary keys

This commit is contained in:
Patrick O'brien 2016-04-24 15:33:05 +10:00
parent 9c493810ec
commit ba8793ec1a
6 changed files with 39 additions and 26 deletions

View file

@ -9,6 +9,11 @@ func (q *Query) Bind(obj interface{}) error {
return nil return nil
} }
func getStructPointers(obj interface{}, columns ...string) []interface{} {
return nil
}
func checkType(obj interface{}) (reflect.Type, bool, error) { func checkType(obj interface{}) (reflect.Type, bool, error) {
val := reflect.ValueOf(obj) val := reflect.ValueOf(obj)
typ := val.Type() typ := val.Type()

View file

@ -22,7 +22,6 @@ func generateOutput(cmdData *CmdData, data *tplData) error {
if len(cmdData.Templates) == 0 { if len(cmdData.Templates) == 0 {
return errors.New("No template files located for generation") return errors.New("No template files located for generation")
} }
var out [][]byte var out [][]byte
var imps imports var imps imports

View file

@ -222,11 +222,15 @@ func hasPrimaryKey(pKey *dbdrivers.PrimaryKey) bool {
// For example, if start was 2 output would be: "colthing=$2 AND colstuff=$3" // For example, if start was 2 output would be: "colthing=$2 AND colstuff=$3"
func wherePrimaryKey(pkeyCols []string, start int) string { func wherePrimaryKey(pkeyCols []string, start int) string {
var output string var output string
for i, c := range pkeyCols {
cols := make([]string, len(pkeyCols))
copy(cols, pkeyCols)
for i, c := range cols {
output = fmt.Sprintf("%s%s=$%d", output, c, start) output = fmt.Sprintf("%s%s=$%d", output, c, start)
start++ start++
if i < len(pkeyCols)-1 { if i < len(cols)-1 {
output = fmt.Sprintf("%s AND ", output) output = fmt.Sprintf("%s AND ", output)
} }
} }
@ -237,11 +241,14 @@ func wherePrimaryKey(pkeyCols []string, start int) string {
// primaryKeyStrList returns a list of primary key column names in strings // primaryKeyStrList returns a list of primary key column names in strings
// For example: "col1", "col2", "col3" // For example: "col1", "col2", "col3"
func primaryKeyStrList(pkeyCols []string) string { func primaryKeyStrList(pkeyCols []string) string {
for i, c := range pkeyCols { cols := make([]string, len(pkeyCols))
pkeyCols[i] = fmt.Sprintf(`"%s"`, c) copy(cols, pkeyCols)
for i, c := range cols {
cols[i] = fmt.Sprintf(`"%s"`, c)
} }
return strings.Join(pkeyCols, ", ") return strings.Join(cols, ", ")
} }
// commaList returns a comma seperated list: "col1, col2, col3" // commaList returns a comma seperated list: "col1, col2, col3"

View file

@ -2,27 +2,28 @@
{{- $dbName := singular .Table.Name -}} {{- $dbName := singular .Table.Name -}}
{{- $varNameSingular := camelCaseSingular .Table.Name -}} {{- $varNameSingular := camelCaseSingular .Table.Name -}}
// {{$tableNameSingular}}Find retrieves a single record by ID. // {{$tableNameSingular}}Find retrieves a single record by ID.
func {{$tableNameSingular}}Find(id int64, selectList ...string) (*{{$tableNameSingular}}, error) { func {{$tableNameSingular}}Find(id int64, columns ...string) (*{{$tableNameSingular}}, error) {
return {{$tableNameSingular}}FindX(boil.GetDB(), id, columns...)
}
func {{$tableNameSingular}}FindX(exec boil.Executor, id int64, columns ...string) (*{{$tableNameSingular}}, error) {
if id == 0 { if id == 0 {
return nil, errors.New("{{.PkgName}}: no id provided for {{.Table.Name}} select") return nil, errors.New("{{.PkgName}}: no id provided for {{.Table.Name}} select")
} }
var {{$varNameSingular}} *{{$tableNameSingular}}
err := boil.GetDB().Select(&{{$varNameSingular}}, `SELECT {{selectParamNames $dbName .Table.Columns}} WHERE id=$1`, id)
if err != nil {
return nil, fmt.Errorf("{{.PkgName}}: unable to select from {{.Table.Name}}: %s", err)
}
return {{$varNameSingular}}, nil
}
func {{$tableNameSingular}}FindX(exec boil.Executor, id int64, selectList ...string) (*{{$tableNameSingular}}, error) {
if id == 0 {
return nil, errors.New("{{.PkgName}}: no id provided for {{.Table.Name}} select")
}
var {{$varNameSingular}} *{{$tableNameSingular}}
//err := boil.GetDB().Select(&{{$varNameSingular}}, `SELECT {{selectParamNames $dbName .Table.Columns}} WHERE id=$1`, id)
var {{$varNameSingular}} *{{$tableNameSingular}}
mods := []qs.QueryMod{
qs.Select(columns...),
qs.From("{{.Table.Name}}"),
qs.Where("id=$1", id),
}
q := NewQueryX(exec, mods...)
err := boil.ExecQueryOne(q).Scan(
)
//GetStructPointers({{$varNameSingular}}, columnsthings)
if err != nil { if err != nil {
return nil, fmt.Errorf("{{.PkgName}}: unable to select from {{.Table.Name}}: %s", err) return nil, fmt.Errorf("{{.PkgName}}: unable to select from {{.Table.Name}}: %s", err)
} }

View file

@ -3,13 +3,13 @@
type {{$tableNameSingular}}Slice []*{{$tableNameSingular}} type {{$tableNameSingular}}Slice []*{{$tableNameSingular}}
func ({{$varNameSingular}}Query) One() (*{{$tableNameSingular}}, error) { func ({{$varNameSingular}}Query) One() (*{{$tableNameSingular}}, error) {
return nil, nil
} }
func ({{$varNameSingular}}Query) All() ({{$tableNameSingular}}Slice, error) { func ({{$varNameSingular}}Query) All() ({{$tableNameSingular}}Slice, error) {
return nil, nil
} }
func ({{$varNameSingular}}Query) Count() (int64, error) { func ({{$varNameSingular}}Query) Count() (int64, error) {
return 0, nil
} }

View file

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
// Import the postgres driver // Import the postgres driver
_ "github.com/lib/pq" _ "github.com/lib/pq"
) )