Calorie counting web application written in the Go language

database.go 1.4KB

    package controllers import ( "database/sql" "github.com/coopernurse/gorp" _ "github.com/mattn/go-sqlite3" "github.com/revel/revel" "github.com/revel/revel/modules/db/app" "github.com/revolvingcow/grassfed/app/models" ) var ( DbMap *gorp.DbMap ) func Initialize() { db.Init() DbMap = &gorp.DbMap{ Db: db.Db, Dialect: gorp.SqliteDialect{} } DbMap.AddTable(models.Account{}).SetKeys(true, "Id") DbMap.AddTable(models.History{}).SetKeys(true, "Id") DbMap.AddTable(models.Goal{}).SetKeys(true, "Id") DbMap.AddTable(models.Weight{}).SetKeys(true, "Id") DbMap.TraceOn("[db]", revel.INFO) DbMap.CreateTablesIfNotExists() } type DatabaseController struct { *revel.Controller Transaction *gorp.Transaction } func (c *DatabaseController) Begin() revel.Result { transaction, err := DbMap.Begin() if err != nil { panic(err) } c.Transaction = transaction return nil } func (c *DatabaseController) Commit() revel.Result { if c.Transaction == nil { return nil } if err := c.Transaction.Commit(); err != nil && err != sql.ErrTxDone { panic(err) } c.Transaction = nil return nil } func (c *DatabaseController) Rollback() revel.Result { if c.Transaction == nil { return nil } if err := c.Transaction.Rollback(); err != nil && err != sql.ErrTxDone { panic(err) } c.Transaction = nil return nil }