go vendor
This commit is contained in:
80
vendor/github.com/revel/modules/orm/gorm/README.md
generated
vendored
Normal file
80
vendor/github.com/revel/modules/orm/gorm/README.md
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
modules/gorm
|
||||
===============
|
||||
|
||||
[Gorm](http://jinzhu.me/gorm) module
|
||||
|
||||
## Activation
|
||||
```ini
|
||||
module.gorm = github.com/revel/modules/orm/gorm
|
||||
```
|
||||
|
||||
## Drivers
|
||||
|
||||
* sqlite3
|
||||
* postgres
|
||||
* mysql
|
||||
|
||||
## Configuration file
|
||||
|
||||
```ini
|
||||
# Database config
|
||||
db.autoinit=true # default=true
|
||||
db.driver=sqlite # mysql, postgres, sqlite3
|
||||
db.host=localhost # Use db.host /tmp/app.db is your driver is sqlite
|
||||
db.user=dbuser
|
||||
db.name=dbname
|
||||
db.password=dbpassword
|
||||
|
||||
```
|
||||
|
||||
## Example usage with transactions
|
||||
```go
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/revel/revel"
|
||||
gormc "github.com/revel/modules/gorm/orm/app/controllers"
|
||||
)
|
||||
|
||||
type App struct {
|
||||
gormc.TxnController
|
||||
}
|
||||
|
||||
type Toy struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
func (c App) Index() revel.Result {
|
||||
c.Txn.LogMode(true)
|
||||
c.Txn.AutoMigrate(&Toy{})
|
||||
c.Txn.Save(&Toy{Name: "Fidget spinner"})
|
||||
|
||||
return c.Render()
|
||||
}
|
||||
```
|
||||
|
||||
## Example usage without transactions
|
||||
```go
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/revel/revel"
|
||||
gormc "github.com/revel/modules/gorm/orm/app/controllers"
|
||||
)
|
||||
|
||||
type App struct {
|
||||
gormc.Controller
|
||||
}
|
||||
|
||||
type Toy struct {
|
||||
Name string
|
||||
}
|
||||
|
||||
func (c App) Index() revel.Result {
|
||||
c.DB.LogMode(true)
|
||||
c.DB.AutoMigrate(&Toy{})
|
||||
c.DB.Save(&Toy{Name: "Fidget spinner"})
|
||||
|
||||
return c.Render()
|
||||
}
|
||||
```
|
||||
84
vendor/github.com/revel/modules/orm/gorm/app/controllers/gorm.go
generated
vendored
Normal file
84
vendor/github.com/revel/modules/orm/gorm/app/controllers/gorm.go
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
package gormcontroller
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
|
||||
"github.com/jinzhu/gorm"
|
||||
gormdb "github.com/revel/modules/orm/gorm/app"
|
||||
"github.com/revel/revel"
|
||||
)
|
||||
|
||||
// Controller is a Revel controller with a pointer to the opened database
|
||||
type Controller struct {
|
||||
*revel.Controller
|
||||
DB *gorm.DB
|
||||
}
|
||||
|
||||
func (c *Controller) setDB() revel.Result {
|
||||
c.DB = gormdb.DB
|
||||
return nil
|
||||
}
|
||||
|
||||
// TxnController is a Revel controller with database transaction support (begin, commit and rollback)
|
||||
type TxnController struct {
|
||||
*revel.Controller
|
||||
Txn *gorm.DB
|
||||
}
|
||||
|
||||
// Begin begins a DB transaction
|
||||
func (c *TxnController) Begin() revel.Result {
|
||||
|
||||
txn := gormdb.DB.Begin()
|
||||
if txn.Error != nil {
|
||||
c.Log.Panic("Transaction begine error","error",txn.Error)
|
||||
}
|
||||
|
||||
c.Txn = txn
|
||||
return nil
|
||||
}
|
||||
|
||||
// Commit commits the database transation
|
||||
func (c *TxnController) Commit() revel.Result {
|
||||
if c.Txn == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
c.Txn.Commit()
|
||||
if c.Txn.Error != nil && c.Txn.Error != sql.ErrTxDone {
|
||||
fmt.Println(c.Txn.Error)
|
||||
panic(c.Txn.Error)
|
||||
}
|
||||
|
||||
c.Txn = nil
|
||||
return nil
|
||||
}
|
||||
|
||||
// Rollback rolls back the transaction (eg. after a panic)
|
||||
func (c *TxnController) Rollback() revel.Result {
|
||||
if c.Txn == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
c.Txn.Rollback()
|
||||
if c.Txn.Error != nil && c.Txn.Error != sql.ErrTxDone {
|
||||
fmt.Println(c.Txn.Error)
|
||||
panic(c.Txn.Error)
|
||||
}
|
||||
|
||||
c.Txn = nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func init() {
|
||||
revel.OnAppStart(func() {
|
||||
if revel.Config.BoolDefault("db.autoinit", true) {
|
||||
gormdb.InitDB()
|
||||
revel.InterceptMethod((*TxnController).Begin, revel.BEFORE)
|
||||
revel.InterceptMethod((*TxnController).Commit, revel.AFTER)
|
||||
revel.InterceptMethod((*TxnController).Rollback, revel.FINALLY)
|
||||
|
||||
revel.InterceptMethod((*Controller).setDB, revel.BEFORE)
|
||||
}
|
||||
})
|
||||
}
|
||||
72
vendor/github.com/revel/modules/orm/gorm/app/gorm.go
generated
vendored
Normal file
72
vendor/github.com/revel/modules/orm/gorm/app/gorm.go
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
package gormdb
|
||||
|
||||
// # Database config
|
||||
// db.driver=sqlite3 # mysql, postgres, sqlite3
|
||||
// db.host=localhost # Use dbhost /tmp/app.db is your driver is sqlite
|
||||
// db.user=dbuser
|
||||
// db.name=dbname
|
||||
// db.password=dbpassword
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/mysql" // mysql package
|
||||
_ "github.com/jinzhu/gorm/dialects/postgres" // postgres package
|
||||
_ "github.com/jinzhu/gorm/dialects/sqlite" // mysql package
|
||||
"github.com/revel/revel"
|
||||
)
|
||||
// DB Gorm
|
||||
var (
|
||||
DB *gorm.DB
|
||||
gormLog = revel.AppLog
|
||||
)
|
||||
func init() {
|
||||
revel.RegisterModuleInit(func(m *revel.Module){
|
||||
gormLog = m.Log
|
||||
})
|
||||
}
|
||||
|
||||
// InitDB database
|
||||
func OpenDB(dbDriver string, dbInfo string) {
|
||||
db, err := gorm.Open(dbDriver, dbInfo)
|
||||
if err != nil {
|
||||
gormLog.Fatal("sql.Open failed", "error", err)
|
||||
}
|
||||
DB = db
|
||||
}
|
||||
|
||||
type DbInfo struct {
|
||||
DbDriver string
|
||||
DbHost string
|
||||
DbUser string
|
||||
DbPassword string
|
||||
DbName string
|
||||
}
|
||||
|
||||
func InitDBWithParameters(params DbInfo) {
|
||||
dbInfo := ""
|
||||
switch params.DbDriver {
|
||||
default:
|
||||
dbInfo = fmt.Sprintf(params.DbHost)
|
||||
case "postgres":
|
||||
dbInfo = fmt.Sprintf("host=%s user=%s dbname=%s sslmode=disable password=%s", params.DbHost, params.DbUser, params.DbName, params.DbPassword)
|
||||
case "mysql":
|
||||
dbInfo = fmt.Sprintf("%s:%s@%s/%s?charset=utf8&parseTime=True&loc=Local", params.DbUser, params.DbPassword, params.DbHost, params.DbName)
|
||||
}
|
||||
OpenDB(params.DbDriver, dbInfo)
|
||||
|
||||
}
|
||||
|
||||
func InitDB() {
|
||||
params := DbInfo{}
|
||||
params.DbDriver = revel.Config.StringDefault("db.driver", "sqlite3")
|
||||
params.DbHost = revel.Config.StringDefault("db.host", "localhost")
|
||||
if params.DbDriver == "sqlite3" && params.DbHost == "localhost" {
|
||||
params.DbHost = "/tmp/app.db"
|
||||
}
|
||||
params.DbUser = revel.Config.StringDefault("db.user", "default")
|
||||
params.DbPassword = revel.Config.StringDefault("db.password", "")
|
||||
params.DbName = revel.Config.StringDefault("db.name", "default")
|
||||
|
||||
InitDBWithParameters(params)
|
||||
}
|
||||
3
vendor/github.com/revel/modules/orm/gorm/gorm.go
generated
vendored
Normal file
3
vendor/github.com/revel/modules/orm/gorm/gorm.go
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
package gorm
|
||||
|
||||
// Required for vendoring see golang.org/issue/13832
|
||||
Reference in New Issue
Block a user