io.ebean.config.dbplatform.DbViewHistorySupport Maven / Gradle / Ivy
package io.ebean.config.dbplatform;
/**
* Database view based implementation of DbHistorySupport.
*
* These implementations have explicit history tables, a view to union the
* base table and history table and triggers to maintain the history.
*
*/
public abstract class DbViewHistorySupport implements DbHistorySupport {
@Override
public boolean isStandardsBased() {
return false;
}
/**
* Returns the configured view suffix.
*
* @param asOfViewSuffix the configured view suffix (typically "_with_history").
*/
@Override
public String getAsOfViewSuffix(String asOfViewSuffix) {
// just return the configured suffix
return asOfViewSuffix;
}
/**
* Returns the configured view suffix (same as getAsOfViewSuffix()).
*
* @param asOfViewSuffix the configured view suffix (typically "_with_history").
*/
@Override
public String getVersionsBetweenSuffix(String asOfViewSuffix) {
// just return the configured asOfViewSuffix (using the view for versions between query)
return asOfViewSuffix;
}
/**
* Return 2 if we have effective start and effective end as 2 columns.
* Note that for postgres we can use a single range type so that returns 1.
*/
@Override
public int getBindCount() {
return 2;
}
/**
* Return the 'as of' predicate clause appended to the end of the normal query predicates.
*/
@Override
public String getAsOfPredicate(String asOfTableAlias, String asOfSysPeriod) {
// (sys_period_start < ? and (sys_period_end is null or sys_period_end > ?));
return "(" + asOfTableAlias + "." + asOfSysPeriod + "_start" + " <= ? and (" + asOfTableAlias + "." + asOfSysPeriod + "_end" + " is null or " + asOfTableAlias + "." + asOfSysPeriod + "_end" + " > ?))";
}
/**
* Return the lower bound column prepended with the table alias.
*
* @param tableAlias the table alias
* @param sysPeriod the name of the sys_period column
*/
@Override
public String getSysPeriodLower(String tableAlias, String sysPeriod) {
return tableAlias + "." + sysPeriod + "_start";
}
/**
* Return the upper bound column prepended with the table alias.
*
* @param tableAlias the table alias
* @param sysPeriod the name of the sys_period column
*/
@Override
public String getSysPeriodUpper(String tableAlias, String sysPeriod) {
return tableAlias + "." + sysPeriod + "_end";
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy