Skip to content

Commit

Permalink
[backend/frontend] Fix simulation import (#1067)
Browse files Browse the repository at this point in the history
  • Loading branch information
RomuDeuxfois authored Jun 14, 2024
1 parent 3a89f05 commit 6c12f36
Show file tree
Hide file tree
Showing 16 changed files with 712 additions and 381 deletions.
432 changes: 265 additions & 167 deletions openbas-api/src/main/java/io/openbas/importer/V1_DataImporter.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,32 +1,45 @@
package io.openbas.migration;

import lombok.extern.java.Log;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import org.springframework.stereotype.Component;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

@Log
@Component
public class V3_16__Add_array_union_agg_method extends BaseJavaMigration {

@Override
public void migrate(Context context) throws Exception {
Connection connection = context.getConnection();
Statement select = connection.createStatement();
select.execute("CREATE FUNCTION array_union(a ANYARRAY, b ANYARRAY)"
+ " RETURNS ANYARRAY AS"
+ " $$"
+ "SELECT array_agg(DISTINCT x)"
+ "FROM ("
+ " SELECT unnest(a) x"
+ " UNION ALL SELECT unnest(b)"
+ " ) AS u"
+ " $$ LANGUAGE SQL;"
+ "CREATE AGGREGATE array_union_agg(ANYARRAY) ("
+ " SFUNC = array_union,"
+ " STYPE = ANYARRAY,"
+ " INITCOND = '{}'"
+ ");");
try (Statement statement = connection.createStatement()) {
ResultSet rs = statement.executeQuery(
"SELECT EXISTS (SELECT 1 FROM pg_proc WHERE proname = 'array_union');");

boolean functionExists = false;
if (rs.next()) {
functionExists = rs.getBoolean(1);
}
if (!functionExists) {
statement.execute("CREATE FUNCTION array_union(a ANYARRAY, b ANYARRAY)"
+ " RETURNS ANYARRAY AS"
+ " $$"
+ "SELECT array_agg(DISTINCT x)"
+ "FROM ("
+ " SELECT unnest(a) x"
+ " UNION ALL SELECT unnest(b)"
+ " ) AS u"
+ " $$ LANGUAGE SQL;"
+ "CREATE AGGREGATE array_union_agg(ANYARRAY) ("
+ " SFUNC = array_union,"
+ " STYPE = ANYARRAY,"
+ " INITCOND = '{}'"
+ ");");
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -800,7 +800,11 @@ public void exerciseExport(@NotBlank @PathVariable final String exerciseId,
importExport.setUsers(players);
objectMapper.addMixIn(User.class, ExerciseExportMixins.User.class);
// organizations
List<Organization> organizations = players.stream().map(User::getOrganization).filter(Objects::nonNull).toList();
List<Organization> organizations = players.stream()
.map(User::getOrganization)
.filter(Objects::nonNull)
.distinct()
.toList();
exerciseTags.addAll(organizations.stream().flatMap(org -> org.getTags().stream()).toList());
importExport.setOrganizations(organizations);
objectMapper.addMixIn(Organization.class, ExerciseExportMixins.Organization.class);
Expand Down
Loading

0 comments on commit 6c12f36

Please sign in to comment.