diff --git a/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts b/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts index 2d5850457786ce1f91b40284d31191807d491266..b7689eb87a2ff125b39026b171305b8496a764ac 100644 --- a/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts +++ b/app/lib/dal/indexDAL/abstract/software/ForksDAO.ts @@ -23,6 +23,13 @@ export interface ForksDAO { getNextForkBlocks(number:number, hash:string): Promise<DBBlock[]> + /** + * Find any fork block whose number is between `numberStart` and `maxNumber`, both included, and whose medianTime is + * >= `medianTimeStart`. + * @param numberStart + * @param medianTimeStart + * @param maxNumber + */ getPotentialForkBlocks(numberStart:number, medianTimeStart:number, maxNumber:number): Promise<DBBlock[]> removeForkBlock(number:number): Promise<void> diff --git a/app/modules/dump.ts b/app/modules/dump.ts index 721a65433d6e391cbd535aa1e6bd7f249bdf7f88..d959de94f7f2251ffb93014056429059e035e96b 100644 --- a/app/modules/dump.ts +++ b/app/modules/dump.ts @@ -21,6 +21,7 @@ import {Underscore} from "../lib/common-libs/underscore" import {dumpWotWizard} from "./dump/wotwizard/wotwizard.dump" import {OtherConstants} from "../lib/other_constants" import {Querable, querablep} from "../lib/common-libs/querable" +import {dumpBlocks, dumpForks} from "./dump/blocks/dump.blocks" const Table = require('cli-table') @@ -71,6 +72,14 @@ module.exports = { await dumpCurrent(server) break + case 'blocks': + await dumpBlocks(server, name) + break + + case 'forks': + await dumpForks(server, name) + break + case 'volumes': await dumpVolumes(server) break diff --git a/app/modules/dump/blocks/dump.blocks.ts b/app/modules/dump/blocks/dump.blocks.ts new file mode 100644 index 0000000000000000000000000000000000000000..6c9412bd146653fc730c74387b2b44a1d0523c67 --- /dev/null +++ b/app/modules/dump/blocks/dump.blocks.ts @@ -0,0 +1,26 @@ +import {Server} from "../../../../server" +import {BlockDTO} from "../../../lib/dto/BlockDTO" +import {DBBlock} from "../../../lib/db/DBBlock" + +export async function dumpForks(server: Server, blocks: string) { + return dumpBlocks(server, blocks, false) +} + +export async function dumpBlocks(server: Server, blocks: string, showMainBcOnly = true) { + const patterns = blocks.split(',') + for (const p of patterns) { + // Single block to dump + if (p.match(/^\d+$/)) { + const bNumber = parseInt(p) + if (showMainBcOnly) { + dumpBlockIfDefined(await server.dal.getBlock(bNumber)) + } else { + (await server.dal.getPotentialForkBlocks(bNumber, 0, bNumber)).forEach(dumpBlockIfDefined) + } + } + } +} + +export function dumpBlockIfDefined(b: DBBlock|undefined|null) { + console.log(BlockDTO.fromJSONObject(b).getRawSigned()) +}