-- Repairs a live installation where the lodge_settings table is missing.
-- Safe to run when the table does not exist; it does not alter bookings or meetings.

CREATE TABLE IF NOT EXISTS lodge_settings (
  id TINYINT UNSIGNED NOT NULL PRIMARY KEY DEFAULT 1,
  lodge_name VARCHAR(150) NOT NULL,
  lodge_number VARCHAR(30) NOT NULL,
  lodge_short_name VARCHAR(100) NULL,
  order_name VARCHAR(150) NULL,
  province_name VARCHAR(200) NULL,
  lodge_logo_url TEXT NULL,
  lodge_honours_logo_url TEXT NULL,
  province_logo_url TEXT NULL,
  order_logo_url TEXT NULL,
  companion_order_logo_url TEXT NULL,
  charity_logo_url TEXT NULL,
  primary_colour VARCHAR(7) NOT NULL DEFAULT '#990033',
  secondary_colour VARCHAR(7) NOT NULL DEFAULT '#122849',
  accent_colour VARCHAR(7) NOT NULL DEFAULT '#C7A646',
  background_colour VARCHAR(7) NOT NULL DEFAULT '#F7F1E3',
  panel_colour VARCHAR(7) NOT NULL DEFAULT '#FFFDFA',
  text_colour VARCHAR(7) NOT NULL DEFAULT '#27231E',
  heading_font VARCHAR(120) NOT NULL DEFAULT 'Georgia, serif',
  body_font VARCHAR(120) NOT NULL DEFAULT 'system-ui, sans-serif',
  browser_title VARCHAR(200) NULL,
  favicon_url TEXT NULL,
  secretary_email VARCHAR(254) NULL,
  treasurer_email VARCHAR(254) NULL,
  dining_steward_email VARCHAR(254) NULL,
  general_email VARCHAR(254) NULL,
  provincial_website_url TEXT NULL,
  provincial_website_label VARCHAR(150) NULL,
  order_website_url TEXT NULL,
  order_website_label VARCHAR(150) NULL,
  book_of_constitutions_url TEXT NULL,
  bylaws_url TEXT NULL,
  timezone VARCHAR(80) NOT NULL DEFAULT 'Europe/London',
  currency_code CHAR(3) NOT NULL DEFAULT 'GBP',
  retention_meetings INT UNSIGNED NOT NULL DEFAULT 4,
  updated_by BIGINT UNSIGNED NULL,
  updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_lodge_settings_user
    FOREIGN KEY (updated_by) REFERENCES users(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Create the single settings row using the current meeting's Lodge identity.
INSERT INTO lodge_settings (
  id,
  lodge_name,
  lodge_number,
  lodge_short_name,
  order_name,
  province_name
)
SELECT
  1,
  lodge_name,
  lodge_number,
  CONCAT(lodge_name, ' ', lodge_number),
  'Mark Master Masons',
  ''
FROM meetings
ORDER BY id
LIMIT 1
ON DUPLICATE KEY UPDATE id = VALUES(id);
