bootstrap.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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: 0,
  28. entry: MembershipEntryMethod.GENESIS,
  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. type: WorkerType[group],
  46. createdAt: new Date(w.createdAt),
  47. updatedAt: new Date(w.createdAt),
  48. metadata: w.metadata,
  49. })
  50. )
  51. )
  52. })
  53. await Promise.all(workers.map((w) => store.save<Worker>(w)))
  54. }