56 lines
954 B
Go
56 lines
954 B
Go
package models
|
|
|
|
import (
|
|
"github.com/thermokarst/bactdb/Godeps/_workspace/src/github.com/jmoiron/modl"
|
|
"github.com/thermokarst/bactdb/types"
|
|
)
|
|
|
|
type base interface {
|
|
PreInsert(modl.SqlExecutor) error
|
|
PreUpdate(modl.SqlExecutor) error
|
|
UpdateError() error
|
|
DeleteError() error
|
|
validate() types.ValidationError
|
|
}
|
|
|
|
// Create will create a new DB record of a model.
|
|
func Create(b base) error {
|
|
if err := b.validate(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := DBH.Insert(b); err != nil {
|
|
return nil
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// Update runs a DB update on a model.
|
|
func Update(b base) error {
|
|
if err := b.validate(); err != nil {
|
|
return err
|
|
}
|
|
|
|
count, err := DBH.Update(b)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if count != 1 {
|
|
return b.UpdateError()
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// Delete runs a DB delete on a model.
|
|
func Delete(b base) error {
|
|
count, err := DBH.Delete(b)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if count != 1 {
|
|
return b.DeleteError()
|
|
}
|
|
|
|
return nil
|
|
}
|