109 lines
2.3 KiB
Go
109 lines
2.3 KiB
Go
package database
|
|
|
|
import (
|
|
"api/config"
|
|
"api/models"
|
|
"api/utils"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/joho/godotenv"
|
|
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Our database
|
|
var DB *gorm.DB
|
|
|
|
// ConnectDB - returns a pointer to a new database connection
|
|
func ConnectDB() error {
|
|
var erre error
|
|
|
|
log.Println("Getting environment values")
|
|
erre = godotenv.Load()
|
|
if erre != nil {
|
|
log.Printf("Error getting env, not comming through %v\n", erre)
|
|
return erre
|
|
}
|
|
|
|
driver := config.Configurations.Data.DB_DRIVER
|
|
user := config.Configurations.Data.DB_USER
|
|
password := config.Configurations.Data.DB_PASSWORD
|
|
host := config.Configurations.Data.DB_HOST
|
|
dbport := config.Configurations.Data.DB_PORT
|
|
dbname := config.Configurations.Data.DB_NAME
|
|
|
|
DBURL := fmt.Sprintf("%s://%s:%s@%s:%d/%s", driver, user, password, host, dbport, dbname)
|
|
|
|
log.Println("Opening connection to database")
|
|
|
|
db, err := gorm.Open(postgres.Open(DBURL), &gorm.Config{})
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Println("Migrating database tables")
|
|
|
|
if result := db.AutoMigrate(&models.User{}); result != nil {
|
|
return result
|
|
}
|
|
|
|
if result := db.AutoMigrate(&models.Event{}); result != nil {
|
|
return result
|
|
}
|
|
|
|
if result := db.AutoMigrate(&models.Server{}); result != nil {
|
|
return result
|
|
}
|
|
|
|
if result := db.AutoMigrate(&models.Transaction{}); result != nil {
|
|
return result
|
|
}
|
|
|
|
// Count how many servers we have on the database. If none, creates our initial server.
|
|
var servers []models.Server
|
|
|
|
db.Find(&servers)
|
|
|
|
if len(servers) == 0 {
|
|
server := models.Server{
|
|
Name: "Pcast Main Server",
|
|
Subdomain: "s1",
|
|
IP: "177.153.50.98",
|
|
}
|
|
|
|
db.Create(&server)
|
|
}
|
|
|
|
// Count how many users we have on the database. If none, creates our initial admin user.
|
|
var users []models.User
|
|
|
|
db.Find(&users)
|
|
|
|
if len(users) == 0 {
|
|
passwd, _ := utils.HashPassword("123456")
|
|
|
|
user := models.User{
|
|
Name: "Pcast Admin",
|
|
Email: "pcastlive@pcastlive.com",
|
|
CompanyName: "PCast",
|
|
Password: passwd,
|
|
Url: "https://pcastlive.com",
|
|
CpfCnpj: "49.083.957/0001-38",
|
|
Channel: "pcastlive",
|
|
UserType: "A",
|
|
Blocked: "N",
|
|
Cancelled: "N",
|
|
ServerId: 1,
|
|
}
|
|
|
|
db.Create(&user)
|
|
}
|
|
|
|
DB = db
|
|
|
|
return nil
|
|
}
|