You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2023/12/04 02:09:12 UTC
(james-project) 04/05: JAMES-2586 DomainList Should throw when insert duplicate or delete not found domain
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch postgresql
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 5da4c17336c080f71d35ccd544bbf14eb79ea434
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Nov 21 16:15:35 2023 +0700
JAMES-2586 DomainList Should throw when insert duplicate or delete not found domain
---
.../domainlist/postgres/PostgresDomainList.java | 35 ++++++++++++++--------
.../domainlist/postgres/PostgresDomainModule.java | 2 +-
2 files changed, 23 insertions(+), 14 deletions(-)
diff --git a/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainList.java b/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainList.java
index 6074b6babc..f4bfd90cee 100644
--- a/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainList.java
+++ b/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainList.java
@@ -19,6 +19,8 @@
package org.apache.james.domainlist.postgres;
+import static org.apache.james.domainlist.postgres.PostgresDomainModule.PostgresDomainTable.DOMAIN;
+
import java.util.List;
import java.util.Optional;
@@ -46,34 +48,41 @@ public class PostgresDomainList extends AbstractDomainList {
@Override
public void addDomain(Domain domain) throws DomainListException {
- postgresExecutor.executeVoid(dslContext -> Mono.from(dslContext.insertInto(PostgresDomainModule.PostgresDomainTable.TABLE_NAME, PostgresDomainModule.PostgresDomainTable.DOMAIN)
- .values(domain.asString())))
- .onErrorMap(DataAccessException.class, e -> new DomainListException(domain.name() + " already exists."))
- .block();
-
+ try {
+ postgresExecutor.executeVoid(dslContext -> Mono.from(dslContext.insertInto(PostgresDomainModule.PostgresDomainTable.TABLE_NAME, DOMAIN)
+ .values(domain.asString())))
+ .block();
+ } catch (DataAccessException exception) {
+ throw new DomainListException(domain.name() + " already exists.");
+ }
}
@Override
- protected List<Domain> getDomainListInternal() throws DomainListException {
+ protected List<Domain> getDomainListInternal() {
return postgresExecutor.executeRows(dsl -> Flux.from(dsl.selectFrom(PostgresDomainModule.PostgresDomainTable.TABLE_NAME)))
- .map(record -> Domain.of(record.get(PostgresDomainModule.PostgresDomainTable.DOMAIN)))
+ .map(record -> Domain.of(record.get(DOMAIN)))
.collectList()
.block();
}
@Override
- protected boolean containsDomainInternal(Domain domain) throws DomainListException {
+ protected boolean containsDomainInternal(Domain domain) {
return postgresExecutor.executeRow(dsl -> Mono.from(dsl.selectFrom(PostgresDomainModule.PostgresDomainTable.TABLE_NAME)
- .where(PostgresDomainModule.PostgresDomainTable.DOMAIN.eq(domain.asString()))))
+ .where(DOMAIN.eq(domain.asString()))))
.blockOptional()
.isPresent();
}
@Override
protected void doRemoveDomain(Domain domain) throws DomainListException {
- postgresExecutor.executeVoid(dslContext -> Mono.from(dslContext.deleteFrom(PostgresDomainModule.PostgresDomainTable.TABLE_NAME)
- .where(PostgresDomainModule.PostgresDomainTable.DOMAIN.eq(domain.asString()))))
- .onErrorMap(DataAccessException.class, e -> new DomainListException(domain.name() + " was not found"))
- .block();
+ boolean executed = postgresExecutor.executeRow(dslContext -> Mono.from(dslContext.deleteFrom(PostgresDomainModule.PostgresDomainTable.TABLE_NAME)
+ .where(DOMAIN.eq(domain.asString()))
+ .returning(DOMAIN)))
+ .blockOptional()
+ .isPresent();
+
+ if (!executed) {
+ throw new DomainListException(domain.name() + " was not found");
+ }
}
}
diff --git a/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainModule.java b/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainModule.java
index aa80839f9f..1d9fd110d0 100644
--- a/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainModule.java
+++ b/server/data/data-postgres/src/main/java/org/apache/james/domainlist/postgres/PostgresDomainModule.java
@@ -36,7 +36,7 @@ public interface PostgresDomainModule {
PostgresTable TABLE = PostgresTable.name(TABLE_NAME.getName())
.createTableStep(((dsl, tableName) -> dsl.createTableIfNotExists(tableName)
.column(DOMAIN)
- .constraint(DSL.primaryKey(DOMAIN))))
+ .primaryKey(DOMAIN)))
.disableRowLevelSecurity();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org