keys/server/db.go
2025-03-26 21:12:35 +01:00

76 lines
1.4 KiB
Go

package main
import (
"fmt"
"os"
"time"
"github.com/google/uuid"
"github.com/labstack/gommon/log"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var db *gorm.DB
func ConnectDbFromEnv() {
dbHost := os.Getenv("DB_HOST")
if dbHost == "" {
log.Fatal("No DB_HOST")
}
dbPort := os.Getenv("DB_PORT")
if dbPort == "" {
log.Fatal("No DB_PORT")
}
dbName := os.Getenv("DB_NAME")
if dbName == "" {
log.Fatal("No DB_NAME")
}
dbUser := os.Getenv("DB_USER")
if dbUser == "" {
log.Fatal("No DB_USER")
}
dbPassword := os.Getenv("DB_PASSWORD")
if dbPassword == "" {
log.Fatal("No DB_PASSWORD")
}
dbSslMode := os.Getenv("DB_SSLMODE")
if dbSslMode == "" {
log.Fatal("No DB_SSLMODE")
}
dsn := fmt.Sprintf(
"host=%s port=%s user=%s password=%s dbname=%s sslmode=%s TimeZone=Europe/Bratislava",
dbHost,
dbPort,
dbUser,
dbPassword,
dbName,
dbSslMode,
)
var err error
db, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err == nil {
err2 := db.AutoMigrate(&Dummy{})
if err2 != nil {
fmt.Printf("db migration error: %v\n", err2)
}
}
if err != nil {
log.Fatal(err)
}
}
type Dummy struct {
ID uuid.UUID `gorm:"primaryKey;type:uuid;unique" json:"id"`
Connected bool `json:"connected"`
ConnectedAt time.Time `json:"connectedAt"`
DisconnectedAt time.Time `json:"disconnectedAt"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}