group BundleSqlDao: EntitySqlDao;

tableName() ::= "bundles"


tableFields(prefix) ::= <<
  <prefix>external_key
, <prefix>account_id
, <prefix>last_sys_update_date
, <prefix>original_created_date
, <prefix>created_by
, <prefix>created_date
, <prefix>updated_by
, <prefix>updated_date
>>

tableValues() ::= <<
  :externalKey
, :accountId
, :lastSysUpdateDate
, :originalCreatedDate
, :createdBy
, :createdDate
, :updatedBy
, :updatedDate
>>

updateBundleLastSysTime()  ::= <<
update <tableName()>
set
last_sys_update_date = :lastSysUpdateDate
, updated_by = :createdBy
, updated_date = :createdDate
where id = :id
<AND_CHECK_TENANT()>
;
>>

updateBundleExternalKey()  ::= <<
update <tableName()>
set
external_key = :externalKey
, updated_by = :createdBy
, updated_date = :createdDate
where id = :id
<AND_CHECK_TENANT()>
;
>>

getBundlesForKey() ::= <<
select <allTableFields()>
from bundles
where
external_key = :externalKey
<AND_CHECK_TENANT()>
<defaultOrderBy()>
;
>>

getBundlesFromAccountAndKey() ::= <<
select <allTableFields()>
from bundles
where
external_key = :externalKey
and account_id = :accountId
<AND_CHECK_TENANT()>
<defaultOrderBy()>
;
>>

getBundleFromAccount() ::= <<
select <allTableFields()>
from bundles
where
account_id = :accountId
<AND_CHECK_TENANT()>
<defaultOrderBy()>
;
>>

searchBundles() ::= <<
select SQL_CALC_FOUND_ROWS
<allTableFields("t.")>
from <tableName()> t
where 1 = 1
and (
     <idField("t.")> = :searchKey
  or t.external_key = :searchKey
  or t.account_id = :searchKey
)
<AND_CHECK_TENANT("t.")>
order by <recordIdField("t.")> ASC
limit :offset, :rowCount
;
>>
