group BlockingStateSqlDao: EntitySqlDao;


tableFields(prefix) ::= <<
 <prefix>id
, <prefix>blockable_id
, <prefix>state
, <prefix>type
, <prefix>service
, <prefix>block_change
, <prefix>block_entitlement
, <prefix>block_billing
, <prefix>created_date
>>


tableValues() ::= <<
 :id
, :blockableId
, :state
, :type
, :service
, :blockChange
, :blockEntitlement
, :blockBilling
, :createdDate
>>

getBlockingStateFor() ::= <<
    select
        id
      , blockable_id
      , state
      , type
      , service
      , block_change
      , block_entitlement
      , block_billing
      , created_date
      , tenant_record_id
    from blocking_states
    where blockable_id = :blockable_id
    <AND_CHECK_TENANT()>
    -- We want the current state, hence the order desc and limit 1
    order by created_date desc, record_id desc
    limit 1
    ;
>>

getBlockingHistoryFor() ::= <<
    select
       id
      , blockable_id
      , state
      , type
      , service
      , block_change
      , block_entitlement
      , block_billing
      , created_date
      , tenant_record_id
    from blocking_states
    where blockable_id = :blockable_id
    <AND_CHECK_TENANT()>
    -- We want the history in order
    order by created_date asc, record_id asc
    ;
>>
