Skip to content

Instantly share code, notes, and snippets.

@n0m4dz
Created January 27, 2017 13:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save n0m4dz/5e6d788ff3d82312e3bd10ec048ff326 to your computer and use it in GitHub Desktop.
Save n0m4dz/5e6d788ff3d82312e3bd10ec048ff326 to your computer and use it in GitHub Desktop.
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
"github.com/gocraft/dbr"
)
const (
mysqlDSN = "interop:interop@tcp(localhost:3306)/interop2016"
)
type DoorMeta struct {
Id int64 `db:"id"`
Name string `db:"name"`
Value string `db: "value"`
CreatedAt dbr.NullTime `db: "created_at"`
}
func main() {
var result sql.Result
var err error
// Open connection
conn, _ := dbr.Open("mysql", mysqlDSN, nil)
// Create session
sess := conn.NewSession(nil)
// Insert
result, err = sess.InsertInto("door_meta").
Columns("name", "value").
Values("foo2", "bar").
Exec()
if err != nil {
log.Fatal(err)
} else {
count, _ := result.RowsAffected()
fmt.Println(count)
}
// Insert with struct
meta := &DoorMeta{Name: "foofoo", Value: "barbar"}
sess.InsertInto("door_meta").
Columns("name", "value").
Record(meta). // Watch out! this is not Values
Exec()
// Select
var m []DoorMeta
sess.Select("*").From("door_meta").Load(&m)
fmt.Println(m)
// Update
result, err = sess.Update("door_meta").
Set("name", "giwa").
Where("name = ?", "foo").
Exec()
if err != nil {
log.Fatal(err)
} else {
count, _ := result.RowsAffected()
fmt.Println(count)
}
fmt.Println(m[0].CreatedAt.Time)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment