-- 为 positions 表添加唯一约束
-- 这样 ON CONFLICT 才能正常工作

-- 1. 先删除现有的重复数据（如果有）
WITH duplicates AS (
    SELECT id,
           ROW_NUMBER() OVER (
               PARTITION BY body_id, time
               ORDER BY created_at DESC
           ) as rn
    FROM positions
)
DELETE FROM positions
WHERE id IN (
    SELECT id FROM duplicates WHERE rn > 1
);

-- 2. 添加唯一约束
ALTER TABLE positions
ADD CONSTRAINT positions_body_time_unique
UNIQUE (body_id, time);

-- 3. 验证约束已创建
SELECT constraint_name, constraint_type
FROM information_schema.table_constraints
WHERE table_name = 'positions'
AND constraint_type = 'UNIQUE';
