From c6fa8c6172075b4f44d8985f08893ca205d4d845 Mon Sep 17 00:00:00 2001 From: nymkappa Date: Tue, 12 Jul 2022 20:18:41 +0200 Subject: [PATCH 1/3] Format mysql query so I can actually update it --- backend/src/api/explorer/nodes.api.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/backend/src/api/explorer/nodes.api.ts b/backend/src/api/explorer/nodes.api.ts index 0c63d7e84..01a583498 100644 --- a/backend/src/api/explorer/nodes.api.ts +++ b/backend/src/api/explorer/nodes.api.ts @@ -4,7 +4,20 @@ import DB from '../../database'; class NodesApi { public async $getNode(public_key: string): Promise { try { - const query = `SELECT nodes.*, (SELECT COUNT(*) FROM channels WHERE channels.status < 2 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)) AS channel_count, (SELECT SUM(capacity) FROM channels WHERE channels.status < 2 AND (channels.node1_public_key = ? OR channels.node2_public_key = ?)) AS capacity, (SELECT AVG(capacity) FROM channels WHERE status < 2 AND (node1_public_key = ? OR node2_public_key = ?)) AS channels_capacity_avg FROM nodes WHERE public_key = ?`; + const query = ` + SELECT nodes.*, + (SELECT Count(*) + FROM channels + WHERE channels.status < 2 AND ( channels.node1_public_key = ? OR channels.node2_public_key = ? )) AS channel_count, + (SELECT Sum(capacity) + FROM channels + WHERE channels.status < 2 AND ( channels.node1_public_key = ? OR channels.node2_public_key = ? )) AS capacity, + (SELECT Avg(capacity) + FROM channels + WHERE status < 2 AND ( node1_public_key = ? OR node2_public_key = ? )) AS channels_capacity_avg + FROM nodes + WHERE public_key = ? + `; const [rows]: any = await DB.query(query, [public_key, public_key, public_key, public_key, public_key, public_key, public_key]); return rows[0]; } catch (e) { From f2983e28a38e0bb89180f509bcf12a673fa13288 Mon Sep 17 00:00:00 2001 From: nymkappa Date: Tue, 12 Jul 2022 21:07:38 +0200 Subject: [PATCH 2/3] Show city, country and AS name in node page when available --- backend/src/api/explorer/nodes.api.ts | 13 +++++++++++-- frontend/src/app/lightning/node/node.component.html | 13 +++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/backend/src/api/explorer/nodes.api.ts b/backend/src/api/explorer/nodes.api.ts index 01a583498..1f255dd70 100644 --- a/backend/src/api/explorer/nodes.api.ts +++ b/backend/src/api/explorer/nodes.api.ts @@ -5,7 +5,7 @@ class NodesApi { public async $getNode(public_key: string): Promise { try { const query = ` - SELECT nodes.*, + SELECT nodes.*, geo_names_as.names as as_organization, geo_names_city.names as city, geo_names_country.names as country, (SELECT Count(*) FROM channels WHERE channels.status < 2 AND ( channels.node1_public_key = ? OR channels.node2_public_key = ? )) AS channel_count, @@ -16,10 +16,19 @@ class NodesApi { FROM channels WHERE status < 2 AND ( node1_public_key = ? OR node2_public_key = ? )) AS channels_capacity_avg FROM nodes + LEFT JOIN geo_names geo_names_as on geo_names_as.id = as_number + LEFT JOIN geo_names geo_names_city on geo_names_city.id = city_id + LEFT JOIN geo_names geo_names_country on geo_names_country.id = country_id WHERE public_key = ? `; const [rows]: any = await DB.query(query, [public_key, public_key, public_key, public_key, public_key, public_key, public_key]); - return rows[0]; + if (rows.length > 0) { + rows[0].as_organization = JSON.parse(rows[0].as_organization); + rows[0].city = JSON.parse(rows[0].city); + rows[0].country = JSON.parse(rows[0].country); + return rows[0]; + } + return null; } catch (e) { logger.err('$getNode error: ' + (e instanceof Error ? e.message : e)); throw e; diff --git a/frontend/src/app/lightning/node/node.component.html b/frontend/src/app/lightning/node/node.component.html index cf09c8868..8467c2d48 100644 --- a/frontend/src/app/lightning/node/node.component.html +++ b/frontend/src/app/lightning/node/node.component.html @@ -33,6 +33,13 @@ + + Location + + {{ node.country.en }} + ({{ node.city.en }}) + + @@ -56,6 +63,12 @@ Color
{{ node.color }}
+ + ISP + + {{ node.as_organization }} + + From 6e09a1c96b1d0954b39f367eb8acd23f8b0aa0b5 Mon Sep 17 00:00:00 2001 From: nymkappa Date: Tue, 12 Jul 2022 21:28:02 +0200 Subject: [PATCH 3/3] Show division and ASN number --- backend/src/api/explorer/nodes.api.ts | 5 ++++- frontend/src/app/lightning/node/node.component.html | 13 +++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/backend/src/api/explorer/nodes.api.ts b/backend/src/api/explorer/nodes.api.ts index 1f255dd70..590ed1f20 100644 --- a/backend/src/api/explorer/nodes.api.ts +++ b/backend/src/api/explorer/nodes.api.ts @@ -5,7 +5,8 @@ class NodesApi { public async $getNode(public_key: string): Promise { try { const query = ` - SELECT nodes.*, geo_names_as.names as as_organization, geo_names_city.names as city, geo_names_country.names as country, + SELECT nodes.*, geo_names_as.names as as_organization, geo_names_city.names as city, + geo_names_country.names as country, geo_names_subdivision.names as subdivision, (SELECT Count(*) FROM channels WHERE channels.status < 2 AND ( channels.node1_public_key = ? OR channels.node2_public_key = ? )) AS channel_count, @@ -18,12 +19,14 @@ class NodesApi { FROM nodes LEFT JOIN geo_names geo_names_as on geo_names_as.id = as_number LEFT JOIN geo_names geo_names_city on geo_names_city.id = city_id + LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = subdivision_id LEFT JOIN geo_names geo_names_country on geo_names_country.id = country_id WHERE public_key = ? `; const [rows]: any = await DB.query(query, [public_key, public_key, public_key, public_key, public_key, public_key, public_key]); if (rows.length > 0) { rows[0].as_organization = JSON.parse(rows[0].as_organization); + rows[0].subdivision = JSON.parse(rows[0].subdivision); rows[0].city = JSON.parse(rows[0].city); rows[0].country = JSON.parse(rows[0].country); return rows[0]; diff --git a/frontend/src/app/lightning/node/node.component.html b/frontend/src/app/lightning/node/node.component.html index 8467c2d48..aae920530 100644 --- a/frontend/src/app/lightning/node/node.component.html +++ b/frontend/src/app/lightning/node/node.component.html @@ -33,12 +33,13 @@ - + Location - - {{ node.country.en }} - ({{ node.city.en }}) - + {{ node.city.en }}, {{ node.subdivision.en }}
{{ node.country.en }} + + + Location + {{ node.country.en }} @@ -66,7 +67,7 @@ ISP - {{ node.as_organization }} + {{ node.as_organization }} [ASN {{node.as_number}}]