Saltar al contenido principal

Stored Procedures

Raft usa SQL Server como núcleo persistente. Los adjuntos muestran dos cosas:

  • el esquema completo vive en scripts SQL versionados;
  • y el backend invoca procedimientos concretos en lugar de reescribir la lógica en C#.

Convención de nombres

ObjetoPrefijoEjemplo
Stored Procedure SQL Serverusp_usp_DatabaseInstances_SoftDelete
Viewvw_vw_UserDashboard
Functionfn_fn_CalculateStorageUsedMB

Scripts relevantes

Los archivos más importantes que aparecieron en los adjuntos son:

  • Database/sql-server-schema.md
  • Database/Scripts/init-dns-tables-and-sps.sql
  • Database/Scripts/add_ai_usage_logs_table_and_sps.sql
  • Database/Scripts/update_profile_and_organization.sql
  • Database/Scripts/update_profile_full_migration.sql
  • Database/Scripts/usp_Users_ResetPasswordDirect.sql
  • Database/migration_n8n_persistence.sql

Procedimientos y vistas clave documentados en los adjuntos

ObjetoUsoEstado
usp_Users_GetSharedSqlServerProvisioningStateDevuelve el login compartido y el estado de provisión para un usuarioActivo en la lógica de ciclo de vida
usp_DatabaseInstances_SoftDeleteMarca una base como Orphaned y libera permisosActivo en la lógica de ciclo de vida
usp_DatabaseInstances_GetDueForPauseDetecta bases activas con 7 días de inactividadActivo en la lógica de ciclo de vida
usp_DatabaseInstances_GetDueForOrphanDetecta bases pausadas listas para pasar a OrphanedActivo en la lógica de ciclo de vida
usp_DatabaseInstances_GetDueForDeleteDetecta bases Orphaned listas para purga físicaActivo en la lógica de ciclo de vida
vw_UserDashboardAlimenta el dashboard del usuario con estados activos y pausadosActiva
usp_DnsRecords_*Capa SQL para la gestión de registros DNSReferenciada por la célula DNS
usp_N8n* / N8nAccounts SPsPersistencia y trazabilidad de aprovisionamiento N8NReferenciada por la célula N8N

Reglas obligatorias

  • No concatenar SQL dinámico con strings.
  • Usar parámetros tipados siempre que exista entrada de usuario.
  • Validar cuotas, TTL y conexiones antes de cambiar el estado de una base.
  • Dejar el trabajo diferido a jobs o workers, no al request HTTP.

Plantilla de documentación

Cuando se documente un nuevo procedimiento:

usp_NombreDelProcedimiento

  • Propósito: qué resuelve.
  • Llamado desde: qué endpoint o servicio lo invoca.
  • Parámetros: tabla con nombre, tipo y obligatoriedad.
  • Retorno: result set, output params o código.
  • Reglas: validaciones y límites.
  • Errores: THROW o RAISERROR que el backend debe interpretar.

Ejemplo

EXEC usp_DatabaseInstances_GetDueForPause
@InactivityDays = 7;