821537186e
- Reorganized import statements in adapter tests for better readability - Replaced or_insert_with(Vec::new) with or_default() in test closures - Updated Cargo.lock with new dependency versions and checksums - Added TLS features to tonic dependency configuration - Included sqlx, chrono, and uuid dependencies with specific features - Added jsonwebtoken and arc-swap as project dependencies - Reformatted assertion statements to comply with line length limits - Adjusted base64 import order in engine codec module - Updated protobuf include statement formatting
103 lines
4.1 KiB
PL/PgSQL
103 lines
4.1 KiB
PL/PgSQL
-- ============================================================
|
|
-- Migration: 005_message_misc.sql
|
|
-- Tables: message_notification, message_scheduled, message_sticker,
|
|
-- message_forward, message_component
|
|
-- ============================================================
|
|
|
|
BEGIN;
|
|
|
|
-- models/message_notification.rs → message_notification
|
|
CREATE TABLE IF NOT EXISTS message_notification (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
message_id UUID NOT NULL REFERENCES message(id) ON DELETE CASCADE,
|
|
channel_id UUID NOT NULL,
|
|
user_id UUID NOT NULL,
|
|
reason TEXT NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
delivery_channel TEXT NULL,
|
|
delivered_at TIMESTAMPTZ NULL,
|
|
read_at TIMESTAMPTZ NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_notification_user_id
|
|
ON message_notification (user_id, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_message_notification_status
|
|
ON message_notification (status);
|
|
|
|
-- models/message_scheduled.rs → message_scheduled
|
|
CREATE TABLE IF NOT EXISTS message_scheduled (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
channel_id UUID NOT NULL,
|
|
author_id UUID NOT NULL,
|
|
thread_id UUID NULL REFERENCES message_thread(id) ON DELETE SET NULL,
|
|
reply_to_message_id UUID NULL REFERENCES message(id) ON DELETE SET NULL,
|
|
body TEXT NOT NULL,
|
|
metadata JSONB NULL,
|
|
scheduled_at TIMESTAMPTZ NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending',
|
|
sent_message_id UUID NULL REFERENCES message(id) ON DELETE SET NULL,
|
|
error TEXT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_scheduled_status_at
|
|
ON message_scheduled (status, scheduled_at);
|
|
|
|
-- models/message_sticker.rs → message_sticker
|
|
CREATE TABLE IF NOT EXISTS message_sticker (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
message_id UUID NOT NULL REFERENCES message(id) ON DELETE CASCADE,
|
|
sticker_id UUID NOT NULL,
|
|
name TEXT NOT NULL,
|
|
image_url TEXT NOT NULL,
|
|
format_type TEXT NOT NULL DEFAULT 'png',
|
|
pack_name TEXT NULL,
|
|
tags TEXT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_sticker_message_id
|
|
ON message_sticker (message_id);
|
|
|
|
-- models/message_forward.rs → message_forward
|
|
CREATE TABLE IF NOT EXISTS message_forward (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
message_id UUID NOT NULL REFERENCES message(id) ON DELETE CASCADE,
|
|
source_message_id UUID NOT NULL REFERENCES message(id) ON DELETE CASCADE,
|
|
source_channel_id UUID NOT NULL,
|
|
forwarded_by UUID NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_forward_message_id
|
|
ON message_forward (message_id);
|
|
CREATE INDEX IF NOT EXISTS idx_message_forward_source_message_id
|
|
ON message_forward (source_message_id);
|
|
|
|
-- models/message_component.rs → message_component
|
|
CREATE TABLE IF NOT EXISTS message_component (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
message_id UUID NOT NULL REFERENCES message(id) ON DELETE CASCADE,
|
|
row INTEGER NOT NULL DEFAULT 0,
|
|
position INTEGER NOT NULL DEFAULT 0,
|
|
component_type TEXT NOT NULL,
|
|
custom_id TEXT NOT NULL,
|
|
label TEXT NULL,
|
|
emoji TEXT NULL,
|
|
style TEXT NULL,
|
|
url TEXT NULL,
|
|
disabled BOOLEAN NOT NULL DEFAULT FALSE,
|
|
placeholder TEXT NULL,
|
|
min_values INTEGER NULL,
|
|
max_values INTEGER NULL,
|
|
options JSONB NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_message_component_message_id
|
|
ON message_component (message_id);
|
|
|
|
COMMIT;
|