]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-20315 update MetricDao queries
authorPierre <pierre.guillot@sonarsource.com>
Mon, 25 Sep 2023 15:48:17 +0000 (17:48 +0200)
committersonartech <sonartech@sonarsource.com>
Thu, 28 Sep 2023 20:03:12 +0000 (20:03 +0000)
server/sonar-db-dao/src/it/java/org/sonar/db/metric/MetricDaoIT.java
server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/metric/MetricMapper.java
server/sonar-db-dao/src/main/resources/org/sonar/db/metric/MetricMapper.xml
server/sonar-webserver-webapi/src/main/java/org/sonar/server/metric/ws/SearchAction.java

index 2a76e99b47017c4d10b5188f3801ff0eee7f2b4f..e6deff029a3f709b391e461336a89512f02fc98f 100644 (file)
@@ -266,9 +266,9 @@ public class MetricDaoIT {
     underTest.insert(dbSession, newMetricDto().setEnabled(true));
     underTest.insert(dbSession, newMetricDto().setEnabled(false));
 
-    List<MetricDto> result = underTest.selectEnabled(dbSession, 0, 100);
+    List<MetricDto> result = underTest.selectEnabled(dbSession, 1, 2);
 
-    assertThat(result).hasSize(3);
+    assertThat(result).hasSize(2);
   }
 
   private void assertEquals(MetricDto expected, MetricDto result) {
index 9ece6c8f489fab004abd4732050b7241c7d59183..fdf05f9949363d305605b079faaf7e956576f44b 100644 (file)
@@ -25,9 +25,9 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 import javax.annotation.CheckForNull;
-import org.apache.ibatis.session.RowBounds;
 import org.sonar.db.Dao;
 import org.sonar.db.DbSession;
+import org.sonar.db.Pagination;
 import org.sonar.db.RowNotFoundException;
 
 import static org.sonar.db.DatabaseUtils.executeLargeInputs;
@@ -56,11 +56,11 @@ public class MetricDao implements Dao {
   }
 
   public List<MetricDto> selectEnabled(DbSession session) {
-    return mapper(session).selectAllEnabled();
+    return mapper(session).selectAllEnabled(Pagination.all());
   }
 
-  public List<MetricDto> selectEnabled(DbSession session, int offset, int limit) {
-    return mapper(session).selectAllEnabled(new RowBounds(offset, limit));
+  public List<MetricDto> selectEnabled(DbSession session, int page, int limit) {
+    return mapper(session).selectAllEnabled(Pagination.forPage(page).andSize(limit));
   }
 
   public int countEnabled(DbSession session) {
index 787a64f71f3d41448f89779ba1a01ccc34db0dc0..01cbff840513c309ee7e6a9d2130b7f22c1f3c39 100644 (file)
@@ -21,7 +21,7 @@ package org.sonar.db.metric;
 
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
-import org.apache.ibatis.session.RowBounds;
+import org.sonar.db.Pagination;
 
 public interface MetricMapper {
 
@@ -35,9 +35,7 @@ public interface MetricMapper {
 
   List<MetricDto> selectAll();
 
-  List<MetricDto> selectAllEnabled();
-
-  List<MetricDto> selectAllEnabled(RowBounds rowBounds);
+  List<MetricDto> selectAllEnabled(@Param("pagination")Pagination pagination);
 
   void insert(MetricDto dto);
 
index 604645fac12d99105e8ac7c9e9dd20540ee0f970..c77a7c45a368ffd79adaa6907bdee395aa2aa9b0 100644 (file)
@@ -37,7 +37,7 @@
     ORDER BY UPPER(m.short_name), m.short_name
   </select>
 
-  <select id="selectAllEnabled" parameterType="map" resultType="org.sonar.db.metric.MetricDto">
+  <select id="selectAllEnabled" resultType="org.sonar.db.metric.MetricDto">
     SELECT
     <include refid="metricColumns"/>
     FROM metrics m
@@ -45,6 +45,7 @@
       m.enabled=${_true}
     </where>
     ORDER BY UPPER(m.short_name), m.short_name
+    offset (#{pagination.startRowNumber,jdbcType=INTEGER}-1) rows fetch next #{pagination.pageSize,jdbcType=INTEGER} rows only
   </select>
 
   <select id="countEnabled" resultType="Integer">
index 522df0bee03a72d00f2f704063c11f2dea81f1d0..3dd60df81a56166eb2084ec4a12b49edf51820e6 100644 (file)
@@ -61,7 +61,7 @@ public class SearchAction implements MetricsWsAction {
       .setPage(request.mandatoryParamAsInt(Param.PAGE),
         request.mandatoryParamAsInt(Param.PAGE_SIZE));
     try (DbSession dbSession = dbClient.openSession(false)) {
-      List<MetricDto> metrics = dbClient.metricDao().selectEnabled(dbSession, searchOptions.getOffset(), searchOptions.getLimit());
+      List<MetricDto> metrics = dbClient.metricDao().selectEnabled(dbSession, searchOptions.getPage(), searchOptions.getLimit());
       int nbMetrics = dbClient.metricDao().countEnabled(dbSession);
       try (JsonWriter json = response.newJsonWriter()) {
         json.beginObject();