owpengram-server/deploy/migrations/0005_system_login_messages.up.sql
2026-06-04 01:37:39 +08:00

44 lines
2 KiB
SQL

-- 0005_system_login_messages: official system account and first message persistence.
--
-- 777000 官方账号与登录消息推送;表结构按 telesrv domain/store 边界建模。
ALTER TABLE users
ADD COLUMN IF NOT EXISTS verified BOOLEAN NOT NULL DEFAULT false,
ADD COLUMN IF NOT EXISTS support BOOLEAN NOT NULL DEFAULT false;
INSERT INTO users (id, access_hash, phone, first_name, last_name, username, country_code, verified, support)
VALUES (777000, 6599886787491911851, '42777', 'Telegram', '', 'telegram', '', true, true)
ON CONFLICT (id) DO UPDATE SET
access_hash = EXCLUDED.access_hash,
phone = EXCLUDED.phone,
first_name = EXCLUDED.first_name,
last_name = EXCLUDED.last_name,
username = EXCLUDED.username,
verified = EXCLUDED.verified,
support = EXCLUDED.support,
updated_at = now();
ALTER TABLE dialogs
ADD COLUMN IF NOT EXISTS top_message_date INT NOT NULL DEFAULT 0;
CREATE INDEX IF NOT EXISTS dialogs_user_top_message_idx
ON dialogs (user_id, pinned DESC, top_message_date DESC, top_message_id DESC, peer_id DESC);
CREATE TABLE IF NOT EXISTS messages (
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
owner_user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
peer_type VARCHAR(16) NOT NULL,
peer_id BIGINT NOT NULL,
from_user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
message_date INT NOT NULL,
outgoing BOOLEAN NOT NULL DEFAULT false,
body TEXT NOT NULL DEFAULT '',
entities JSONB NOT NULL DEFAULT '[]'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CONSTRAINT messages_peer_type_check CHECK (peer_type IN ('user'))
);
CREATE INDEX IF NOT EXISTS messages_owner_dialog_idx
ON messages (owner_user_id, peer_type, peer_id, id DESC);
CREATE INDEX IF NOT EXISTS messages_owner_date_idx
ON messages (owner_user_id, message_date DESC, id DESC);