48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
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() // 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
|
|
}
|