-- 1. 创建足迹表
CREATE TABLE IF NOT EXISTS ml_user_footprints (
  id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
  user_id UUID NOT NULL DEFAULT auth.uid(),
  product_id UUID NOT NULL, -- 如果 ml_products 表存在，可以改为: product_id UUID NOT NULL REFERENCES ml_products(id) ON DELETE CASCADE
  created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  UNIQUE(user_id, product_id) -- 复合唯一索引，防止同一商品重复记录
);

-- 2. 添加表注释
COMMENT ON TABLE ml_user_footprints IS '用户浏览足迹表';
COMMENT ON COLUMN ml_user_footprints.user_id IS '用户ID';
COMMENT ON COLUMN ml_user_footprints.product_id IS '商品ID';
COMMENT ON COLUMN ml_user_footprints.updated_at IS '最后访问时间';

-- 3. 启用行级安全策略 (RLS)
ALTER TABLE ml_user_footprints ENABLE ROW LEVEL SECURITY;

-- 4. 添加安全策略 (增删改查仅限本人)
-- 查看策略
CREATE POLICY "Users can view their own footprints" 
  ON ml_user_footprints FOR SELECT 
  USING (auth.uid() = user_id);

-- 插入策略
CREATE POLICY "Users can insert their own footprints" 
  ON ml_user_footprints FOR INSERT 
  WITH CHECK (auth.uid() = user_id);

-- 更新策略
CREATE POLICY "Users can update their own footprints" 
  ON ml_user_footprints FOR UPDATE 
  USING (auth.uid() = user_id);

-- 删除策略
CREATE POLICY "Users can delete their own footprints" 
  ON ml_user_footprints FOR DELETE 
  USING (auth.uid() = user_id);

-- 5. 建立索引以优化查询速度
CREATE INDEX IF NOT EXISTS idx_footprints_user_updated 
  ON ml_user_footprints (user_id, updated_at DESC);
