This commit is contained in:
4
migrations/000135_create_export_task_tables.down.sql
Normal file
4
migrations/000135_create_export_task_tables.down.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
-- 回滚:删除统一导出任务相关表
|
||||
|
||||
DROP TABLE IF EXISTS tb_export_shard_task;
|
||||
DROP TABLE IF EXISTS tb_export_task;
|
||||
149
migrations/000135_create_export_task_tables.up.sql
Normal file
149
migrations/000135_create_export_task_tables.up.sql
Normal file
@@ -0,0 +1,149 @@
|
||||
-- 创建统一导出主任务表与分片任务表
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tb_export_task (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP,
|
||||
|
||||
creator BIGINT NOT NULL DEFAULT 0,
|
||||
updater BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
task_no VARCHAR(50) NOT NULL,
|
||||
scene VARCHAR(50) NOT NULL,
|
||||
format VARCHAR(20) NOT NULL,
|
||||
status INT NOT NULL DEFAULT 1,
|
||||
progress INT NOT NULL DEFAULT 0,
|
||||
|
||||
total_rows INT NOT NULL DEFAULT 0,
|
||||
processed_rows INT NOT NULL DEFAULT 0,
|
||||
total_shards INT NOT NULL DEFAULT 0,
|
||||
success_shards INT NOT NULL DEFAULT 0,
|
||||
failed_shards INT NOT NULL DEFAULT 0,
|
||||
|
||||
cancel_requested BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
|
||||
query_json JSONB NOT NULL DEFAULT '{}'::jsonb,
|
||||
scope_shop_ids JSONB NOT NULL DEFAULT '[]'::jsonb,
|
||||
|
||||
creator_user_id BIGINT NOT NULL,
|
||||
creator_user_type INT NOT NULL,
|
||||
creator_shop_id BIGINT,
|
||||
creator_enterprise_id BIGINT,
|
||||
|
||||
file_key VARCHAR(500) NOT NULL DEFAULT '',
|
||||
file_size BIGINT NOT NULL DEFAULT 0,
|
||||
error_message TEXT,
|
||||
|
||||
started_at TIMESTAMP,
|
||||
completed_at TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS tb_export_shard_task (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP,
|
||||
|
||||
creator BIGINT NOT NULL DEFAULT 0,
|
||||
updater BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
task_id BIGINT NOT NULL,
|
||||
shard_no INT NOT NULL,
|
||||
status INT NOT NULL DEFAULT 1,
|
||||
|
||||
cursor_start BIGINT NOT NULL DEFAULT 0,
|
||||
cursor_end BIGINT NOT NULL DEFAULT 0,
|
||||
|
||||
row_count INT NOT NULL DEFAULT 0,
|
||||
processed_rows INT NOT NULL DEFAULT 0,
|
||||
|
||||
file_key VARCHAR(500) NOT NULL DEFAULT '',
|
||||
file_size BIGINT NOT NULL DEFAULT 0,
|
||||
error_message TEXT,
|
||||
|
||||
started_at TIMESTAMP,
|
||||
completed_at TIMESTAMP
|
||||
);
|
||||
|
||||
-- 主任务索引
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_export_task_no
|
||||
ON tb_export_task(task_no)
|
||||
WHERE deleted_at IS NULL;
|
||||
CREATE INDEX IF NOT EXISTS idx_export_task_scene_status_created_at
|
||||
ON tb_export_task(scene, status, created_at DESC);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_task_creator_user_id
|
||||
ON tb_export_task(creator_user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_task_creator_shop_id
|
||||
ON tb_export_task(creator_shop_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_task_creator_enterprise_id
|
||||
ON tb_export_task(creator_enterprise_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_task_cancel_requested
|
||||
ON tb_export_task(cancel_requested);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_task_deleted_at
|
||||
ON tb_export_task(deleted_at);
|
||||
|
||||
-- 分片任务索引
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_export_shard_task_task_shard_no
|
||||
ON tb_export_shard_task(task_id, shard_no)
|
||||
WHERE deleted_at IS NULL;
|
||||
CREATE INDEX IF NOT EXISTS idx_export_shard_task_task_status
|
||||
ON tb_export_shard_task(task_id, status);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_shard_task_deleted_at
|
||||
ON tb_export_shard_task(deleted_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_export_shard_task_created_at
|
||||
ON tb_export_shard_task(created_at DESC);
|
||||
|
||||
-- 表注释
|
||||
COMMENT ON TABLE tb_export_task IS '统一导出主任务表';
|
||||
COMMENT ON TABLE tb_export_shard_task IS '统一导出分片任务表';
|
||||
|
||||
-- 主任务字段注释
|
||||
COMMENT ON COLUMN tb_export_task.id IS '主键ID';
|
||||
COMMENT ON COLUMN tb_export_task.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN tb_export_task.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN tb_export_task.deleted_at IS '删除时间(软删除)';
|
||||
COMMENT ON COLUMN tb_export_task.creator IS '创建人ID';
|
||||
COMMENT ON COLUMN tb_export_task.updater IS '更新人ID';
|
||||
COMMENT ON COLUMN tb_export_task.task_no IS '任务编号(EXP-YYYYMMDD-XXXXXX)';
|
||||
COMMENT ON COLUMN tb_export_task.scene IS '导出场景(device/iot_card)';
|
||||
COMMENT ON COLUMN tb_export_task.format IS '导出格式(xlsx/csv)';
|
||||
COMMENT ON COLUMN tb_export_task.status IS '任务状态 1-待处理 2-处理中 3-已完成 4-已失败 5-已取消';
|
||||
COMMENT ON COLUMN tb_export_task.progress IS '任务进度(0-100)';
|
||||
COMMENT ON COLUMN tb_export_task.total_rows IS '总行数';
|
||||
COMMENT ON COLUMN tb_export_task.processed_rows IS '已处理行数';
|
||||
COMMENT ON COLUMN tb_export_task.total_shards IS '总分片数';
|
||||
COMMENT ON COLUMN tb_export_task.success_shards IS '成功分片数';
|
||||
COMMENT ON COLUMN tb_export_task.failed_shards IS '失败分片数';
|
||||
COMMENT ON COLUMN tb_export_task.cancel_requested IS '是否请求取消';
|
||||
COMMENT ON COLUMN tb_export_task.query_json IS '导出查询参数(JSON)';
|
||||
COMMENT ON COLUMN tb_export_task.scope_shop_ids IS '导出时的数据权限店铺范围快照';
|
||||
COMMENT ON COLUMN tb_export_task.creator_user_id IS '创建人用户ID';
|
||||
COMMENT ON COLUMN tb_export_task.creator_user_type IS '创建人用户类型 2-平台 3-代理 4-企业';
|
||||
COMMENT ON COLUMN tb_export_task.creator_shop_id IS '创建人店铺ID快照';
|
||||
COMMENT ON COLUMN tb_export_task.creator_enterprise_id IS '创建人企业ID快照';
|
||||
COMMENT ON COLUMN tb_export_task.file_key IS '最终产物文件Key';
|
||||
COMMENT ON COLUMN tb_export_task.file_size IS '最终产物文件大小(字节)';
|
||||
COMMENT ON COLUMN tb_export_task.error_message IS '错误信息';
|
||||
COMMENT ON COLUMN tb_export_task.started_at IS '开始处理时间';
|
||||
COMMENT ON COLUMN tb_export_task.completed_at IS '完成时间';
|
||||
|
||||
-- 分片任务字段注释
|
||||
COMMENT ON COLUMN tb_export_shard_task.id IS '主键ID';
|
||||
COMMENT ON COLUMN tb_export_shard_task.created_at IS '创建时间';
|
||||
COMMENT ON COLUMN tb_export_shard_task.updated_at IS '更新时间';
|
||||
COMMENT ON COLUMN tb_export_shard_task.deleted_at IS '删除时间(软删除)';
|
||||
COMMENT ON COLUMN tb_export_shard_task.creator IS '创建人ID';
|
||||
COMMENT ON COLUMN tb_export_shard_task.updater IS '更新人ID';
|
||||
COMMENT ON COLUMN tb_export_shard_task.task_id IS '主任务ID';
|
||||
COMMENT ON COLUMN tb_export_shard_task.shard_no IS '分片序号(从1开始)';
|
||||
COMMENT ON COLUMN tb_export_shard_task.status IS '分片状态 1-待处理 2-处理中 3-已成功 4-已失败 5-已取消';
|
||||
COMMENT ON COLUMN tb_export_shard_task.cursor_start IS '分片游标起点(不含)';
|
||||
COMMENT ON COLUMN tb_export_shard_task.cursor_end IS '分片游标终点(含)';
|
||||
COMMENT ON COLUMN tb_export_shard_task.row_count IS '分片行数';
|
||||
COMMENT ON COLUMN tb_export_shard_task.processed_rows IS '分片已处理行数';
|
||||
COMMENT ON COLUMN tb_export_shard_task.file_key IS '分片产物文件Key';
|
||||
COMMENT ON COLUMN tb_export_shard_task.file_size IS '分片产物文件大小(字节)';
|
||||
COMMENT ON COLUMN tb_export_shard_task.error_message IS '分片错误信息';
|
||||
COMMENT ON COLUMN tb_export_shard_task.started_at IS '开始处理时间';
|
||||
COMMENT ON COLUMN tb_export_shard_task.completed_at IS '完成时间';
|
||||
Reference in New Issue
Block a user