Gr1N/revel-gorm

View on GitHub
app/db.go

Summary

Maintainability
A
0 mins
Test Coverage
package app

import (
    "github.com/jinzhu/gorm"

    "github.com/revel/revel"
)

var (
    DB *gorm.DB
)

func InitDB() *gorm.DB {
    var (
        driver string
        spec   string
        found  bool
    )

    // Read configuration
    if driver, found = revel.Config.String("db.driver"); !found {
        revel.ERROR.Fatal("No db.driver found.")
    }
    if spec, found = revel.Config.String("db.spec"); !found {
        revel.ERROR.Fatal("No db.spec found.")
    }

    maxIdleConns := revel.Config.IntDefault("db.max_idle_conns", 10)
    maxOpenConns := revel.Config.IntDefault("db.max_open_conns", 100)
    singularTable := revel.Config.BoolDefault("db.singular_table", false)
    logMode := revel.Config.BoolDefault("db.log_mode", false)

    // Initialize `gorm`
    dbm, err := gorm.Open(driver, spec)
    if err != nil {
        revel.ERROR.Fatal(err)
    }

    DB = dbm

    dbm.DB().Ping()
    dbm.DB().SetMaxIdleConns(maxIdleConns)
    dbm.DB().SetMaxOpenConns(maxOpenConns)
    dbm.SingularTable(singularTable)
    dbm.LogMode(logMode)
    dbm.SetLogger(gorm.Logger{revel.INFO})

    return dbm
}