bootstrap.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { StoreContext } from '@joystream/hydra-common'
  2. import BN from 'bn.js'
  3. import { Membership, MembershipEntryMethod, StorageSystemParameters, Worker, WorkerType } from 'query-node/dist/model'
  4. import { workerEntityId } from './workingGroup'
  5. import { storageSystemData, membersData, workingGroupsData } from './bootstrap-data'
  6. export async function bootstrapData({ store }: StoreContext): Promise<void> {
  7. // Storage system
  8. await store.save<StorageSystemParameters>(
  9. new StorageSystemParameters({
  10. ...storageSystemData,
  11. storageBucketMaxObjectsCountLimit: new BN(storageSystemData.storageBucketMaxObjectsCountLimit),
  12. storageBucketMaxObjectsSizeLimit: new BN(storageSystemData.storageBucketMaxObjectsSizeLimit),
  13. dataObjectFeePerMb: new BN(storageSystemData.dataObjectFeePerMb),
  14. })
  15. )
  16. // Members
  17. const members = membersData.map(
  18. (m) =>
  19. new Membership({
  20. // main data
  21. id: m.memberId,
  22. rootAccount: m.rootAccount,
  23. controllerAccount: m.controllerAccount,
  24. handle: m.handle,
  25. about: m.about,
  26. avatarUri: m.avatarUri,
  27. createdInBlock: m.registeredAtBlock,
  28. entry: m.registeredAtBlock === 1 ? MembershipEntryMethod.GENESIS : MembershipEntryMethod.PAID,
  29. // fill in auto-generated fields
  30. createdAt: new Date(m.registeredAtTime),
  31. updatedAt: new Date(m.registeredAtTime),
  32. })
  33. )
  34. await Promise.all(members.map((m) => store.save<Membership>(m)))
  35. // Workers
  36. let workers: Worker[] = []
  37. ;(['GATEWAY', 'STORAGE'] as const).map((group) => {
  38. const workersJson = workingGroupsData[group]?.workers || []
  39. workers = workers.concat(
  40. workersJson.map(
  41. (w) =>
  42. new Worker({
  43. id: workerEntityId(WorkerType[group], w.workerId),
  44. workerId: w.workerId,
  45. isActive: true,
  46. type: WorkerType[group],
  47. createdAt: new Date(w.createdAt),
  48. updatedAt: new Date(w.createdAt),
  49. metadata: w.metadata,
  50. })
  51. )
  52. )
  53. })
  54. await Promise.all(workers.map((w) => store.save<Worker>(w)))
  55. }