heating-monitor/internal/config/db.go

49 lines
1.1 KiB
Go
Raw Permalink Normal View History

2024-11-28 13:52:58 +01:00
package config
import (
"heating-monitor/internal/bot"
"log"
"os"
"path/filepath"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
var DB *gorm.DB
func InitDB() {
// Crear directorio 'data' si no existe
dbDir := "data"
if _, err := os.Stat(dbDir); os.IsNotExist(err) {
err := os.Mkdir(dbDir, 0755)
if err != nil {
log.Fatalf("Error creando el directorio %s: %v", dbDir, err)
}
}
// Ruta de la base de datos
dbPath := filepath.Join(dbDir, "heating.db")
// Conectar con SQLite
var err error
DB, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
if err != nil {
log.Fatal("Error al conectar con la base de datos:", err)
}
log.Println("Base de datos inicializada en", dbPath)
// Migrar el modelo HeatingEvent
if err := DB.AutoMigrate(&bot.HeatingEvent{}); err != nil {
log.Fatalf("Error al migrar el modelo HeatingEvent: %v", err)
}
// Verificar que la base de datos está abierta correctamente
if DB != nil {
log.Println("Conexión a la base de datos establecida correctamente.")
} else {
log.Fatal("La conexión a la base de datos es nula.")
}
}