1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import { types } from '@joystream/types'
- import { ApiPromise, WsProvider } from '@polkadot/api'
- import { getInitializationInputs } from '../src/helpers/inputs'
- import fs from 'fs'
- import path from 'path'
- import { InputParser } from '../src/helpers/InputParser'
- import { ExtrinsicsHelper, getAlicePair, getKeyFromSuri } from '../src/helpers/extrinsics'
- // Save entity operations output here for easier debugging
- const ENTITY_OPERATIONS_OUTPUT_PATH = path.join(__dirname, '../operations.json')
- const { classInputs, schemaInputs, entityBatchInputs } = getInitializationInputs()
- async function main() {
- // Init api
- const WS_URI = process.env.WS_URI || 'ws://127.0.0.1:9944'
- console.log(`Initializing the api (${WS_URI})...`)
- const provider = new WsProvider(WS_URI)
- const api = await ApiPromise.create({ provider, types })
- const LeadKeyPair = process.env.LEAD_URI ? getKeyFromSuri(process.env.LEAD_URI) : getAlicePair()
- // Emptiness check
- if ((await api.query.contentDirectory.classById.keys()).length > 0) {
- console.log('Content directory is not empty! Skipping...')
- process.exit()
- }
- const txHelper = new ExtrinsicsHelper(api)
- const parser = new InputParser(api, classInputs, schemaInputs, entityBatchInputs)
- console.log(`Initializing classes (${classInputs.length} input files found)...\n`)
- const classExtrinsics = parser.getCreateClassExntrinsics()
- await txHelper.sendAndCheck(LeadKeyPair, classExtrinsics, 'Class initialization failed!')
- console.log(`Initializing schemas (${schemaInputs.length} input files found)...\n`)
- const schemaExtrinsics = await parser.getAddSchemaExtrinsics()
- await txHelper.sendAndCheck(LeadKeyPair, schemaExtrinsics, 'Schemas initialization failed!')
- console.log(`Initializing entities (${entityBatchInputs.length} input files found)`)
- const entityOperations = await parser.getEntityBatchOperations()
- // Save operations in operations.json (for reference in case of errors)
- console.log(`Saving entity batch operations in ${ENTITY_OPERATIONS_OUTPUT_PATH}...`)
- fs.writeFileSync(
- ENTITY_OPERATIONS_OUTPUT_PATH,
- JSON.stringify(
- entityOperations.map((o) => o.toJSON()),
- null,
- 4
- )
- )
- console.log(`Sending Transaction extrinsic (${entityOperations.length} operations)...`)
- await txHelper.sendAndCheck(
- LeadKeyPair,
- [api.tx.contentDirectory.transaction({ Lead: null }, entityOperations)],
- 'Entity initialization failed!'
- )
- }
- main()
- .then(() => process.exit())
- .catch((e) => {
- console.error(e)
- process.exit(-1)
- })
|