package com.airbnb.airpal.sql;
import com.airbnb.airpal.presto.Table;
import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import java.util.HashSet;
import java.util.Set;
import static java.lang.String.format;
public class Util
{
private static Joiner OR_JOINER = Joiner.on(" OR ").skipNulls();
private static Joiner DOT_JOINER = Joiner.on(".").skipNulls();
public static String getTableCondition(Iterable<Table> tables)
{
return getTableCondition(null, tables);
}
public static String getTableCondition(String alias, Iterable<Table> tables)
{
Set<String> tablesUsedByQuery = new HashSet<>(Iterables.size(tables));
for (Table table : tables) {
tablesUsedByQuery.add(
format("(connector_id = '%s' AND schema_ = '%s' AND table_ = '%s')",
DOT_JOINER.join(alias, table.getConnectorId()),
DOT_JOINER.join(alias, table.getSchema()),
DOT_JOINER.join(alias, table.getTable())));
}
return OR_JOINER.join(tablesUsedByQuery);
}
public static String getQueryFinishedCondition(DbType type)
{
if (type == DbType.H2) {
return "query_finished > DATEADD('DAY', -:day_interval, CURRENT_TIMESTAMP())";
} else {
return "query_finished > DATE_SUB(UTC_TIMESTAMP(), INTERVAL :day_interval day)";
}
}
}