diff --git a/dbrepo-database-service/pom.xml b/dbrepo-database-service/pom.xml index 8c0a29fdafd988f3b63fb82a694b4d25d53f2dfb..dc1a4e444643c1aa0f41918c0852b2a3e096d7cf 100644 --- a/dbrepo-database-service/pom.xml +++ b/dbrepo-database-service/pom.xml @@ -120,6 +120,11 @@ <artifactId>spring-data-opensearch-starter</artifactId> <version>${opensearch-client.version}</version> </dependency> + <dependency> + <groupId>org.opensearch.client</groupId> + <artifactId>opensearch-java</artifactId> + <version>2.5.0</version> + </dependency> <!-- Entity, API, QueryStore --> <dependency> <groupId>at.tuwien</groupId> diff --git a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java index 93c3564be7fa4897ddee055966b88f237f53eafb..0725475a576d5db1a134aef6c6cbcde40ac9cdd1 100644 --- a/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java +++ b/dbrepo-database-service/services/src/main/java/at/tuwien/service/impl/MariaDbServiceImpl.java @@ -1,6 +1,7 @@ package at.tuwien.service.impl; import at.tuwien.api.database.DatabaseCreateDto; +import at.tuwien.api.database.DatabaseDto; import at.tuwien.api.database.DatabaseModifyVisibilityDto; import at.tuwien.api.database.DatabaseTransferDto; import at.tuwien.entities.container.Container; @@ -107,11 +108,10 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe } /* save in metadata database */ databaseRepository.deleteById(databaseId); - log.info("Deleted database with id {}", databaseId); - log.trace("deleted database {}", database); + log.info("Deleted database with id {} in metadata database", databaseId); // delete in database_index - elastic search databaseIdxRepository.deleteById(databaseId); - log.info("Deleted database in elastic search with id {}", databaseId); + log.info("Deleted database with id {} in open search database", databaseId); } @Override @@ -154,10 +154,11 @@ public class MariaDbServiceImpl extends HibernateConnector implements DatabaseSe log.info("Created user {} on database with owner access", user.getUsername()); /* save in metadata database */ final Database entity = databaseRepository.save(database); - log.info("Created database with id {}", entity.getId()); + log.info("Created database with id {} in metadata database", entity.getId()); /* save in database_index - elastic search */ - databaseIdxRepository.save(databaseMapper.databaseToDatabaseDto(entity)); - log.info("Saved database in elastic search with id {}", entity.getId()); + final DatabaseDto databaseDto = databaseMapper.databaseToDatabaseDto(entity); + databaseIdxRepository.save(databaseDto); + log.info("Created database with id {} in open search database", entity.getId()); return entity; } diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java index 24a779913012676f65ee7ede7a8ebd6ba48c6fdd..0717ed8c486efa75b443a0a8c0f68b0937a773f8 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/DatabaseDto.java @@ -14,6 +14,7 @@ import lombok.extern.jackson.Jacksonized; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.time.Instant; import java.util.List; @@ -36,6 +37,7 @@ public class DatabaseDto { private String name; @NotBlank + @Field(name = "exchange_name") @JsonProperty("exchange_name") @Schema(example = "dbrepo/air_quality") private String exchangeName; @@ -43,6 +45,7 @@ public class DatabaseDto { private IdentifierDto identifier; @NotBlank + @Field(name = "internal_name") @JsonProperty("internal_name") @Schema(example = "weather_australia") private String internalName; @@ -54,6 +57,7 @@ public class DatabaseDto { private List<ViewBriefDto> views; + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java index 8aeb060772539902079964a2b5cc67823e0f9889..031aaadd0a53e24de18332f765c5f34e2a11276a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/ViewDto.java @@ -11,6 +11,7 @@ import lombok.extern.jackson.Jacksonized; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.time.Instant; import java.util.UUID; @@ -29,6 +30,8 @@ public class ViewDto { private Long id; @NotNull + @Field(name = "database_id") + @JsonProperty("database_id") private Long vdbid; @NotNull @@ -40,13 +43,16 @@ public class ViewDto { private String name; @NotBlank + @Field(name = "air_quality") @Schema(example = "air_quality") private String internalName; + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; + @Field(name = "initial_view") @JsonProperty("initial_view") @Schema(example = "true", description = "True if it is the default view for the database") private Boolean isInitialView; @@ -66,6 +72,7 @@ public class ViewDto { @NotNull private UserDto creator; + @Field(name = "last_modified") @JsonProperty("last_modified") @Schema(example = "2020-08-04 11:12:00") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC") diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java index 8696a092787c011c10a0079b68439a33fbedf11a..8df51261bd297a7e113fc6f53f05b1ed4d4b867a 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/TableDto.java @@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.time.Instant; import java.util.List; @@ -27,10 +28,12 @@ import java.util.List; public class TableDto { @NotNull + @Field(name = "container_id") @JsonProperty("container_id") private Long containerId; @NotNull + @Field(name = "database_id") @JsonProperty("database_id") private Long databaseId; @@ -42,6 +45,7 @@ public class TableDto { private String name; @NotBlank(message = "internalName is required") + @Field(name = "internal_name") @JsonProperty("internal_name") @Schema(example = "air_quality") private String internalName; @@ -53,11 +57,13 @@ public class TableDto { private UserBriefDto owner; @NotBlank(message = "queueName is required") + @Field(name = "queue_name") @JsonProperty("queue_name") @Schema(example = "dbrepo/air_quality/air_quality") private String queueName; @NotBlank(message = "routingKey is required") + @Field(name = "routing_key") @JsonProperty("routing_key") @Schema(example = "dbrepo/air_quality/air_quality/1") private String routingKey; @@ -67,6 +73,7 @@ public class TableDto { private String description; @NotNull(message = "isPublic is required") + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java index 68c7934e180b1eee135010cadd42239c0e8fcd1c..6f3b30b04d5c25c82955d60a6a81faee1aaa2b86 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/database/table/columns/ColumnDto.java @@ -12,6 +12,7 @@ import lombok.extern.jackson.Jacksonized; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; @Getter @Setter @@ -24,14 +25,17 @@ import org.springframework.data.elasticsearch.annotations.Document; public class ColumnDto { @NotNull + @Field(name = "container_id") @JsonProperty("container_id") private Long containerId; @NotNull + @Field(name = "database_id") @JsonProperty("database_id") private Long databaseId; @NotNull + @Field(name = "table_id") @JsonProperty("table_id") private Long tableId; @@ -43,28 +47,34 @@ public class ColumnDto { private String name; @NotBlank + @Field(name = "internal_name") @JsonProperty("internal_name") @Schema(example = "mdb_date") private String internalName; + @Field(name = "date_format") @JsonProperty("date_format") @org.springframework.data.annotation.Transient private ImageDateDto dateFormat; @NotNull + @Field(name = "auto_generated") @JsonProperty("auto_generated") @Schema(example = "false") private Boolean autoGenerated; @NotNull + @Field(name = "is_primary_key") @JsonProperty("is_primary_key") @Schema(example = "true") private Boolean isPrimaryKey; + @Field(name = "index_length") @JsonProperty("index_length") private Integer indexLength; @NotNull + @Field(name = "column_type") @JsonProperty("column_type") @Schema(example = "string") private ColumnTypeDto columnType; @@ -77,15 +87,18 @@ public class ColumnDto { private UnitDto unit; @NotNull + @Field(name = "is_public") @JsonProperty("is_public") @Schema(example = "true") private Boolean isPublic; @NotNull + @Field(name = "is_null_allowed") @JsonProperty("is_null_allowed") @Schema(example = "false") private Boolean isNullAllowed; + @Field(name = "enum_values") @JsonProperty("enum_values") @Parameter(description = "enum values, only considered when type = ENUM") private String[] enumValues; diff --git a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java index 88a86abd65c00790fc1a3ee45b2162ea6ffa8c4b..2a8cfd4fe4e164a9f11a2d5b2e69c9073c0e36dc 100644 --- a/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-db/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -8,6 +8,7 @@ import lombok.*; import jakarta.validation.constraints.NotNull; import lombok.extern.jackson.Jacksonized; import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; import java.util.List; import java.util.UUID; @@ -66,6 +67,7 @@ public class UserDto { private String email; @NotNull + @Field(name = "email_verified") @JsonProperty("email_verified") @Schema(example = "true") @org.springframework.data.annotation.Transient diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java index ab94de26eb409e95a36ce0bda166c5b50b78cf30..dd34acefa6e12f8050e14c64886c416387ea1a83 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java @@ -8,7 +8,7 @@ import org.springframework.stereotype.Repository; import java.util.Optional; @Repository -public interface TableColumnRepository extends JpaRepository<TableColumn, TableColumnKey> { +public interface TableColumnRepository extends JpaRepository<TableColumn, Long> { Optional<TableColumn> findByIdAndTidAndCdbid(Long id, Long tid, Long cdbid); diff --git a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java index 7cb9a8636dc63a1a1b61f4d16f44069e1d43a8ef..e259d39c46b253a94107caa3fb836bd766ce1f7b 100644 --- a/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java +++ b/dbrepo-query-service/services/src/main/java/at/tuwien/service/impl/ViewServiceImpl.java @@ -105,10 +105,9 @@ public class ViewServiceImpl extends HibernateConnector implements ViewService { } /* delete in metadata database */ viewRepository.delete(view); - log.info("Deleted view with id {}", view.getId()); - log.trace("deleted view {}", view); + log.info("Deleted view with id {} in metadata database", id); viewIdxRepository.deleteById(id); - log.info("Deleted view with id {} in elastic search", id); + log.info("Deleted view with id {} in open search database", id); } @Override @@ -154,10 +153,9 @@ public class ViewServiceImpl extends HibernateConnector implements ViewService { .columns(columns) .build(); final View view = viewRepository.save(entity); - log.info("Created view with id {}", view.getId()); - log.trace("created view {}", view); + log.info("Created view with id {} in metadata database", view.getId()); viewIdxRepository.save(viewMapper.viewToViewDto(view)); - log.info("Created view with id {} in elastic search", view.getId()); + log.info("Created view with id {} in open search database", view.getId()); return view; } diff --git a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java index b52cc85d3552636e4463a848f651c45e6292a2cc..de41d04da23a85fbaec1c8571b9394f14427ece2 100644 --- a/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java +++ b/dbrepo-semantics-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java @@ -6,6 +6,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableColumnRepository extends JpaRepository<TableColumn, TableColumnKey> { +public interface TableColumnRepository extends JpaRepository<TableColumn, Long> { } diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java index b52cc85d3552636e4463a848f651c45e6292a2cc..de41d04da23a85fbaec1c8571b9394f14427ece2 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/repository/mdb/TableColumnRepository.java @@ -6,6 +6,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @Repository -public interface TableColumnRepository extends JpaRepository<TableColumn, TableColumnKey> { +public interface TableColumnRepository extends JpaRepository<TableColumn, Long> { } diff --git a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java index aada8f5a9261ae76cf93ad29771d2e83f8688fb0..463dc7edd8f4c699d2c90cd2c80b69bbe83a66b8 100644 --- a/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java +++ b/dbrepo-table-service/services/src/main/java/at/tuwien/service/impl/TableServiceImpl.java @@ -91,7 +91,7 @@ public class TableServiceImpl extends HibernateConnector implements TableService tableRepository.delete(table); log.info("Deleted table with id {} in metadata database", table.getId()); tableIdxRepository.delete(tableMapper.tableToTableDto(table)); - log.info("Deleted table with id {} in search service", table.getId()); + log.info("Deleted table with id {} in open search database", table.getId()); } @Override @@ -190,13 +190,13 @@ public class TableServiceImpl extends HibernateConnector implements TableService } /* save in metadata database */ final Table table = tableRepository.save(entity); - log.info("Created table with id {}", table.getId()); - log.trace("created table {}", table); + log.info("Created table with id {} in metadata database", table.getId()); /* save in database_index - elastic search */ tableIdxRepository.save(tableMapper.tableToTableDto(table)); + log.info("Created table with id {} in open search database", table.getId()); /* save in column_index - elastic search */ tableColumnIdxRepository.saveAll(tableMapper.tableToTableDto(table).getColumns()); - log.info("Saved table with id {} in elastic search", table.getId()); + log.info("Saved table columns with table id {} in open search database", table.getId()); return table; } diff --git a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index a46bb17a13875e050dc38d8a76f500be351dbcc2..b3e4a75d854de7fdd8085eae3cc6423d9f10eb1f 100644 --- a/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-user-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -1,6 +1,7 @@ package at.tuwien.service.impl; import at.tuwien.api.auth.SignupRequestDto; +import at.tuwien.api.user.UserDto; import at.tuwien.api.user.UserPasswordDto; import at.tuwien.api.user.UserThemeSetDto; import at.tuwien.api.user.UserUpdateDto; @@ -8,8 +9,8 @@ import at.tuwien.entities.user.*; import at.tuwien.exception.*; import at.tuwien.mapper.UserMapper; import at.tuwien.repository.mdb.CredentialRepository; -import at.tuwien.repository.mdb.RoleMappingRepository; import at.tuwien.repository.mdb.UserRepository; +import at.tuwien.repository.sdb.UserIdxRepository; import at.tuwien.service.UserAttributeService; import at.tuwien.service.UserService; import lombok.extern.log4j.Log4j2; @@ -43,19 +44,18 @@ public class UserServiceImpl implements UserService { private final UserMapper userMapper; private final UserRepository userRepository; + private final UserIdxRepository userIdxRepository; private final UserAttributeService userAttributeService; private final CredentialRepository credentialRepository; - private final RoleMappingRepository roleMappingRepository; @Autowired - public UserServiceImpl(UserMapper userMapper, UserRepository userRepository, - UserAttributeService userAttributeService, CredentialRepository credentialRepository, - RoleMappingRepository roleMappingRepository) { + public UserServiceImpl(UserMapper userMapper, UserRepository userRepository, UserIdxRepository userIdxRepository, + UserAttributeService userAttributeService, CredentialRepository credentialRepository) { this.userMapper = userMapper; this.userRepository = userRepository; + this.userIdxRepository = userIdxRepository; this.userAttributeService = userAttributeService; this.credentialRepository = credentialRepository; - this.roleMappingRepository = roleMappingRepository; } @Override @@ -97,11 +97,16 @@ public class UserServiceImpl implements UserService { final UserAttribute userAttribute3 = userAttributeService.create(userMapper.tripleToUserAttribute(user.getId(), "affiliation", "")); credential.setUserId(user.getId()); + /* save in metadata database */ credential = credentialRepository.save(credential); user.setCredentials(List.of(credential)); user.setAttributes(List.of(userAttribute1, userAttribute2, userAttribute3)); user.setRoles(List.of(role)); - log.info("Created user with id {}", user.getId()); + log.info("Created user with id {} in metadata database", user.getId()); + /* save in open search database */ + final UserDto userDto = userMapper.userToUserDto(user); + userIdxRepository.save(userDto); + log.info("Created user with id {} in open search database", user.getId()); return user; }