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
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
|
|
}
|