package config import ( "fmt" "time" "github.com/gofiber/session/v2" "gorm.io/driver/sqlite" "gorm.io/gorm" ) type SessionConfig struct { Database string `yaml:"database" env:"SESSION_DATABASE"` // Ruta de la base de datos SQLite *session.Session } func (s *SessionConfig) Setup() error { // Abrir conexión a la base de datos SQLite db, err := gorm.Open(sqlite.Open(s.Database), &gorm.Config{}) if err != nil { return fmt.Errorf("failed to connect to the database: %v", err) } // Migrar la estructura de la tabla para sesiones err = db.AutoMigrate(&Session{}) // Define la estructura de la sesión según sea necesario if err != nil { return fmt.Errorf("failed to migrate database: %v", err) } // Configurar el proveedor de sesiones en memoria store := session.New(session.Config{ Expiration: 365 * 24 * time.Hour, // 1 año }) // Usar el proveedor de sesiones en memoria // Crear una nueva sesión s.Session = store return nil } // Estructura para las sesiones (ajusta según tus necesidades) type Session struct { ID uint `gorm:"primaryKey"` SessionID string `gorm:"unique"` Data string `gorm:"type:text"` CreatedAt time.Time UpdatedAt time.Time ExpireAt time.Time }