sqlboiler/cmds/templates/update.tpl

37 lines
1.6 KiB
Smarty
Raw Normal View History

2016-03-23 07:18:41 +01:00
{{- $tableNameSingular := titleCaseSingular .Table.Name -}}
2016-04-04 12:28:58 +02:00
{{if hasPrimaryKey .Table.PKey -}}
2016-03-19 07:22:10 +01:00
// Update updates a single {{$tableNameSingular}} record.
// whitelist is a list of column_name's that should be updated.
2016-03-19 07:22:10 +01:00
// Update will match against the primary key column to find the record to update.
// WARNING: This Update method will NOT ignore nil members.
// If you pass in nil members, those columnns will be set to null.
func (o *{{$tableNameSingular}}) UpdateX(db Executor, whitelist ... string) error {
if err := o.doBeforeUpdateHooks(); err != nil {
return err
}
2016-04-04 12:28:58 +02:00
{{$flagIndex := primaryKeyFlagIndex .Table.Columns .Table.PKey.Columns}}
var err error
if len(whitelist) == 0 {
_, err = db.Exec("UPDATE {{.Table.Name}} SET {{updateParamNames .Table.Columns .Table.PKey.Columns}} WHERE {{wherePrimaryKey .Table.PKey.Columns $flagIndex}}", {{updateParamVariables "o." .Table.Columns .Table.PKey.Columns}}, {{paramsPrimaryKey "o." .Table.PKey.Columns true}})
} else {
query := fmt.Sprintf(`UPDATE {{.Table.Name}} SET %s WHERE %s`, boil.SetParamNames(whitelist), WherePrimaryKey(len(whitelist)+1, {{commaList .Table.PKey.Columns}}))
_, err = db.Exec(query, {{updateParamVariables "o." .Table.Columns .Table.PKey.Columns}}, {{paramsPrimaryKey "o." .Table.PKey.Columns true}})
}
2016-03-19 07:22:10 +01:00
if err != nil {
2016-04-04 12:28:58 +02:00
return fmt.Errorf("{{.PkgName}}: unable to update {{.Table.Name}} row: %s", err)
2016-03-19 07:22:10 +01:00
}
if err := o.doAfterUpdateHooks(); err != nil {
return err
}
2016-03-19 07:22:10 +01:00
return nil
}
func (o *{{$tableNameSingular}}) Update(whitelist ... string) error {
return o.UpdateX(boil.GetDB(), whitelist...)
}
2016-03-19 07:22:10 +01:00
{{- end}}