40 lines
982 B
Go
40 lines
982 B
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/fossyy/filekeeper/logger"
|
|
"github.com/fossyy/filekeeper/utils"
|
|
"gorm.io/driver/mysql"
|
|
_ "gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
gormLogger "gorm.io/gorm/logger"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
var DB *gorm.DB
|
|
|
|
var log *logger.AggregatedLogger
|
|
|
|
func init() {
|
|
var err error
|
|
connection := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", utils.Getenv("DB_USERNAME"), utils.Getenv("DB_PASSWORD"), utils.Getenv("DB_HOST"), utils.Getenv("DB_PORT"), utils.Getenv("DB_NAME"))
|
|
DB, err = gorm.Open(mysql.Open(connection), &gorm.Config{}, &gorm.Config{
|
|
Logger: gormLogger.Default.LogMode(gormLogger.Silent),
|
|
})
|
|
if err != nil {
|
|
panic("failed to connect database")
|
|
}
|
|
file, err := os.ReadFile("schema.sql")
|
|
if err != nil {
|
|
log.Error("Error opening file: %v", err)
|
|
}
|
|
querys := strings.Split(string(file), "\n")
|
|
for _, query := range querys {
|
|
err := DB.Exec(query).Error
|
|
if err != nil {
|
|
panic(err.Error())
|
|
}
|
|
}
|
|
}
|