aboutsummaryrefslogtreecommitdiff
path: root/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java')
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java39
1 files changed, 35 insertions, 4 deletions
diff --git a/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java b/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
index 9548815..d202882 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/peer/PeerServiceImpl.java
@@ -139,7 +139,7 @@ class PeerServiceImpl implements IPeerService {
.execute(params, f))
.compose(rows -> Future.succeededFuture(rows.iterator().next().getInteger(0) > 0)));
}
- if(futures.isEmpty()) {
+ if (futures.isEmpty()) {
Future.succeededFuture(false).onComplete(handler);
return this;
}
@@ -173,7 +173,7 @@ class PeerServiceImpl implements IPeerService {
.mapTo(PeerRowMapper.INSTANCE)
.execute(params, f))
.compose(peers -> {
- if(peers.iterator().hasNext())
+ if (peers.iterator().hasNext())
return Future.succeededFuture(peers.iterator().next());
return Future.succeededFuture(null);
})
@@ -190,8 +190,8 @@ class PeerServiceImpl implements IPeerService {
Future.<SqlResult<Void>>future(f -> SqlTemplate
.forUpdate(pool, "DELETE FROM peer WHERE id = #{id} AND asn = #{asn}")
.execute(params, f))
- .<Void>compose(voidSqlResult -> Future.succeededFuture(null))
- .onComplete(handler);
+ .<Void>compose(voidSqlResult -> Future.succeededFuture(null))
+ .onComplete(handler);
return this;
}
@@ -208,4 +208,35 @@ class PeerServiceImpl implements IPeerService {
.onComplete(handler);
return this;
}
+
+ @Nonnull
+ @Override
+ public IPeerService count(@Nonnull Handler<AsyncResult<Integer>> handler) {
+ SqlTemplate
+ .forQuery(pool, "SELECT COUNT(id) FROM peer")
+ .execute(null)
+ .compose(rows -> Future.succeededFuture(rows.iterator().next().getInteger(0)))
+ .onComplete(handler);
+ return this;
+ }
+
+ @Nonnull
+ @Override
+ public IPeerService listUnderNode(long nodeId, @Nonnull Handler<AsyncResult<List<Peer>>> handler) {
+ SqlTemplate
+ .forQuery(pool, "SELECT id, type, asn, ipv4, ipv6, " +
+ "wg_endpoint, wg_endpoint_port, " +
+ "wg_self_pubkey, wg_self_privkey, wg_peer_pubkey, wg_preshared_secret, " +
+ "provision_status, mpbgp, node FROM peer " +
+ "WHERE node = #{node}")
+ .mapTo(PeerRowMapper.INSTANCE)
+ .execute(Collections.singletonMap("node", nodeId))
+ .compose(peers -> {
+ final List<Peer> peerList = new ArrayList<>();
+ for (Peer peer : peers) peerList.add(peer);
+ return Future.succeededFuture(peerList);
+ })
+ .onComplete(handler);
+ return this;
+ }
}