owpengram-server/deploy/migrations/0110_bot_api_callback_queries.up.sql
A bf965f610c feat: sync bot keyboards and callbacks
Sync telesrv b96f2dd (feat(bot): complete keyboards callbacks and durable delivery).

Skipped private docs and preserved public README files per sync rules; normalized the appearance seed log label for public naming.
2026-07-19 20:38:48 +08:00

35 lines
1.5 KiB
SQL

ALTER TABLE public.bot_api_updates
ADD COLUMN callback_query_id bigint NOT NULL DEFAULT 0,
ADD COLUMN callback_user_id bigint NOT NULL DEFAULT 0,
ADD COLUMN callback_chat_instance bigint NOT NULL DEFAULT 0,
ADD COLUMN callback_data bytea;
ALTER TABLE public.bot_api_updates
DROP CONSTRAINT bot_api_updates_kind_check,
DROP CONSTRAINT bot_api_updates_source_unique;
ALTER TABLE public.bot_api_updates
ADD CONSTRAINT bot_api_updates_kind_check
CHECK ((update_kind)::text = ANY (ARRAY['message'::text, 'edited_message'::text, 'callback_query'::text])),
ADD CONSTRAINT bot_api_updates_callback_shape_check CHECK (
(update_kind = 'callback_query'
AND callback_query_id <> 0
AND callback_user_id > 0
AND callback_chat_instance <> 0
AND COALESCE(octet_length(callback_data), 0) <= 64
AND source_pts = 0)
OR
(update_kind IN ('message', 'edited_message')
AND callback_query_id = 0
AND callback_user_id = 0
AND callback_chat_instance = 0
AND callback_data IS NULL)
);
CREATE UNIQUE INDEX bot_api_updates_message_source_unique
ON public.bot_api_updates (bot_user_id, update_kind, peer_type, peer_id, message_id, source_pts)
WHERE update_kind IN ('message', 'edited_message');
CREATE UNIQUE INDEX bot_api_updates_callback_query_unique
ON public.bot_api_updates (bot_user_id, callback_query_id)
WHERE update_kind = 'callback_query';