#1579 - ENH: for UpdateQuery add setLabel() and update() as top level methods

This commit is contained in:
rob bygrave
2018-12-19 13:58:28 +13:00
parent 51f79e769c
commit ebdc28e1cd
3 changed files with 53 additions and 0 deletions
+10
View File
@@ -154,9 +154,19 @@ public interface UpdateQuery<T> {
*/
UpdateQuery<T> setProfileLocation(ProfileLocation profileLocation);
/**
* Set the label on the update query.
*/
UpdateQuery<T> setLabel(String label);
/**
* Return the query expression list to add predicates to.
*/
ExpressionList<T> where();
/**
* Execute the update returning the number of rows updated.
*/
int update();
}
@@ -48,8 +48,19 @@ public class DefaultUpdateQuery<T> implements UpdateQuery<T> {
return this;
}
@Override
public UpdateQuery<T> setLabel(String label) {
query.setLabel(label);
return this;
}
@Override
public ExpressionList<T> where() {
return query.where();
}
@Override
public int update() {
return query.update();
}
}
@@ -4,10 +4,12 @@ import io.ebean.annotation.IgnorePlatform;
import io.ebean.annotation.Platform;
import io.ebean.meta.BasicMetricVisitor;
import io.ebean.meta.MetaOrmQueryMetric;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import org.tests.model.basic.Country;
import org.tests.model.basic.Customer;
import org.tests.model.basic.EBasicWithUniqueCon;
import org.tests.model.basic.ResetBasicData;
import java.sql.Timestamp;
import java.util.List;
@@ -43,6 +45,36 @@ public class UpdateQueryTest extends BaseTestCase {
assertThat(ormQueryMetrics.get(0).getLabel()).isEqualTo("updateActive");
}
@Test
public void update() {
ResetBasicData.reset();
resetAllMetrics();
UpdateQuery<Customer> update = server().update(Customer.class);
LoggedSqlCollector.start();
int rows = update
.setRaw("status = status")
.setLabel("updateAll")
.update();
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(rows).isGreaterThan(0);
assertThat(sql.get(0)).contains("update o_customer set status = status");
BasicMetricVisitor basic = visitMetricsBasic();
List<MetaOrmQueryMetric> ormQueryMetrics = basic.getOrmQueryMetrics();
assertThat(ormQueryMetrics).hasSize(1);
assertThat(ormQueryMetrics.get(0).getType()).isEqualTo(Customer.class);
assertThat(ormQueryMetrics.get(0).getLabel()).isEqualTo("updateAll");
}
@Test
public void update_withTransactionBatch() {