49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
|
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.")
|
||
|
}
|
||
|
}
|