Introduce Docker Compose development stack with TimescaleDB and NATS services. Update README with usage instructions for local development. Upgrade Go version to 1.25.0 and update dependencies. Refactor configuration for NATS consumer rules and enhance Telegram database schema with TimescaleDB support.

This commit is contained in:
windyboy
2025-11-15 09:46:29 +08:00
parent 359e7694ab
commit 4f16bd6d90
8 changed files with 159 additions and 25 deletions
+25 -18
View File
@@ -1,37 +1,44 @@
CREATE SCHEMA IF NOT EXISTS aviation;
CREATE EXTENSION IF NOT EXISTS timescaledb;
CREATE TABLE aviation.telegrams (
uuid UUID PRIMARY KEY,
message_id VARCHAR(255) ,
date_time VARCHAR(255) ,
priority_indicator VARCHAR(255) ,
primary_address VARCHAR(255) ,
secondary_addresses TEXT,
originator VARCHAR(255),
originator_date_time VARCHAR(255),
category VARCHAR(255),
uuid UUID NOT NULL,
message_id TEXT,
date_time TEXT,
priority_indicator TEXT,
primary_address TEXT,
secondary_addresses TEXT,
originator TEXT,
originator_date_time TEXT,
category TEXT,
content TEXT,
body_data JSONB,
status VARCHAR(32) NOT NULL DEFAULT 'parsed',
status TEXT NOT NULL DEFAULT 'parsed',
error_reason TEXT,
received_at TIMESTAMP NOT NULL,
parsed_at TIMESTAMP,
dispatched_at TIMESTAMP,
need_dispatch BOOLEAN
received_at TIMESTAMPTZ NOT NULL,
parsed_at TIMESTAMPTZ,
dispatched_at TIMESTAMPTZ,
need_dispatch BOOLEAN,
PRIMARY KEY (uuid, received_at)
);
SELECT create_hypertable('aviation.telegrams', 'received_at', if_not_exists => TRUE);
-- Indexes for better query performance
CREATE INDEX idx_telegrams_message_id ON aviation.telegrams (message_id);
CREATE INDEX idx_telegrams_date_time ON aviation.telegrams (date_time);
CREATE INDEX idx_telegrams_priority_indicator ON aviation.telegrams (priority_indicator);
CREATE INDEX idx_telegrams_primary_address ON aviation.telegrams (primary_address);
CREATE INDEX idx_telegrams_received_at ON aviation.telegrams (received_at);
CREATE INDEX idx_telegrams_uuid ON aviation.telegrams (uuid);
CREATE TABLE IF NOT EXISTS aviation.telegrams_raw (
uuid UUID PRIMARY KEY,
status VARCHAR(32) NOT NULL,
uuid UUID NOT NULL,
status TEXT NOT NULL,
error_reason TEXT,
content TEXT NOT NULL,
received_at TIMESTAMP NOT NULL,
metadata JSONB
received_at TIMESTAMPTZ NOT NULL,
metadata JSONB,
PRIMARY KEY (uuid, received_at)
);