Files
HKSingleParty/99_references/supabase-examples/enterprise-patterns/supachat/supabase/seed.sql
2025-05-28 09:55:51 +08:00

36 lines
1.1 KiB
SQL

--
-- generate one year of fake chat data
--
INSERT INTO chats (created_at)
SELECT generate_series(
'2022-01-01'::timestamptz,
'2022-01-07 23:00:00'::timestamptz,
interval '1 hour');
INSERT INTO chat_messages (created_at, chat_id, chat_created_at, message)
SELECT
mca,
chats.id,
chats.created_at,
(SELECT ($$[0:3]={'hello','goodbye','How are you today','I am fine'}$$::text[])[trunc(random() * 4)::int])
FROM chats
CROSS JOIN LATERAL (
SELECT generate_series(
chats.created_at,
chats.created_at + interval '1 day',
interval '1 minute') AS mca) b;
CALL app.load_chats_partitions();
CALL app.load_chat_messages_partitions();
CALL app.update_chat_sequences();
--
-- Now schedule a job to create new partitions for "tomorrow" every night
--
SELECT cron.schedule('new-chat-partition', '0 0 * * *', 'CALL app.load_app_partitions(now()::date)');
--
--
-- After bulk loading data, tables should be vacuumed and analyzed.
-- This cannot be done inside a transaction block.
--
VACUUM ANALYZE app.chats, app.chat_messages;