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));
class DatabaseMigration {
private static currentVersion = 16;
private static currentVersion = 17;
private queryTimeout = 120000;
private statisticsAddedIndexed = false;
@ -180,6 +180,10 @@ class DatabaseMigration {
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();
} catch (e) {
connection.release();

View file

@ -8,6 +8,7 @@ interface Pool {
link: string;
regexes: string[];
addresses: string[];
slug: string;
}
class PoolsParser {
@ -42,6 +43,7 @@ class PoolsParser {
'link': (<Pool>coinbaseTags[i][1]).link,
'regexes': [coinbaseTags[i][0]],
'addresses': [],
'slug': ''
});
}
logger.debug('Parse payout_addresses');
@ -52,6 +54,7 @@ class PoolsParser {
'link': (<Pool>addressesTags[i][1]).link,
'regexes': [],
'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 slug = poolsJson['slugs'][poolNames[i]];
if (existingPools.find((pool) => pool.name === poolNames[i]) !== undefined) {
logger.debug(`Update '${finalPoolName}' mining pool`);
finalPoolDataUpdate.push({
'name': finalPoolName,
'link': match[0].link,
'regexes': allRegexes,
'addresses': allAddresses,
'slug': slug
});
} else {
logger.debug(`Add '${finalPoolName}' mining pool`);
@ -106,6 +110,7 @@ class PoolsParser {
'link': match[0].link,
'regexes': allRegexes,
'addresses': allAddresses,
'slug': slug
});
}
}
@ -126,7 +131,8 @@ class PoolsParser {
updateQueries.push(`
UPDATE pools
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}'
;`);
}
@ -156,11 +162,17 @@ class PoolsParser {
try {
const [rows]: any[] = await connection.query({ sql: 'SELECT name from pools where name="Unknown"', timeout: 120000 });
if (rows.length === 0) {
logger.debug('Manually inserting "Unknown" mining pool into the databse');
await connection.query({
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) {
logger.err('Unable to insert "Unknown" mining pool');