init.ts 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. import { ApiPromise, WsProvider } from '@polkadot/api'
  2. import { types } from '@joystream/types'
  3. import { createDBConnection } from '@dzlzv/hydra-processor'
  4. import { makeDatabaseManager } from '@dzlzv/hydra-processor/lib/executor/TransactionalExecutor'
  5. import path from 'path'
  6. // A script to initialize processor database with some initial values that cannot be fetched from events / extrinics
  7. async function init() {
  8. const provider = new WsProvider(process.env.WS_PROVIDER_ENDPOINT_URI)
  9. const api = await ApiPromise.create({ provider, types })
  10. // Will be resolved relatively to mappings/lib
  11. const entitiesPath = path.resolve(__dirname, '../../generated/graphql-server/dist/src/modules/**/*.model.js')
  12. // We need to create db connection (and configure env) before importing any warthog models
  13. const dbConnection = await createDBConnection([entitiesPath])
  14. const db = makeDatabaseManager(dbConnection.createEntityManager())
  15. // Only now we can import the initialization scripts (which include warthog models imports)
  16. // eslint-disable-next-line @typescript-eslint/no-var-requires
  17. const initializeDb = require('./initializeDb').default
  18. await initializeDb(api, db)
  19. }
  20. init()
  21. .then(() => {
  22. console.log('Processor database initialized')
  23. process.exit()
  24. })
  25. .catch((e) => {
  26. console.error(e)
  27. process.exit(-1)
  28. })