#661 - ENH: Add deletePermanent(beanType, id) and deleteAllPermanent(beanType, ids) ... (basically missing API)

This commit is contained in:
Robin Bygrave
2016-04-26 21:30:52 +12:00
parent 2067568a5e
commit 03189ac92a
12 changed files with 454 additions and 20 deletions
@@ -30,7 +30,6 @@ public class EbeanServer_deleteAllByIdTest {
List<String> loggedSql = LoggedSqlCollector.stop();
assertThat(loggedSql).hasSize(1);
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id in (?,?,?)");
}
@Test
@@ -59,6 +58,53 @@ public class EbeanServer_deleteAllByIdTest {
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id in (?,?,?)");
}
@Test
public void deleteAllPermanentById() {
List<EBasicVer> someBeans = beans(3);
Ebean.saveAll(someBeans);
List<Integer> ids = new ArrayList<Integer>();
for (EBasicVer someBean : someBeans) {
ids.add(someBean.getId());
}
LoggedSqlCollector.start();
Ebean.deleteAllPermanent(EBasicVer.class, ids);
List<String> loggedSql = LoggedSqlCollector.stop();
assertThat(loggedSql).hasSize(1);
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id in (?,?,?)");
}
@Test
public void deleteAllPermanentById_withTransaction() {
List<EBasicVer> someBeans = beans(3);
Ebean.saveAll(someBeans);
List<Integer> ids = new ArrayList<Integer>();
for (EBasicVer someBean : someBeans) {
ids.add(someBean.getId());
}
EbeanServer server = Ebean.getDefaultServer();
// act
LoggedSqlCollector.start();
Transaction txn = server.beginTransaction();
try {
server.deleteAllPermanent(EBasicVer.class, ids, txn);
txn.commit();
} finally {
txn.end();
}
List<String> loggedSql = LoggedSqlCollector.stop();
assertThat(loggedSql).hasSize(1);
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id in (?,?,?)");
}
private List<EBasicVer> beans(int count) {
List<EBasicVer> beans = new ArrayList<EBasicVer>();
for (int i = 0; i < count; i++) {
@@ -12,10 +12,9 @@ import static org.assertj.core.api.Assertions.assertThat;
public class EbeanServer_deleteByIdTest {
@Test
public void deleteAllById() {
public void deleteById() {
EBasicVer someBean = bean("foo1");
Ebean.save(someBean);
// act
@@ -28,7 +27,23 @@ public class EbeanServer_deleteByIdTest {
}
@Test
public void deleteAllById_withTransaction() {
public void deletePermanentById() {
EBasicVer someBean = bean("foo1");
Ebean.save(someBean);
// act
LoggedSqlCollector.start();
Ebean.deletePermanent(EBasicVer.class, someBean.getId());
List<String> loggedSql = LoggedSqlCollector.stop();
assertThat(loggedSql).hasSize(1);
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
}
@Test
public void deleteById_withTransaction() {
EBasicVer someBean = bean("foo1");
Ebean.save(someBean);
@@ -48,6 +63,27 @@ public class EbeanServer_deleteByIdTest {
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
}
@Test
public void deletePermanentById_withTransaction() {
EBasicVer someBean = bean("foo2");
Ebean.save(someBean);
EbeanServer server = Ebean.getDefaultServer();
// act
LoggedSqlCollector.start();
Transaction txn = server.beginTransaction();
try {
server.deletePermanent(EBasicVer.class, someBean.getId(), txn);
txn.commit();
} finally {
txn.end();
}
List<String> loggedSql = LoggedSqlCollector.stop();
assertThat(loggedSql).hasSize(1);
assertThat(loggedSql.get(0)).contains("delete from e_basicver where id = ?");
}
private EBasicVer bean(String name) {
EBasicVer bean = new EBasicVer();
bean.setName(name);
@@ -575,6 +575,16 @@ public class TDSpiEbeanServer implements SpiEbeanServer {
return 0;
}
@Override
public int deletePermanent(Class<?> beanType, Object id) {
return 0;
}
@Override
public int deletePermanent(Class<?> beanType, Object id, Transaction transaction) {
return 0;
}
@Override
public int execute(SqlUpdate updSql) {
return 0;
@@ -765,6 +775,16 @@ public class TDSpiEbeanServer implements SpiEbeanServer {
}
@Override
public void deleteAllPermanent(Class<?> beanType, Collection<?> ids) {
}
@Override
public void deleteAllPermanent(Class<?> beanType, Collection<?> ids, Transaction transaction) {
}
@Override
public int saveAll(Collection<?> beans, Transaction transaction) throws OptimisticLockException {
return 0;
@@ -82,7 +82,6 @@ public class DocLinkTest extends BaseTestCase {
Ebean.delete(link1);
}
@Test
public void testDeletePermanent_whenPublished2() {
@@ -17,6 +17,13 @@ public class Album extends BaseModel {
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
private Cover cover;
public Album(String name) {
this.name = name;
}
public Album() {
}
public String getName() {
return this.name;
}
@@ -25,6 +25,13 @@ public class Cover extends Model {
protected String s3Url;
public Cover() {
}
public Cover(String s3Url) {
this.s3Url = s3Url;
}
public String getS3Url() {
return this.s3Url;
}
@@ -0,0 +1,263 @@
package com.avaje.tests.model.onetoone.album;
import com.avaje.ebean.Ebean;
import com.avaje.ebean.EbeanServer;
import com.avaje.ebean.Transaction;
import org.avaje.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class DeleteById_SoftDelete_Tests {
@Test
public void ebean_deleteById_when_softDelete() {
Cover cover = new Cover("a1");
cover.save();
LoggedSqlCollector.start();
Ebean.delete(Cover.class, cover.getId());
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("update cover set deleted=true where id = ?");
cover.deletePermanent();
}
@Test
public void deleteById_when_softDelete() {
Cover cover = new Cover("a1");
cover.save();
LoggedSqlCollector.start();
Ebean.getDefaultServer().delete(Cover.class, cover.getId(), null);
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("update cover set deleted=true where id = ?");
cover.deletePermanent();
}
@Test
public void deletePermanentById_when_softDelete() {
Cover cover = new Cover("a2");
cover.save();
LoggedSqlCollector.start();
Ebean.getDefaultServer().deletePermanent(Cover.class, cover.getId(), null);
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("delete from cover where id = ?");
}
@Test
public void deleteAllById_when_softDelete() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
server.deleteAll(Cover.class, ids(beans));
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("update cover set deleted=true where id in (?,?)");
}
@Test
public void deleteAllById_when_softDelete_withTransaction() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
Transaction transaction = server.beginTransaction();
try {
server.deleteAll(Cover.class, ids(beans), transaction);
server.commitTransaction();
} finally {
server.endTransaction();
}
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("update cover set deleted=true where id in (?,?)");
}
@Test
public void ebean_deleteAllPermanentById_when_softDelete() {
List<Cover> beans = beans(2);
Ebean.saveAll(beans);
LoggedSqlCollector.start();
Ebean.deleteAllPermanent(Cover.class, ids(beans));
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("delete from cover where id in (?,?)");
}
@Test
public void deleteAllPermanentById_when_softDelete() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
server.deleteAllPermanent(Cover.class, ids(beans));
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("delete from cover where id in (?,?)");
}
@Test
public void deleteAllPermanentById_when_softDelete_withTransaction() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
Transaction transaction = server.beginTransaction();
try {
server.deleteAllPermanent(Cover.class, ids(beans), transaction);
server.commitTransaction();
} finally {
server.endTransaction();
}
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(1);
assertThat(sql.get(0)).contains("delete from cover where id in (?,?)");
}
@Test
public void ebean_deleteAll_when_softDelete() {
List<Cover> beans = beans(2);
Ebean.saveAll(beans);
LoggedSqlCollector.start();
Ebean.deleteAll(beans);
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("update cover set s3url=?, deleted=? where id=?");
}
@Test
public void deleteAll_when_softDelete() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
server.deleteAll(beans);
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("update cover set s3url=?, deleted=? where id=?");
}
@Test
public void deleteAll_when_softDelete_withTransaction() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
Transaction transaction = server.beginTransaction();
try {
server.deleteAll(beans, transaction);
server.commitTransaction();
} finally {
server.endTransaction();
}
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("update cover set s3url=?, deleted=? where id=?");
}
@Test
public void deleteAllPermanent_when_softDelete() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
server.deleteAllPermanent(beans);
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("delete from cover where id=?");
}
@Test
public void deleteAllPermanent_when_softDelete_withTransaction() {
EbeanServer server = Ebean.getDefaultServer();
List<Cover> beans = beans(2);
server.saveAll(beans);
LoggedSqlCollector.start();
Transaction transaction = server.beginTransaction();
try {
server.deleteAllPermanent(beans, transaction);
server.commitTransaction();
} finally {
server.endTransaction();
}
List<String> sql = LoggedSqlCollector.stop();
assertThat(sql).hasSize(2);
assertThat(sql.get(0)).contains("delete from cover where id=?");
}
private List<Long> ids(List<Cover> beans) {
List<Long> ids = new ArrayList<Long>();
for (Cover someBean : beans) {
ids.add(someBean.getId());
}
return ids;
}
private List<Cover> beans(int count) {
List<Cover> beans = new ArrayList<Cover>();
for (int i = 0; i < count; i++) {
beans.add(new Cover("delById " + i));
}
return beans;
}
}