-- =====================================================================================
-- Schema: 内容管理模块核心表
-- 位置：docs/sql/10_schema/cms/ml_cms_tables_v1.sql
-- 对象类型：Schema (DDL)
-- 版本：v1
-- 说明：包含文章分类及文章主表定义
-- =====================================================================================

-- 1. 文章分类表
CREATE TABLE IF NOT EXISTS public.ml_article_categories (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  icon TEXT NULL,
  sort INTEGER NOT NULL DEFAULT 0,
  status SMALLINT NOT NULL DEFAULT 1, -- 1: 启用, 0: 禁用
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 唯一性约束
CREATE UNIQUE INDEX IF NOT EXISTS ml_article_categories_name_uniq ON public.ml_article_categories (name);

-- 2. 文章主表
CREATE TABLE IF NOT EXISTS public.ml_articles (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  category_id UUID NOT NULL REFERENCES public.ml_article_categories(id),
  
  title TEXT NOT NULL,
  author TEXT NULL,
  image TEXT NULL,                -- 文章封面图
  description TEXT NULL,          -- 文章简介
  content TEXT NOT NULL,          -- 文章内容 (富文本)
  
  status SMALLINT NOT NULL DEFAULT 0, -- 0: 未发布, 1: 已发布
  views INTEGER NOT NULL DEFAULT 0,   -- 浏览量
  
  is_banner BOOLEAN NOT NULL DEFAULT FALSE, -- 是否展示在 banner
  is_hot BOOLEAN NOT NULL DEFAULT FALSE,    -- 是否热门
  
  linked_product_id UUID NULL,    -- 关联商品ID (可选)
  
  created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

-- 常用查询索引
CREATE INDEX IF NOT EXISTS ml_articles_category_id_idx ON public.ml_articles (category_id);
CREATE INDEX IF NOT EXISTS ml_articles_status_idx ON public.ml_articles (status);
CREATE INDEX IF NOT EXISTS ml_articles_created_at_idx ON public.ml_articles (created_at DESC);
