53 lines
1.2 KiB
MySQL
53 lines
1.2 KiB
MySQL
|
-- 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;
|