group NotificationSqlDao;
getReadyNotifications(now, max) ::= <<
select
id
, notification_id
, notification_key
, created_dt
, creating_owner
, effective_dt
, queue_name
, processing_owner
, processing_available_dt
, processing_state
from notifications
where
effective_dt \<= :now
and queue_name = :queue_name
and processing_state != 'PROCESSED'
and processing_state != 'REMOVED'
and (processing_owner IS NULL OR processing_available_dt \<= :now)
order by
effective_dt asc
, created_dt asc
, id
limit :max
;
>>
claimNotification(owner, next_available, id, now) ::= <<
update notifications
set
processing_owner = :owner
, processing_available_dt = :next_available
, processing_state = 'IN_PROCESSING'
where
id = :id
and processing_state != 'PROCESSED'
and processing_state != 'REMOVED'
and (processing_owner IS NULL OR processing_available_dt \<= :now)
;
>>
clearNotification(id, owner) ::= <<
update notifications
set
processing_state = 'PROCESSED'
where
id = :id
;
>>
removeNotificationsByKey(notification_key) ::= <<
update notifications
set
processing_state = 'REMOVED'
where
notification_key = :notification_key
;
>>
insertNotification() ::= <<
insert into notifications (
notification_id
, notification_key
, created_dt
, creating_owner
, effective_dt
, queue_name
, processing_owner
, processing_available_dt
, processing_state
) values (
:notification_id
, :notification_key
, :created_dt
, :creating_owner
, :effective_dt
, :queue_name
, :processing_owner
, :processing_available_dt
, :processing_state
);
>>
insertClaimedHistory(sequence_id, owner, hostname, claimed_dt, notification_id) ::= <<
insert into claimed_notifications (
owner_id
, claimed_dt
, notification_id
) values (
:owner
, :claimed_dt
, :notification_id
);
>>