package com.hubspot.blazar.data.dao; import java.util.Set; import org.skife.jdbi.v2.sqlobject.Bind; import org.skife.jdbi.v2.sqlobject.GetGeneratedKeys; import org.skife.jdbi.v2.sqlobject.SqlQuery; import org.skife.jdbi.v2.sqlobject.SqlUpdate; import org.skife.jdbi.v2.sqlobject.customizers.SingleValueResult; import com.google.common.base.Optional; import com.hubspot.blazar.base.InterProjectBuildMapping; import com.hubspot.rosetta.jdbi.BindWithRosetta; public interface InterProjectBuildMappingDao { @SqlQuery("SELECT * FROM inter_project_build_mappings WHERE interProjectBuildId = :id") Set<InterProjectBuildMapping> getMappingsForInterProjectBuild(@Bind("id") long id); @SqlQuery("SELECT * FROM inter_project_build_mappings WHERE interProjectBuildId = :interProjectBuildId and branchId = :branchId") Set<InterProjectBuildMapping> getMappingsForRepo(@Bind("interProjectBuildId") long interProjectBuildId, @Bind("branchId") int branchId); @SqlQuery("SELECT * FROM inter_project_build_mappings WHERE interProjectBuildId = :interProjectBuildId and moduleId = :moduleId") Set<InterProjectBuildMapping> getMappingsForModule(@Bind("interProjectBuildId") long interProjectBuildId, @Bind("moduleId") int moduleId); @SqlQuery("SELECT * FROM inter_project_build_mappings WHERE repoBuildId = :repoBuildId") Set<InterProjectBuildMapping> getByRepoBuildId(@Bind("repoBuildId") long repoBuildId); @SingleValueResult @SqlQuery("SELECT * FROM inter_project_build_mappings WHERE moduleBuildId = :moduleBuildId") Optional<InterProjectBuildMapping> getByModuleBuildId(@Bind("moduleBuildId") long moduleBuildId); @SingleValueResult @SqlQuery("SELECT * FROM inter_project_build_mappings WHERE id = :id") Optional<InterProjectBuildMapping> getByMappingId(@Bind("id") long id); @GetGeneratedKeys @SqlUpdate("INSERT INTO inter_project_build_mappings (interProjectBuildId, branchId, repoBuildId, moduleId, moduleBuildId, state) " + "VALUES (:interProjectBuildId, :branchId, :repoBuildId, :moduleId, :moduleBuildId, :state)") long insert(@BindWithRosetta InterProjectBuildMapping interProjectBuildMapping); @SqlUpdate("UPDATE inter_project_build_mappings SET repoBuildId = :repoBuildId, moduleBuildId = :moduleBuildId, state = :state where id = :id") int updateBuilds(@BindWithRosetta InterProjectBuildMapping mapping); }