20 lines
899 B
SQL
20 lines
899 B
SQL
-- 019: Refund records (clearing-service)
|
|
CREATE TABLE IF NOT EXISTS refunds (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
user_id UUID NOT NULL REFERENCES users(id),
|
|
coupon_id UUID NOT NULL REFERENCES coupons(id),
|
|
order_id UUID REFERENCES orders(id),
|
|
refund_type VARCHAR(20) NOT NULL CHECK (refund_type IN ('primary', 'secondary')),
|
|
amount NUMERIC(12,2) NOT NULL,
|
|
fee_refunded BOOLEAN NOT NULL DEFAULT false,
|
|
reason VARCHAR(500),
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'approved', 'rejected', 'completed', 'failed')),
|
|
requires_arbitration BOOLEAN NOT NULL DEFAULT false,
|
|
processed_at TIMESTAMPTZ,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE INDEX idx_refunds_user_id ON refunds(user_id);
|
|
CREATE INDEX idx_refunds_coupon_id ON refunds(coupon_id);
|
|
CREATE INDEX idx_refunds_status ON refunds(status);
|