-- 创建任务列表表
-- 用于存储需要开发的任务列表

CREATE TABLE IF NOT EXISTS public.task_list (
    task_id SERIAL PRIMARY KEY,
    task_name VARCHAR(255) NOT NULL,
    task_description TEXT NOT NULL,
    status VARCHAR(20) NOT NULL DEFAULT 'pending',
    code_name VARCHAR(255),
    code_path VARCHAR(500),
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
    create_by VARCHAR(100) NOT NULL
);

-- 添加表注释
COMMENT ON TABLE public.task_list IS '任务列表表，用于存储需要开发的任务信息';
COMMENT ON COLUMN public.task_list.task_id IS '任务ID，主键，自增';
COMMENT ON COLUMN public.task_list.task_name IS '任务名称';
COMMENT ON COLUMN public.task_list.task_description IS '任务描述，markdown格式';
COMMENT ON COLUMN public.task_list.status IS '任务状态：pending(待处理), processing(处理中), completed(已完成), failed(失败)';
COMMENT ON COLUMN public.task_list.code_name IS '生成的代码文件名';
COMMENT ON COLUMN public.task_list.code_path IS '代码文件路径';
COMMENT ON COLUMN public.task_list.create_time IS '创建时间';
COMMENT ON COLUMN public.task_list.update_time IS '更新时间';
COMMENT ON COLUMN public.task_list.create_by IS '创建者';

-- 创建索引以提高查询性能
CREATE INDEX IF NOT EXISTS idx_task_list_status ON public.task_list(status);
CREATE INDEX IF NOT EXISTS idx_task_list_create_time ON public.task_list(create_time);

-- 创建更新时间自动更新的触发器函数
CREATE OR REPLACE FUNCTION update_task_list_update_time()
RETURNS TRIGGER AS $$
BEGIN
    NEW.update_time = CURRENT_TIMESTAMP;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 创建触发器
DROP TRIGGER IF EXISTS trigger_update_task_list_time ON public.task_list;
CREATE TRIGGER trigger_update_task_list_time
    BEFORE UPDATE ON public.task_list
    FOR EACH ROW
    EXECUTE FUNCTION update_task_list_update_time();

