Skip to content

Persistencia y Repositorios

Para evitar que la lógica de base de datos se mezcle con la lógica de negocio, Streamlyra utiliza el Patrón Repository. Esto nos permite cambiar Sequelize por otro ORM o base de datos en el futuro sin tocar los servicios.

Capa de Repositorios (src/repositories/)

1. UserRepository.ts

Gestiona todas las operaciones relacionadas con la entidad de Usuario.

  • Búsqueda por ID o Username: Métodos rápidos para recuperar perfiles.
  • Actualización de Perfil: Sincroniza la imagen y el nombre del usuario desde las plataformas sociales.
  • Tokens de Overlay: Generación y verificación de tokens únicos para el acceso de OBS.

2. ConnectionRepository.ts

Es el repositorio más complejo del sistema, encargado de las redes sociales vinculadas.

  • Caché Inteligente: Implementa un historial en memoria de los tokens desencriptados por 5 minutos para maximizar el rendimiento.
  • Gestión de Sesiones OAuth: Guarda, refresca y elimina los tokens de acceso de Twitch, YouTube, Kick y TikTok.
  • Auto-migración: Si detecta un token guardado en formato antiguo (sin encriptar), lo cifra automáticamente al leerlo para cumplir con los estándares de seguridad actuales.

Modelos y Entidades (src/models/)

Utilizamos Sequelize-Typescript para definir nuestras tablas. Las clases decoradas sirven tanto como esquema de base de datos como definiciones de tipo para el código.

  • User: Perfil central del streamer.
  • Connection: Vinculaciones con redes sociales.
  • UserAnalytics: Almacena datos históricos como el último seguidor o raid (con expiración automática de 7 días).
  • YouTubeQuota: Controla el gasto diario de la API de Google.
  • TwitchWebhook: Gestiona el estado y secretos de las suscripciones a EventSub.

Liberado bajo la Licencia MIT.