2022-01-05 15:41:14 +09:00
|
|
|
import { DB } from "../database";
|
2022-01-06 19:59:33 +09:00
|
|
|
import { PoolInfo, PoolTag } from "../mempool.interfaces"
|
2022-01-05 15:41:14 +09:00
|
|
|
|
|
|
|
class PoolsRepository {
|
|
|
|
/**
|
|
|
|
* Get all pools tagging info
|
|
|
|
*/
|
2022-01-06 19:59:33 +09:00
|
|
|
public async $getPools(): Promise<PoolTag[]> {
|
2022-01-05 15:41:14 +09:00
|
|
|
const connection = await DB.pool.getConnection();
|
2022-01-06 19:59:33 +09:00
|
|
|
const [rows] = await connection.query("SELECT * FROM pools;");
|
2022-01-05 15:41:14 +09:00
|
|
|
connection.release();
|
2022-01-06 19:59:33 +09:00
|
|
|
return <PoolTag[]>rows;
|
2022-01-05 15:41:14 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get unknown pool tagging info
|
|
|
|
*/
|
2022-01-06 19:59:33 +09:00
|
|
|
public async $getUnknownPool(): Promise<PoolTag> {
|
|
|
|
const connection = await DB.pool.getConnection();
|
|
|
|
const [rows] = await connection.query("SELECT * FROM pools where name = 'Unknown'");
|
|
|
|
connection.release();
|
|
|
|
return <PoolTag>rows[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get basic pool info and block count
|
|
|
|
*/
|
|
|
|
public async $getPoolsInfo(interval: string = "100 YEARS"): Promise<PoolInfo[]> {
|
|
|
|
const connection = await DB.pool.getConnection();
|
|
|
|
const [rows] = await connection.query(`
|
|
|
|
SELECT COUNT(height) as blockCount, pool_id as poolId, pools.name as name, pools.link as link
|
|
|
|
FROM blocks
|
|
|
|
JOIN pools on pools.id = pool_id
|
2022-01-18 17:37:04 +09:00
|
|
|
WHERE blocks.blockTimestamp BETWEEN DATE_SUB(NOW(), INTERVAL ${interval}) AND NOW()
|
2022-01-06 19:59:33 +09:00
|
|
|
GROUP BY pool_id
|
|
|
|
ORDER BY COUNT(height) DESC;
|
|
|
|
`);
|
|
|
|
connection.release();
|
|
|
|
return <PoolInfo[]>rows;
|
|
|
|
}
|
2022-01-05 15:41:14 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
export default new PoolsRepository();
|