-- 010: Matched trades (trading-service) CREATE TABLE IF NOT EXISTS trades ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), buy_order_id UUID NOT NULL REFERENCES orders(id), sell_order_id UUID NOT NULL REFERENCES orders(id), coupon_id UUID NOT NULL REFERENCES coupons(id), buyer_id UUID NOT NULL REFERENCES users(id), seller_id UUID NOT NULL REFERENCES users(id), price NUMERIC(12,2) NOT NULL, quantity INTEGER NOT NULL DEFAULT 1, buyer_fee NUMERIC(12,4) NOT NULL DEFAULT 0, seller_fee NUMERIC(12,4) NOT NULL DEFAULT 0, status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'settled', 'failed')), tx_hash VARCHAR(66), settled_at TIMESTAMPTZ, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX idx_trades_coupon_id ON trades(coupon_id); CREATE INDEX idx_trades_buyer_id ON trades(buyer_id); CREATE INDEX idx_trades_seller_id ON trades(seller_id); CREATE INDEX idx_trades_status ON trades(status); CREATE INDEX idx_trades_created_at ON trades(created_at DESC);