EntitySqlDao.sql.stg

180 lines | 3.359 kB Blame History Raw Download
group EntitySqlDao;

/** To override in each EntitySqlDao template file **/

tableName() ::= ""

/** Leave out id, account_record_id and tenant_record_id */
tableFields(prefix) ::= ""

tableValues() ::= ""

historyTableName() ::= ""

historyTableFields(prefix) ::= "<tableFields(prefix)>"

historyTableValues() ::= "<tableValues()>"

/****************************************************/

idField(prefix) ::= <<
<prefix>id
>>

recordIdField(prefix) ::= <<
<prefix>record_id
>>

historyRecordIdField(prefix) ::= <<
<prefix>history_record_id
>>

/** Override this if the Entity isn't tied to an account */
accountRecordIdField(prefix) ::= <<
<prefix>account_record_id
>>

accountRecordIdValue() ::= ":accountRecordId"

tenantRecordIdField(prefix) ::= <<
<prefix>tenant_record_id
>>

tenantRecordIdValue() ::= ":tenantRecordId"

allTableFields(prefix) ::= <<
  <recordIdField(prefix)>
, <idField(prefix)>
, <tableFields(prefix)>
<if(accountRecordIdField(prefix))>, <accountRecordIdField(prefix)><endif>
, <tenantRecordIdField(prefix)>
>>

/** TODO  history tables should not start with history_record_id, instead: record_id, id, target_record_id  **/
allHistoryTableFields(prefix) ::= <<
  <historyRecordIdField(prefix)>
, <recordIdField(prefix)>
, <idField(prefix)>
, <historyTableFields(prefix)>
<if(accountRecordIdField(prefix))>, <accountRecordIdField(prefix)><endif>
, <tenantRecordIdField(prefix)>
>>

allHistoryTableValues() ::= <<
  :recordId
, :id
, <historyTableValues()>
<if(accountRecordIdField(""))>, <accountRecordIdValue()><endif>
<if(tenantRecordIdField(""))>, <tenantRecordIdValue()><endif>
>>

auditTableName() ::= "audit_log"


auditTableFields(prefix) ::= <<
  <prefix>id
, <prefix>table_name
, <prefix>target_record_id
, <prefix>change_type
, <prefix>changed_by
, <prefix>reason_code
, <prefix>comments
, <prefix>user_token
, <prefix>created_date
, <accountRecordIdField(prefix)>
, <tenantRecordIdField(prefix)>
>>


auditTableValues(prefix) ::= <<
  :id
, :tableName
, :targetRecordId
, :changeType
, :changedBy
, :reasonCode
, :comment
, :userToken
, :createdDate
, <accountRecordIdValue()>
, <tenantRecordIdValue()>
>>

/** Macros used for multi-tenancy (almost any query should use them!) */
CHECK_TENANT(prefix) ::= "<prefix>tenant_record_id = :tenantRecordId"
AND_CHECK_TENANT(prefix) ::= "and <CHECK_TENANT(prefix)>"

getById(id) ::= <<
select
<allTableFields("t.")>
from <tableName()> t
where <idField("t.")> = :id
<AND_CHECK_TENANT("t.")>
;
>>

getByRecordId(recordId) ::= <<
select
<allTableFields("t.")>
from <tableName()> t
where <recordIdField("t.")> = :recordId
<AND_CHECK_TENANT("t.")>
;
>>

getRecordId(id) ::= <<
select
  <recordIdField("t.")>
from <tableName()> t
where <idField("t.")> = :id
<AND_CHECK_TENANT("t.")>
;
>>

getHistoryRecordId(recordId) ::= <<
select
  max(<historyRecordIdField("t.")>)
from <tableName()> t
where <recordIdField("t.")> = :recordId
<AND_CHECK_TENANT("t.")>
;
>>

get(limit) ::= <<
select
<allTableFields("t.")>
from <tableName()> t
where <CHECK_TENANT("t.")>
<if(limit)>limit :limit<endif>
;
>>

test() ::= <<
select
<allTableFields("t.")>
from <tableName()> t
where <CHECK_TENANT("t.")>
limit 1
;
>>

addHistoryFromTransaction() ::= <<
insert into <historyTableName()> (
<allHistoryTableFields()>
)
values (
<allHistoryTableValues()>
)
;
>>

insertAuditFromTransaction() ::= <<
insert into <auditTableName()> (
<auditTableFields()>
)
values (
<auditTableValues()>
)
;
>>