
CREATE TABLE public.liasonpay_webhook_events (
  id UUID NOT NULL DEFAULT gen_random_uuid() PRIMARY KEY,
  transaction_id TEXT NOT NULL,
  payment_status TEXT NOT NULL,
  order_id TEXT,
  payment_amount NUMERIC,
  payment_currency TEXT,
  payment_method TEXT,
  wc_status TEXT,
  raw_payload JSONB,
  liasonpay_received_at TIMESTAMPTZ,
  received_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  processed_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE UNIQUE INDEX liasonpay_webhook_events_txn_status_uidx
  ON public.liasonpay_webhook_events (transaction_id, payment_status);
CREATE INDEX liasonpay_webhook_events_order_idx
  ON public.liasonpay_webhook_events (order_id);
CREATE INDEX liasonpay_webhook_events_received_at_idx
  ON public.liasonpay_webhook_events (received_at DESC);

GRANT ALL ON public.liasonpay_webhook_events TO service_role;
ALTER TABLE public.liasonpay_webhook_events ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Deny all access to non-service roles"
  ON public.liasonpay_webhook_events
  FOR ALL
  TO anon, authenticated
  USING (false)
  WITH CHECK (false);
