import { BaseSchema } from '@adonisjs/lucid/schema'

/**
 * Mode démo sur les organisations.
 *
 *  - `demo_mode` : flag activé/désactivé. Quand true, les services
 *    time-sensitive (relances, check-ins, KPIs dashboard) lisent
 *    `virtual_now` au lieu de `Date.now()`. Les emails sont capturés
 *    dans la table demo_captured_emails au lieu d'être envoyés via
 *    Resend.
 *
 *  - `virtual_now` : horloge virtuelle. Permet d'avancer le temps
 *    pendant une démo (1 jour démo ≈ 800 ms en réel par défaut).
 *    Null = on ne touche à rien (= comportement prod normal).
 *
 *  - `demo_speed_factor` : multiplicateur d'accélération côté UI.
 *    Stocké côté serveur pour la persistance entre sessions, mais
 *    le tick reste piloté par le client.
 *
 * Tous les champs sont à `null`/`false` par défaut → zéro impact sur
 * les organisations existantes (cf. priorité produit : la prod est
 * intacte tant que demo_mode reste off).
 */
export default class extends BaseSchema {
  protected tableName = 'organizations'

  async up() {
    this.schema.alterTable(this.tableName, (table) => {
      table.boolean('demo_mode').notNullable().defaultTo(false)
      table.timestamp('virtual_now', { useTz: true }).nullable()
      table.smallint('demo_speed_factor').notNullable().defaultTo(1)
    })
  }

  async down() {
    this.schema.alterTable(this.tableName, (table) => {
      table.dropColumn('demo_mode')
      table.dropColumn('virtual_now')
      table.dropColumn('demo_speed_factor')
    })
  }
}
