12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import createApi from './api'
- import { BlockHash } from '@polkadot/types/interfaces'
- import { ApiPromise } from '@polkadot/api'
- import { WorkerJson, WorkingGroupJson, WorkingGroupsJson } from '../types'
- import fs from 'fs'
- import path from 'path'
- export enum WorkingGroups {
- Storage = 'storageWorkingGroup',
- Gateway = 'gatewayWorkingGroup',
- }
- // export flow
- async function main() {
- // prepare api connection
- const api = await createApi()
- const blockNumner = parseInt(process.env.AT_BLOCK_NUMBER || '')
- const hash = process.env.AT_BLOCK_NUMBER ? await api.rpc.chain.getBlockHash(blockNumner) : undefined
- const now = new Date()
- // get results for all relevant groups
- const workingGroups: WorkingGroupsJson = {
- STORAGE: await getWorkingGroupData(api, WorkingGroups.Storage, hash, now),
- GATEWAY: await getWorkingGroupData(api, WorkingGroups.Gateway, hash, now),
- }
- // output results
- fs.writeFileSync(path.resolve(__dirname, '../data/workingGroups.json'), JSON.stringify(workingGroups, undefined, 4))
- console.log(`${workingGroups.GATEWAY?.workers.length || 0} GATEWAY workers exported & saved!`)
- console.log(`${workingGroups.STORAGE?.workers.length || 0} STORAGE workers exported & saved!`)
- // disconnect api
- api.disconnect()
- }
- // retrieves all active workers in working group
- async function getWorkingGroupData(
- api: ApiPromise,
- group: WorkingGroups,
- hash: BlockHash | undefined,
- now: Date
- ): Promise<WorkingGroupJson> {
- // get working group entries
- const entries = await (hash ? api.query[group].workerById.entriesAt(hash) : api.query[group].workerById.entries())
- const workers: WorkerJson[] = []
- entries.forEach(([storageKey]) => {
- // prepare workerId
- const workerId = storageKey.args[0]
- // add record
- workers.push({
- workerId: workerId.toString(),
- // set time of running this script as createdAt
- createdAt: now.getTime(),
- })
- })
- return { workers }
- }
- main()
- .then(() => process.exit())
- .catch(console.error)
|