-- 为categories表添加parent_id字段以支持二级分类
ALTER TABLE public.categories
ADD COLUMN parent_id uuid REFERENCES public.categories(id) ON DELETE CASCADE;

-- 添加索引以提高查询性能
CREATE INDEX idx_categories_parent_id ON public.categories(parent_id);

-- 添加约束确保分类层级不超过2级（只允许一级和二级）
CREATE OR REPLACE FUNCTION check_category_depth()
RETURNS TRIGGER AS $$
BEGIN
  -- 如果新记录有parent_id，检查父分类是否已经是二级分类
  IF NEW.parent_id IS NOT NULL THEN
    -- 检查父分类是否也有parent_id（即父分类是二级分类）
    IF EXISTS (
      SELECT 1 FROM public.categories 
      WHERE id = NEW.parent_id AND parent_id IS NOT NULL
    ) THEN
      RAISE EXCEPTION '分类层级不能超过2级';
    END IF;
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 创建触发器
CREATE TRIGGER check_category_depth_trigger
BEFORE INSERT OR UPDATE ON public.categories
FOR EACH ROW
EXECUTE FUNCTION check_category_depth();