package com.airbnb.airpal.sql.beans; import com.airbnb.airpal.presto.Table; import lombok.Data; import org.skife.jdbi.v2.FoldController; import org.skife.jdbi.v2.Folder3; import org.skife.jdbi.v2.StatementContext; import java.sql.SQLException; import java.util.Map; @Data public class JobUsageCountRow { private long count; private String connectorId; private String schema; private String table; public Table toTable() { return new Table(getConnectorId(), getSchema(), getTable()); } public static class CountFolder implements Folder3<Map<Table, Long>, JobUsageCountRow> { @Override public Map<Table, Long> fold(Map<Table, Long> accumulator, JobUsageCountRow rs, FoldController control, StatementContext ctx) throws SQLException { Table table = rs.toTable(); long currentCount = accumulator.containsKey(table) ? accumulator.get(table) : 0; accumulator.put(table, currentCount + rs.getCount()); return accumulator; } } }