|
- package database
-
- import (
- "database/sql"
- "errors"
- "fmt"
- "os"
-
- _ "github.com/go-sql-driver/mysql"
- )
-
- type (
- DB struct {
- *sql.DB
- }
- Tx struct {
- *sql.Tx
- }
- )
-
- func Open() (*DB, error) {
- // Get database configuration
- dbUser := os.Getenv("DB_USER")
- dbPassword := os.Getenv("DB_PASSWORD")
- dbName := os.Getenv("DB_DB")
- dbHost := os.Getenv("DB_HOST")
-
- if dbUser == "" || dbPassword == "" {
- return nil, errors.New("Database user or password not set.")
- }
- if dbHost == "" {
- dbHost = "localhost"
- }
- if dbName == "" {
- dbName = "burnermail"
- }
-
- db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?charset=utf8mb4&parseTime=true", dbUser, dbPassword, dbHost, dbName))
- if err != nil {
- return nil, err
- }
- db.SetMaxOpenConns(250)
-
- return &DB{db}, nil
- }
|