Переглянути джерело

query node - mappings compilation recipe I

ondratra 4 роки тому
батько
коміт
938e61c09e
3 змінених файлів з 95 додано та 47 видалено
  1. 66 0
      query-node/README.md
  2. 29 25
      query-node/manifest.yml
  3. 0 22
      query-node/typegen.yml

+ 66 - 0
query-node/README.md

@@ -59,3 +59,69 @@ The simplest way to run an indexer locally is to run `docker-compose-indexer.yml
 - If non-standard types are being used by the Substrate runtime, map type definitions in the json format as an external volume
 
 Follow the links for more information about the [indexer](https://github.com/Joystream/hydra/tree/master/packages/hydra-indexer/README.md) service and [indexer-api-gateway](https://github.com/Joystream/hydra/tree/master/packages/hydra-indexer-gateway/README.md).
+
+
+
+# Tmp command order
+```
+# run from the Joystream monorepo root
+
+# temporarily remove query node dependency from mappings package
+sed -i 's/"query-node": "^0.0.0",//' query-node/mappings/package.json
+
+# install dependencies
+yarn
+
+# add dummy values to input schema variants that needs it
+sed -i 's/type AssetOwnerChannel @variant {/type AssetOwnerChannel @variant {\n  dummy: Int/' query-node/schema.graphql
+sed -i 's/type AssetNeverProvided @variant {/type AssetNeverProvided @variant {\n  dummy: Int/' query-node/schema.graphql
+sed -i 's/type AssetDeleted @variant {/type AssetDeleted @variant {\n  dummy: Int/' query-node/schema.graphql
+sed -i 's/type AssetUploadStatus @variant {/type AssetUploadStatus @variant {\n  dummy: Int/' query-node/schema.graphql
+
+yarn workspace @joystream/content-metadata-protobuf build
+yarn workspace @joystream/types build
+yarn workspace query-node-root build # this will fail during mappings compilation
+
+# setup TS declarations for query node compilation
+sed -i 's/"compilerOptions": {/"compilerOptions": {\n    "declaration": true,/' query-node/generated/graphql-server/tsconfig.json
+
+# add back dependency
+sed -i 's/"dependencies": {/"dependencies": {\n    "query-node": "^0.0.0",/' query-node/mappings/package.json
+
+# install query node dependency to mappings
+yarn
+
+# yarn workspace query-node compile # probably not needed
+sed -i 's/BN/number/' query-node/generated/graphql-server/src/modules/variants/variants.model.ts # replace BigNumber by number
+
+# remove extra variant imports
+TMP_VARIANT_IMPORT="import { Asset } from '../variants/variants.model'"
+sed -i "s#$TMP_VARIANT_IMPORT##;" query-node/generated/graphql-server/src/modules/channel/channel.model.ts query-node/generated/graphql-server/src/modules/video/video.model.ts
+echo $TMP_VARIANT_IMPORT >> query-node/generated/graphql-server/src/modules/channel/channel.model.ts
+echo $TMP_VARIANT_IMPORT >> query-node/generated/graphql-server/src/modules/video/video.model.ts
+
+# fix relations cardinality (why is this code generated like this? is input schema wrong or Hydra has a bug?)
+sed -i 's/return result.channels/return [result.channels]/' query-node/generated/graphql-server/src/modules/channel-category/channel-category.resolver.ts
+sed -i 's/return result.category/return result.category[0]/' query-node/generated/graphql-server/src/modules/channel/channel.resolver.ts
+sed -i 's/return result.videos/return [result.videos]/' query-node/generated/graphql-server/src/modules/video-category/video-category.resolver.ts
+sed -i 's/return result.category/return result.category[0]/' query-node/generated/graphql-server/src/modules/video/video.resolver.ts
+
+# fix two functions having the same name (why this has to be changed manually?)
+sed -i '0,/videoMediaMetadata/s/videoMediaMetadata/videoMediaMetadata2/' query-node/generated/graphql-server/src/modules/video-media-metadata/video-media-metadata.resolver.ts
+
+# add missing dependency
+sed -i 's/"dependencies": {/"dependencies": {\n    "pg-listen": "^1.7.0",/' query-node/generated/graphql-server/package.json
+
+# install new dependencies
+yarn
+
+echo "set -a; . .env; set +a; yarn workspace query-node build:dev" > tmp.sh
+chmod +x tmp.sh
+./tmp.sh
+
+# build mappings
+yarn workspace query-node-root typegen
+yarn workspace query-node-mappings build
+
+
+```

+ 29 - 25
query-node/manifest.yml

@@ -2,37 +2,41 @@ version: '0.1'
 description: Joystream query-node manifest file for sumer
 repository: https://github.com/Joystream/joystream
 dataSource:
-  kind: substrate 
+  kind: substrate
   chain: joystream
   indexerVersion: '0.1.6'
 entities:
   - mappings/lib/generated/**/*.model.js
-metadata:
-  # TODO: update source and blockHash for sumer release
-  source: wss://babylon-sub-1.joystream.app/staging/rpc
-  blockHash: '0x206a6cca31333cb19ee120cde7455e13eea368ec3f6176d0cd48698228410489'
-events:
-  - members.MemberRegistered
-  - members.MemberUpdatedAboutText
-  - members.MemberUpdatedAvatar
-  - members.MemberUpdatedHandle
-  - members.MemberSetRootAccount
-  - members.MemberSetControllerAccount
-calls:
-  - members.buyMembership
-  - members.addScreenedMember
-outDir: ./mappings/generated/types
-customTypes:
-  lib: '@joystream/types/augment/all/types'
-  typedefsLoc: '../types/augment/all/defs.json'
+typegen:
+  metadata:
+    source: wss://sumer.joystream.app
+  events:
+    - members.MemberRegistered
+    - members.MemberUpdatedAboutText
+    - members.MemberUpdatedAvatar
+    - members.MemberUpdatedHandle
+    - members.MemberSetRootAccount
+    - members.MemberSetControllerAccount
+  calls:
+    - members.buyMembership
+    - members.addScreenedMember
+    - members.changeMemberAboutText
+    - members.changeMemberAvatar
+    - members.changeMemberHandle
+    - members.setRootAccount
+    - members.setControllerAccount
+  outDir: ./generated/types
+  customTypes:
+    lib: '@joystream/types/augment/all/types'
+    typedefsLoc: '../types/augment/all/defs.json'
 mappings:
   hydraCommonVersion: '0.0.3'
-    # process only blocks with height >= 1M 
+    # process only blocks with height >= 1M
   blockInterval: '[1000000,]'
-  # js module that exports the handler functions 
+  # js module that exports the handler functions
   mappingsModule: mappings/lib/mappings
   # additinal libraries the processor loads
-  # typically it is a module with event and extrinsic types generated by hydra-typegen 
+  # typically it is a module with event and extrinsic types generated by hydra-typegen
   imports:
     - mappings/lib/mappings/generated/types
   eventHandlers:
@@ -50,8 +54,8 @@ mappings:
       handler: members_MemberSetControllerAccount(DatabaseManager, SubstrateEvent)
   extrinsicHandlers:
     # infer defaults here
-    #- extrinsic: Balances.Transfer 
-    #- extrinsic: Sudo.batchCall 
+    #- extrinsic: Balances.Transfer
+    #- extrinsic: Sudo.batchCall
     #  handler: handleSudoCall(DatabaseManager,SubstrateEvent)
   preBlockHooks:
-  postBlockHooks:
+  postBlockHooks:

+ 0 - 22
query-node/typegen.yml

@@ -1,22 +0,0 @@
-metadata:
-  source: wss://babylon-sub-1.joystream.app/staging/rpc
-  blockHash: '0x206a6cca31333cb19ee120cde7455e13eea368ec3f6176d0cd48698228410489'
-events:
-  - members.MemberRegistered
-  - members.MemberUpdatedAboutText
-  - members.MemberUpdatedAvatar
-  - members.MemberUpdatedHandle
-  - members.MemberSetRootAccount
-  - members.MemberSetControllerAccount
-calls:
-  - members.buyMembership
-  - members.addScreenedMember
-  - members.changeMemberAboutText
-  - members.changeMemberAvatar
-  - members.changeMemberHandle
-  - members.setRootAccount
-  - members.setControllerAccount
-outDir: ./generated/types
-customTypes:
-  lib: '@joystream/types/augment/all/types'
-  typedefsLoc: '../types/augment/all/defs.json'