package com.hubspot.blazar.data.dao; import java.util.Set; import org.skife.jdbi.v2.sqlobject.Bind; import org.skife.jdbi.v2.sqlobject.SqlQuery; import com.hubspot.blazar.base.RepositoryBuild; import com.hubspot.blazar.base.metrics.ActiveBranchBuildsInState; import com.hubspot.blazar.base.metrics.ActiveInterProjectBuildsInState; import com.hubspot.blazar.base.metrics.ActiveModuleBuildsInState; public interface MetricsDao { @SqlQuery("SELECT state, COUNT(id) AS count FROM module_builds " + "WHERE state IN ('QUEUED', 'WAITING_FOR_UPSTREAM_BUILD', 'LAUNCHING', 'IN_PROGRESS') GROUP BY state") Set<ActiveModuleBuildsInState> countActiveModuleBuildsByState(); @SqlQuery("SELECT state, COUNT(id) AS count FROM repo_builds " + "WHERE state IN ('QUEUED', 'LAUNCHING', 'IN_PROGRESS') GROUP BY state") Set<ActiveBranchBuildsInState> countActiveBranchBuildsByState(); @SqlQuery("SELECT state, count(id) AS count FROM inter_project_builds " + "WHERE state in ('QUEUED', 'LAUNCHING', 'IN_PROGRESS') GROUP BY state") Set<ActiveInterProjectBuildsInState> countActiveInterProjectBuildsByState(); @SqlQuery("SELECT * FROM repo_builds WHERE state in ('LAUNCHING', 'IN_PROGRESS') AND endTimestamp IS NULL AND startTimestamp < :currentTimeMillis - :maxAgeMillis") Set<RepositoryBuild> getBuildsRunningForLongerThan(@Bind("currentTimeMillis") long currentTimeMillis, @Bind("maxAgeMillis") long maxAgeMillis); }