import "org/killbill/billing/util/entity/dao/EntitySqlDao.sql.stg"

tableName() ::= "tenants"

/* Don't add api_secret and api_salt in these fields, we shouldn't need to retrieve them */
tableFields(prefix) ::= <<
  <prefix>external_key
, <prefix>api_key
, <prefix>created_date
, <prefix>created_by
, <prefix>updated_date
, <prefix>updated_by
>>

tableValues() ::= <<
  :externalKey
, :apiKey
, :createdDate
, :createdBy
, :updatedDate
, :updatedBy
>>

/* No account_record_id field */
accountRecordIdFieldWithComma(prefix) ::= ""
accountRecordIdValueWithComma() ::= ""

/* No tenant_record_id field */
tenantRecordIdFieldWithComma(prefix) ::= ""
tenantRecordIdValueWithComma(prefix) ::= ""
CHECK_TENANT(prefix) ::= "1 = 1"

/* Override default create call to include secrets */
create() ::= <<
insert into <tableName()> (
  <idField("")>
, <tableFields("")>
, api_secret
, api_salt
)
values (
  <idValue()>
, <tableValues()>
, :apiSecret
, :apiSalt
)
;
>>

getByApiKey() ::= <<
select
  <allTableFields("t.")>
from <tableName()> t
where api_key = :apiKey
;
>>

getSecrets() ::= <<
select
  <allTableFields("t.")>
, t.api_secret
, t.api_salt
from <tableName()> t
where <idField("t.")> = <idValue()>
;
>>
