public void copy()

in baremaps-core/src/main/java/org/apache/baremaps/openstreetmap/postgres/PostgresRelationRepository.java [271:299]


  public void copy(List<Relation> values) throws RepositoryException {
    if (values.isEmpty()) {
      return;
    }
    try (Connection connection = dataSource.getConnection()) {
      PGConnection pgConnection = connection.unwrap(PGConnection.class);
      try (CopyWriter writer = new CopyWriter(new PGCopyOutputStream(pgConnection, copy))) {
        writer.writeHeader();
        for (Relation value : values) {
          writer.startRow(10);
          writer.writeLong(value.id());
          writer.writeInteger(value.getInfo().getVersion());
          writer.writeInteger(value.getInfo().getUid());
          writer.writeLocalDateTime(value.getInfo().getTimestamp());
          writer.writeLong(value.getInfo().getChangeset());
          writer.writeJsonb(PostgresJsonbMapper.toJson(value.getTags()));
          writer.writeLongList(
              value.getMembers().stream().map(Member::getRef).collect(Collectors.toList()));
          writer.writeIntegerList(value.getMembers().stream().map(Member::getType)
              .map(MemberType::ordinal).collect(Collectors.toList()));
          writer
              .write(value.getMembers().stream().map(Member::getRole).collect(Collectors.toList()));
          writer.writeGeometry(value.getGeometry());
        }
      }
    } catch (IOException | SQLException ex) {
      throw new RepositoryException(ex);
    }
  }