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);
}
}