diff --git a/apps/telegram-monitor/src/migration.ts b/apps/telegram-monitor/src/migration.ts index e846da35..c6c519df 100644 --- a/apps/telegram-monitor/src/migration.ts +++ b/apps/telegram-monitor/src/migration.ts @@ -39,4 +39,42 @@ AddMigration({ `, }); +AddMigration({ + id: '9f5e4d03-2e50-4977-9168-2d1b616f8b04', + name: 'create-hypertable-for-telegram_messages', + dependencies: ['eb62f3a4-11fd-4386-a86d-1841c3beee13'], + statement: ` +CREATE EXTENSION IF NOT EXISTS timescaledb; +ALTER TABLE telegram_messages DROP CONSTRAINT IF EXISTS telegram_messages_pkey; +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conrelid = 'telegram_messages'::regclass + AND conname = 'telegram_messages_key' + ) THEN + ALTER TABLE telegram_messages + ADD CONSTRAINT telegram_messages_key + UNIQUE (id, created_at); + END IF; +END $$; +ALTER TABLE telegram_messages DROP CONSTRAINT IF EXISTS telegram_messages_message_id_key; +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conrelid = 'telegram_messages'::regclass + AND conname = 'telegram_messages_message_id_created_at_key' + ) THEN + ALTER TABLE telegram_messages + ADD CONSTRAINT telegram_messages_message_id_created_at_key + UNIQUE (message_id, created_at); + END IF; +END $$; +SELECT create_hypertable('telegram_messages', by_range('created_at'), migrate_data => TRUE, if_not_exists => TRUE); +`, +}); + ExecuteMigrations(terminal); diff --git a/apps/twitter-monitor/src/migrations.ts b/apps/twitter-monitor/src/migrations.ts index a02dcb9c..ae0104a7 100644 --- a/apps/twitter-monitor/src/migrations.ts +++ b/apps/twitter-monitor/src/migrations.ts @@ -48,4 +48,28 @@ AddMigration({ `, }); +AddMigration({ + id: '0d6d3c0c-0c6d-4f9f-9c7b-8e0e9b0b8c5d', + name: 'create-hypertable-for-twitter_messages', + dependencies: ['73ce7f3e-f359-4968-b57a-8ecf8deb71c7'], + statement: ` +CREATE EXTENSION IF NOT EXISTS timescaledb; +ALTER TABLE twitter_messages DROP CONSTRAINT IF EXISTS twitter_messages_pkey; +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 + FROM pg_constraint + WHERE conrelid = 'twitter_messages'::regclass + AND conname = 'twitter_messages_key' + ) THEN + ALTER TABLE twitter_messages + ADD CONSTRAINT twitter_messages_key + UNIQUE (id, created_at); + END IF; +END $$; +SELECT create_hypertable('twitter_messages', by_range('created_at'), migrate_data => TRUE, if_not_exists => TRUE); +`, +}); + ExecuteMigrations(terminal); diff --git a/common/changes/@yuants/app-telegram-monitor/2025-02-17-18-42.json b/common/changes/@yuants/app-telegram-monitor/2025-02-17-18-42.json new file mode 100644 index 00000000..cfe2cd42 --- /dev/null +++ b/common/changes/@yuants/app-telegram-monitor/2025-02-17-18-42.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@yuants/app-telegram-monitor", + "comment": "create hypertable for time series data", + "type": "patch" + } + ], + "packageName": "@yuants/app-telegram-monitor" +} \ No newline at end of file diff --git a/common/changes/@yuants/app-twitter-monitor/2025-02-17-18-42.json b/common/changes/@yuants/app-twitter-monitor/2025-02-17-18-42.json new file mode 100644 index 00000000..4466b0f2 --- /dev/null +++ b/common/changes/@yuants/app-twitter-monitor/2025-02-17-18-42.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@yuants/app-twitter-monitor", + "comment": "create hypertable for time series data", + "type": "patch" + } + ], + "packageName": "@yuants/app-twitter-monitor" +} \ No newline at end of file