128 lines
5.2 KiB
SQL
128 lines
5.2 KiB
SQL
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
CREATE DATABASE IF NOT EXISTS hyapp_activity DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
USE hyapp_activity;
|
|
|
|
CREATE TABLE IF NOT EXISTS activities (
|
|
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu',
|
|
activity_id VARCHAR(96) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (app_code, activity_id),
|
|
KEY idx_activities_status (app_code, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS activity_event_consumption (
|
|
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu',
|
|
event_id VARCHAR(96) NOT NULL,
|
|
event_type VARCHAR(96) NOT NULL,
|
|
source VARCHAR(64) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
failure_reason VARCHAR(255) NULL,
|
|
consumed_at_ms BIGINT NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (app_code, event_id),
|
|
KEY idx_activity_event_consumption_status (app_code, status),
|
|
KEY idx_activity_event_consumption_updated_at (app_code, updated_at_ms)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS activity_outbox (
|
|
app_code VARCHAR(32) NOT NULL DEFAULT 'lalu',
|
|
outbox_id VARCHAR(96) NOT NULL,
|
|
event_type VARCHAR(96) NOT NULL,
|
|
payload BLOB NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
retry_count INT NOT NULL DEFAULT 0,
|
|
next_retry_at_ms BIGINT NOT NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (app_code, outbox_id),
|
|
KEY idx_activity_outbox_status_retry (app_code, status, next_retry_at_ms)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS message_templates (
|
|
app_code VARCHAR(32) NOT NULL,
|
|
template_id VARCHAR(96) NOT NULL,
|
|
template_version VARCHAR(64) NOT NULL,
|
|
message_type VARCHAR(32) NOT NULL,
|
|
locale VARCHAR(32) NOT NULL DEFAULT '',
|
|
title VARCHAR(160) NOT NULL,
|
|
summary VARCHAR(512) NOT NULL,
|
|
body VARCHAR(2048) NOT NULL DEFAULT '',
|
|
icon_url VARCHAR(512) NOT NULL DEFAULT '',
|
|
image_url VARCHAR(512) NOT NULL DEFAULT '',
|
|
action_type VARCHAR(64) NOT NULL DEFAULT '',
|
|
action_param VARCHAR(1024) NOT NULL DEFAULT '',
|
|
status VARCHAR(32) NOT NULL,
|
|
created_by VARCHAR(64) NOT NULL DEFAULT '',
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (app_code, template_id, template_version),
|
|
KEY idx_message_templates_type_status (app_code, message_type, status),
|
|
KEY idx_message_templates_template_status (app_code, template_id, status)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS user_inbox_messages (
|
|
app_code VARCHAR(32) NOT NULL,
|
|
inbox_message_id VARCHAR(96) NOT NULL,
|
|
user_id BIGINT NOT NULL,
|
|
message_type VARCHAR(32) NOT NULL,
|
|
producer VARCHAR(64) NOT NULL,
|
|
producer_event_id VARCHAR(128) NOT NULL,
|
|
producer_event_type VARCHAR(96) NOT NULL DEFAULT '',
|
|
aggregate_type VARCHAR(64) NOT NULL DEFAULT '',
|
|
aggregate_id VARCHAR(128) NOT NULL DEFAULT '',
|
|
template_id VARCHAR(96) NOT NULL DEFAULT '',
|
|
template_version VARCHAR(64) NOT NULL DEFAULT '',
|
|
title VARCHAR(160) NOT NULL,
|
|
summary VARCHAR(512) NOT NULL,
|
|
body VARCHAR(2048) NOT NULL DEFAULT '',
|
|
icon_url VARCHAR(512) NOT NULL DEFAULT '',
|
|
image_url VARCHAR(512) NOT NULL DEFAULT '',
|
|
action_type VARCHAR(64) NOT NULL DEFAULT '',
|
|
action_param VARCHAR(1024) NOT NULL DEFAULT '',
|
|
priority INT NOT NULL DEFAULT 0,
|
|
status VARCHAR(32) NOT NULL,
|
|
read_at_ms BIGINT NULL,
|
|
deleted_at_ms BIGINT NULL,
|
|
sent_at_ms BIGINT NOT NULL,
|
|
expire_at_ms BIGINT NULL,
|
|
metadata_json JSON NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (app_code, inbox_message_id),
|
|
UNIQUE KEY uk_user_inbox_producer_event (app_code, user_id, producer, producer_event_id),
|
|
KEY idx_user_inbox_list (app_code, user_id, message_type, deleted_at_ms, status, sent_at_ms, inbox_message_id),
|
|
KEY idx_user_inbox_unread (app_code, user_id, message_type, read_at_ms, deleted_at_ms, status, expire_at_ms),
|
|
KEY idx_user_inbox_aggregate (app_code, user_id, aggregate_type, aggregate_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS message_fanout_jobs (
|
|
app_code VARCHAR(32) NOT NULL,
|
|
job_id VARCHAR(96) NOT NULL,
|
|
command_id VARCHAR(128) NOT NULL,
|
|
message_type VARCHAR(32) NOT NULL,
|
|
target_scope VARCHAR(64) NOT NULL,
|
|
target_filter_json JSON NOT NULL,
|
|
template_snapshot_json JSON NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
attempt_count INT NOT NULL DEFAULT 0,
|
|
cursor_user_id BIGINT NOT NULL DEFAULT 0,
|
|
total_count BIGINT NOT NULL DEFAULT 0,
|
|
success_count BIGINT NOT NULL DEFAULT 0,
|
|
failure_count BIGINT NOT NULL DEFAULT 0,
|
|
batch_size INT NOT NULL DEFAULT 500,
|
|
next_run_at_ms BIGINT NOT NULL DEFAULT 0,
|
|
locked_by VARCHAR(96) NOT NULL DEFAULT '',
|
|
locked_until_ms BIGINT NOT NULL DEFAULT 0,
|
|
error_message VARCHAR(512) NOT NULL DEFAULT '',
|
|
created_by VARCHAR(64) NOT NULL,
|
|
created_at_ms BIGINT NOT NULL,
|
|
updated_at_ms BIGINT NOT NULL,
|
|
PRIMARY KEY (app_code, job_id),
|
|
UNIQUE KEY uk_message_fanout_command (app_code, command_id),
|
|
KEY idx_message_fanout_status (app_code, status, next_run_at_ms, updated_at_ms)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|