go vendor

This commit is contained in:
lealife
2017-11-30 19:55:33 +08:00
parent 2856da6888
commit 0fb92efbf3
670 changed files with 199010 additions and 0 deletions

80
vendor/github.com/revel/modules/orm/gorm/README.md generated vendored Normal file
View 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()
}
```

View 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
View 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
View File

@@ -0,0 +1,3 @@
package gorm
// Required for vendoring see golang.org/issue/13832