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