-- =============================================================================
-- 新闻中心多站点：为 f_news / f_news_category 增加 site_code
-- 执行前请备份数据库。可与 schema 增量部署，适合在 Gitea 发版后由运维一次性执行。
-- 固定站点编码示例：wuhansaga（主站）、saga-secondary（第二站点，可按品牌改名）
-- =============================================================================

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 新闻分类：站点维度的栏目互相独立（不同站点可有各自一套分类及排序）
ALTER TABLE f_news_category
  ADD COLUMN site_code VARCHAR(32) NOT NULL DEFAULT 'wuhansaga'
    COMMENT '站点编码：小写英文短码，如 wuhansaga、saga-secondary，扩展新站时仅增编码不改结构'
    AFTER category_id;

ALTER TABLE f_news_category
  ADD KEY idx_f_news_category_site (site_code, del_flag, is_published, sort_order);

-- 新闻正文：与分类 site_code 逻辑上一致；保存时业务侧校验 category 与 news 同属一站
ALTER TABLE f_news
  ADD COLUMN site_code VARCHAR(32) NOT NULL DEFAULT 'wuhansaga'
    COMMENT '站点编码，与 f_news_category.site_code 取值域一致'
    AFTER category_id;

ALTER TABLE f_news
  ADD KEY idx_f_news_site_list (site_code, del_flag, is_published, category_id),
  ADD KEY idx_f_news_site_time (site_code, del_flag, is_published, create_time);

-- 旧数据：全部归入主站（若第二站需相同栏目结构，可复制分类再批量改 site_code / 或导数据）
UPDATE f_news_category SET site_code = 'wuhansaga' WHERE site_code = '' OR site_code IS NULL;
UPDATE f_news SET site_code = 'wuhansaga' WHERE site_code = '' OR site_code IS NULL;

-- ---------------------------------------------------------------------------
-- 【可选】第二站点初始化分类骨架（与主站相同名称时仍需独立 category_id）
-- ---------------------------------------------------------------------------
-- INSERT INTO f_news_category (site_code, name_zh, name_en, sort_order, is_published)
-- SELECT 'saga-secondary', name_zh, name_en, sort_order, is_published
-- FROM f_news_category WHERE site_code = 'wuhansaga' AND del_flag = 0;
