CREATE TABLE IF NOT EXISTS contact (
  id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  form_type ENUM('contact', 'wholesale') NOT NULL,
  full_name VARCHAR(120) NOT NULL,
  email VARCHAR(254) NOT NULL,
  phone VARCHAR(40) NULL,
  country VARCHAR(100) NULL,
  city VARCHAR(100) NULL,
  enquiry_type VARCHAR(80) NOT NULL,
  product_of_interest VARCHAR(160) NULL,
  order_number VARCHAR(100) NULL,
  company_name VARCHAR(160) NULL,
  preferred_contact_method ENUM('Email', 'Phone')
    NOT NULL DEFAULT 'Email',
  message TEXT NOT NULL,
  privacy_consent TINYINT(1) NOT NULL DEFAULT 1,
  utm_source VARCHAR(255) NULL,
  utm_medium VARCHAR(255) NULL,
  utm_campaign VARCHAR(255) NULL,
  utm_content VARCHAR(255) NULL,
  lead_source_url TEXT NULL,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,

  PRIMARY KEY (id),
  INDEX idx_created_at (created_at),
  INDEX idx_form_type (form_type),
  INDEX idx_email (email)
) ENGINE=InnoDB
  DEFAULT CHARSET=utf8mb4
  COLLATE=utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS api_rate_limits (
  client_hash CHAR(64) NOT NULL,
  window_started_at DATETIME NOT NULL,
  attempts SMALLINT UNSIGNED NOT NULL DEFAULT 1,

  PRIMARY KEY (client_hash),
  INDEX idx_rate_window (window_started_at)
) ENGINE=InnoDB
  DEFAULT CHARSET=ascii
  COLLATE=ascii_bin;