common.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import BN from 'bn.js'
  2. import { SubstrateEvent } from '@dzlzv/hydra-common'
  3. import { DatabaseManager } from '@dzlzv/hydra-db-utils'
  4. import { Block } from 'query-node/src/modules/block/block.model'
  5. import { Network } from 'query-node/src/modules/enums/enums'
  6. // Asset
  7. import {
  8. Asset,
  9. AssetUploadStatus,
  10. AssetStorage,
  11. AssetOwnerMember,
  12. } from 'query-node/src/modules/variants/variants.model'
  13. import {
  14. AssetDataObject,
  15. LiaisonJudgement,
  16. } from 'query-node/src/modules/asset-data-object/asset-data-object.model'
  17. import {
  18. ContentParameters
  19. } from '@joystream/types/augment'
  20. const currentNetwork = Network.BABYLON
  21. export function inconsistentState(): void {
  22. throw 'Inconsistent state' // TODO: create a proper way of handling inconsistent state
  23. }
  24. // prepare block record
  25. export async function prepareBlock(db: DatabaseManager, event: SubstrateEvent): Promise<Block> {
  26. let block = await db.get(Block, { where: { block: event.blockNumber } })
  27. if (block) {
  28. return block
  29. }
  30. return new Block({
  31. block: event.blockNumber,
  32. executedAt: new Date(event.blockTimestamp.toNumber()),
  33. network: currentNetwork,
  34. })
  35. }
  36. export async function prepareAssetDataObject(contentParameters: ContentParameters, block: Block): Promise<AssetStorage> {
  37. const assetOwner = new AssetOwnerMember() // TODO: proper owner
  38. assetOwner.memberId = new BN(0)
  39. const assetDataObject = new AssetDataObject({
  40. owner: assetOwner,
  41. addedAt: block,
  42. typeId: contentParameters.type_id.toNumber(),
  43. size: new BN(contentParameters.size),
  44. liaisonId: new BN(0), // TODO: proper id
  45. liaisonJudgement: LiaisonJudgement.PENDING, // TODO: proper judgement
  46. ipfsContentId: contentParameters.ipfs_content_id.toHex(),
  47. joystreamContentId: contentParameters.content_id.toHex(),
  48. })
  49. // TODO: handle `AssetNeverProvided` and `AssetDeleted` states
  50. const uploadingStatus = new AssetUploadStatus()
  51. /* TODO: set the values (`dataObject` and `oldDataObject` absent in AssetUploadStatus)
  52. uploadingStatus.dataObject = new AssetDataObject
  53. uploadingStatus.oldDataObject: undefined // TODO: handle oldDataObject
  54. */
  55. const assetStorage = new AssetStorage()
  56. assetStorage.uploadStatus = uploadingStatus
  57. return assetStorage
  58. }