You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.2 KiB
Go

package config
import (
"database/sql"
"errors"
"fmt"
"log"
"os"
)
func Database() *sql.DB {
logger, _ := thoth.Init("log")
user, exist := os.LookupEnv("DB_USER")
if !exist {
logger.Log(errors.New("DB_USER not set in .env"))
log.Fatal("DB_USER not set in .env")
}
pass, exist := os.LookupEnv("DB_PASS")
if !exist {
logger.Log(errors.New("DB_PASS not set in .env"))
log.Fatal("DB_PASS not set in .env")
}
host, exist := os.LookupEnv("DB_HOST")
if !exist {
logger.Log(errors.New("DB_HOST not set in .env"))
log.Fatal("DB_HOST not set in .env")
}
credentials := fmt.Sprintf("%s:%s@(%s:3306)/?charset=utf8&parseTime=True", user, pass, host)
database, err := sql.Open("mysql", credentials)
if err != nil {
logger.Log(err)
log.Fatal(err)
} else {
fmt.Println("Database Connection Successful")
}
_, err = database.Exec(`CREATE DATABASE gotodo`)
if err != nil {
fmt.Println(err)
}
_, err = database.Exec(`USE gotodo`)
if err != nil {
fmt.Println(err)
}
_, err = database.Exec(`
CREATE TABLE todos (
id INT AUTO_INCREMENT,
item TEXT NOT NULL,
completed BOOLEAN DEFAULT FALSE,
PRIMARY KEY (id)
);
`)
if err != nil {
fmt.Println(err)
}
return database
}