Merge pull request #1446 from mempool/nymkappa/feature/pool-slug

Added slug into `pools` table
This commit is contained in:
wiz 2022-03-24 16:29:54 +00:00 committed by GitHub
commit 8114ffe1c8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 5 deletions

View file

@ -6,7 +6,7 @@ import logger from '../logger';
const sleep = (ms: number) => new Promise(res => setTimeout(res, ms)); const sleep = (ms: number) => new Promise(res => setTimeout(res, ms));
class DatabaseMigration { class DatabaseMigration {
private static currentVersion = 16; private static currentVersion = 17;
private queryTimeout = 120000; private queryTimeout = 120000;
private statisticsAddedIndexed = false; private statisticsAddedIndexed = false;
@ -180,6 +180,10 @@ class DatabaseMigration {
await this.$executeQuery(connection, 'TRUNCATE hashrates;'); // Need to re-index because we changed timestamps await this.$executeQuery(connection, 'TRUNCATE hashrates;'); // Need to re-index because we changed timestamps
} }
if (databaseSchemaVersion < 17 && isBitcoin === true) {
await this.$executeQuery(connection, 'ALTER TABLE `pools` ADD `slug` CHAR(50) NULL');
}
connection.release(); connection.release();
} catch (e) { } catch (e) {
connection.release(); connection.release();

View file

@ -8,6 +8,7 @@ interface Pool {
link: string; link: string;
regexes: string[]; regexes: string[];
addresses: string[]; addresses: string[];
slug: string;
} }
class PoolsParser { class PoolsParser {
@ -42,6 +43,7 @@ class PoolsParser {
'link': (<Pool>coinbaseTags[i][1]).link, 'link': (<Pool>coinbaseTags[i][1]).link,
'regexes': [coinbaseTags[i][0]], 'regexes': [coinbaseTags[i][0]],
'addresses': [], 'addresses': [],
'slug': ''
}); });
} }
logger.debug('Parse payout_addresses'); logger.debug('Parse payout_addresses');
@ -52,6 +54,7 @@ class PoolsParser {
'link': (<Pool>addressesTags[i][1]).link, 'link': (<Pool>addressesTags[i][1]).link,
'regexes': [], 'regexes': [],
'addresses': [addressesTags[i][0]], 'addresses': [addressesTags[i][0]],
'slug': ''
}); });
} }
@ -90,14 +93,15 @@ class PoolsParser {
} }
const finalPoolName = poolNames[i].replace(`'`, `''`); // To support single quote in names when doing db queries const finalPoolName = poolNames[i].replace(`'`, `''`); // To support single quote in names when doing db queries
const slug = poolsJson['slugs'][poolNames[i]];
if (existingPools.find((pool) => pool.name === poolNames[i]) !== undefined) { if (existingPools.find((pool) => pool.name === poolNames[i]) !== undefined) {
logger.debug(`Update '${finalPoolName}' mining pool`);
finalPoolDataUpdate.push({ finalPoolDataUpdate.push({
'name': finalPoolName, 'name': finalPoolName,
'link': match[0].link, 'link': match[0].link,
'regexes': allRegexes, 'regexes': allRegexes,
'addresses': allAddresses, 'addresses': allAddresses,
'slug': slug
}); });
} else { } else {
logger.debug(`Add '${finalPoolName}' mining pool`); logger.debug(`Add '${finalPoolName}' mining pool`);
@ -106,6 +110,7 @@ class PoolsParser {
'link': match[0].link, 'link': match[0].link,
'regexes': allRegexes, 'regexes': allRegexes,
'addresses': allAddresses, 'addresses': allAddresses,
'slug': slug
}); });
} }
} }
@ -126,7 +131,8 @@ class PoolsParser {
updateQueries.push(` updateQueries.push(`
UPDATE pools UPDATE pools
SET name='${finalPoolDataUpdate[i].name}', link='${finalPoolDataUpdate[i].link}', SET name='${finalPoolDataUpdate[i].name}', link='${finalPoolDataUpdate[i].link}',
regexes='${JSON.stringify(finalPoolDataUpdate[i].regexes)}', addresses='${JSON.stringify(finalPoolDataUpdate[i].addresses)}' regexes='${JSON.stringify(finalPoolDataUpdate[i].regexes)}', addresses='${JSON.stringify(finalPoolDataUpdate[i].addresses)}',
slug='${finalPoolDataUpdate[i].slug}'
WHERE name='${finalPoolDataUpdate[i].name}' WHERE name='${finalPoolDataUpdate[i].name}'
;`); ;`);
} }
@ -156,11 +162,17 @@ class PoolsParser {
try { try {
const [rows]: any[] = await connection.query({ sql: 'SELECT name from pools where name="Unknown"', timeout: 120000 }); const [rows]: any[] = await connection.query({ sql: 'SELECT name from pools where name="Unknown"', timeout: 120000 });
if (rows.length === 0) { if (rows.length === 0) {
logger.debug('Manually inserting "Unknown" mining pool into the databse');
await connection.query({ await connection.query({
sql: `INSERT INTO pools(name, link, regexes, addresses) sql: `INSERT INTO pools(name, link, regexes, addresses)
VALUES("Unknown", "https://learnmeabitcoin.com/technical/coinbase-transaction", "[]", "[]"); VALUES("Unknown", "https://learnmeabitcoin.com/technical/coinbase-transaction", "[]", "[]", "unknown");
`}); `});
} else {
await connection.query(`UPDATE pools
SET name='Unknown', link='https://learnmeabitcoin.com/technical/coinbase-transaction',
regexes='[]', addresses='[]',
slug='unknown'
WHERE name='Unknown'
`)
} }
} catch (e) { } catch (e) {
logger.err('Unable to insert "Unknown" mining pool'); logger.err('Unable to insert "Unknown" mining pool');