24 lines
1.0 KiB
SQL
24 lines
1.0 KiB
SQL
-- 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);
|