<?php
declare(strict_types=1);

/**
 * 建立 fate.spa_store_snapshots（欄位正規化版；須與 sql/install.sql 一致）。
 */
function fate_spa_store_snapshots_create_ddl(): string
{
    return <<<'SQL'
CREATE TABLE IF NOT EXISTS `spa_store_snapshots` (
  `spa_store_id` INT UNSIGNED NOT NULL COMMENT 'spa_stores.id 或 manual 自增 id',
  `synced_at` DATETIME NOT NULL COMMENT '本站最後寫入時間',
  `source_data_as_of_unix` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'API meta.data_as_of_unix',
  `source_data_as_of_iso` VARCHAR(40) NULL DEFAULT NULL COMMENT 'API meta.data_as_of_iso',
  `meta_store_updated_at` VARCHAR(64) NULL DEFAULT NULL,
  `meta_place_last_updated` VARCHAR(64) NULL DEFAULT NULL,
  `google_reviews_source` VARCHAR(32) NULL DEFAULT NULL COMMENT 'place_data / google_reviews_table',
  `google_reviews_count` INT UNSIGNED NOT NULL DEFAULT 0,
  `google_reviews_table_rows` INT UNSIGNED NULL DEFAULT NULL,
  `google_reviews_table_max_id` BIGINT UNSIGNED NULL DEFAULT NULL,
  `store_name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '店面名稱',
  `display_address` TEXT NULL COMMENT '組合或格式化地址',
  `city_name` VARCHAR(120) NULL DEFAULT NULL,
  `district_name` VARCHAR(120) NULL DEFAULT NULL,
  `street_address` VARCHAR(512) NULL DEFAULT NULL,
  `place_formatted_address` TEXT NULL DEFAULT NULL,
  `google_place_id` VARCHAR(255) NULL DEFAULT NULL,
  `google_map_location` VARCHAR(255) NULL DEFAULT NULL,
  `latitude` DECIMAL(10,7) NULL DEFAULT NULL,
  `longitude` DECIMAL(10,7) NULL DEFAULT NULL,
  `place_rating` DECIMAL(4,2) NULL DEFAULT NULL,
  `place_ratings_total` INT UNSIGNED NULL DEFAULT NULL,
  `phone` VARCHAR(80) NULL DEFAULT NULL,
  `mobile` VARCHAR(80) NULL DEFAULT NULL,
  `line` VARCHAR(255) NULL DEFAULT NULL,
  `line_id` VARCHAR(255) NULL DEFAULT NULL,
  `wechat` VARCHAR(255) NULL DEFAULT NULL,
  `wechat_id` VARCHAR(255) NULL DEFAULT NULL,
  `telegram_contact` VARCHAR(255) NULL DEFAULT NULL,
  `tiktok_contact` VARCHAR(255) NULL DEFAULT NULL,
  `email` VARCHAR(255) NULL DEFAULT NULL,
  `website` VARCHAR(512) NULL DEFAULT NULL,
  `facebook` VARCHAR(512) NULL DEFAULT NULL,
  `cover_photo_path` VARCHAR(512) NULL DEFAULT NULL,
  `photos_json` MEDIUMTEXT NULL COMMENT 'API photos[] JSON',
  `place_opening_hours_raw` MEDIUMTEXT NULL,
  `business_hours_json` TEXT NULL COMMENT 'business_hours 結構 JSON',
  `business_hours_start` VARCHAR(64) NULL DEFAULT NULL,
  `business_hours_end` VARCHAR(64) NULL DEFAULT NULL,
  `business_type` VARCHAR(128) NULL DEFAULT NULL,
  `appointment_required` VARCHAR(64) NULL DEFAULT NULL,
  `parking` VARCHAR(255) NULL DEFAULT NULL,
  `payment_method` VARCHAR(255) NULL DEFAULT NULL,
  `spa_type` VARCHAR(128) NULL DEFAULT NULL,
  `basic_charge` DECIMAL(12,2) NULL DEFAULT NULL,
  `prev_store_id` INT UNSIGNED NULL DEFAULT NULL,
  `next_store_id` INT UNSIGNED NULL DEFAULT NULL,
  `public_detail_url_path` VARCHAR(255) NULL DEFAULT NULL,
  `payload_json` LONGTEXT NULL COMMENT '選填：完整 meta+store JSON 或 manual listing_kind',
  `source_type` VARCHAR(20) NOT NULL DEFAULT 'api' COMMENT 'api / manual',
  `is_approved` TINYINT NOT NULL DEFAULT 1 COMMENT 'manual 推薦店家審核',
  `created_member_id` INT UNSIGNED NULL DEFAULT NULL COMMENT 'manual 推薦人',
  PRIMARY KEY (`spa_store_id`),
  KEY `idx_source_ts` (`source_data_as_of_unix`),
  KEY `idx_synced` (`synced_at`),
  KEY `idx_store_name` (`store_name`(128)),
  KEY `idx_city` (`city_name`),
  KEY `idx_is_approved` (`is_approved`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
SQL;
}
