-- 025: Distributed deployment configuration tables
-- Supports multi-region, horizontal scaling via Citus distribution keys

-- Region configuration for multi-region deployment
CREATE TABLE IF NOT EXISTS regions (
    id VARCHAR(20) PRIMARY KEY,                  -- e.g. 'us-east', 'ap-southeast', 'hk'
    name VARCHAR(100) NOT NULL,
    endpoint VARCHAR(500),
    role VARCHAR(20) NOT NULL DEFAULT 'secondary' CHECK (role IN ('primary', 'secondary', 'regulatory')),
    status VARCHAR(20) NOT NULL DEFAULT 'active',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- Insert default regions per deployment guide
INSERT INTO regions (id, name, role) VALUES
    ('us-east', 'AWS US East (Primary)', 'primary'),
    ('ap-southeast', 'AWS Singapore (APAC)', 'secondary'),
    ('hk', 'Hong Kong (Regulatory)', 'regulatory')
ON CONFLICT (id) DO NOTHING;

-- Distributed table distribution (Citus)
-- In production with Citus, these would distribute the high-volume tables:
-- SELECT create_distributed_table('transactions', 'user_id');
-- SELECT create_distributed_table('orders', 'user_id');
-- SELECT create_distributed_table('trades', 'coupon_id');
-- SELECT create_distributed_table('audit_logs', 'actor_id');
-- SELECT create_distributed_table('outbox', 'aggregate_id');
-- SELECT create_distributed_table('processed_events', 'event_id');
--
-- Reference tables (small, replicated to all nodes):
-- SELECT create_reference_table('regions');
-- SELECT create_reference_table('issuers');
-- SELECT create_reference_table('coupons');
--
-- Note: In dev environment (single-node), these are regular tables.
-- Citus commands are only run in production deployment scripts.
