53 lines
1.2 KiB
PL/PgSQL
53 lines
1.2 KiB
PL/PgSQL
-- Deploy camper:flush_payments to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: payment
|
|
-- requires: payment_option
|
|
-- requires: payment_redsys_response
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create or replace function flush_payments() returns void as
|
|
$$
|
|
delete from payment_redsys_response
|
|
where payment_id in (
|
|
select payment_id
|
|
from payment
|
|
where payment_status = 'draft'
|
|
and updated_at <= current_timestamp - interval '1 day'
|
|
);
|
|
|
|
delete from payment_option
|
|
where payment_id in (
|
|
select payment_id
|
|
from payment
|
|
where payment_status = 'draft'
|
|
and updated_at <= current_timestamp - interval '1 day'
|
|
);
|
|
|
|
delete from payment
|
|
where payment_status = 'draft'
|
|
and updated_at <= current_timestamp - interval '1 day'
|
|
;
|
|
|
|
update payment
|
|
set payment_status = 'failed'
|
|
, updated_at = current_timestamp
|
|
where payment_status = 'pending'
|
|
and updated_at <= current_timestamp - interval '1 hour'
|
|
;
|
|
$$
|
|
language sql
|
|
security definer
|
|
set search_path = camper, pg_temp;
|
|
;
|
|
|
|
revoke execute on function flush_payments() from public;
|
|
grant execute on function flush_payments() to guest;
|
|
grant execute on function flush_payments() to employee;
|
|
grant execute on function flush_payments() to admin;
|
|
|
|
commit;
|