postInstall.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // A script to be executed post query-node install, that may include workarounds in Hydra node_modules
  2. import path from 'path'
  3. import { replaceInFile } from './utils'
  4. // FIXME: Temporarly remove broken sanitizeNullCharacter call
  5. const subscribersJsPath = path.resolve(
  6. __dirname,
  7. '../../../node_modules/@joystream/hydra-processor/lib/db/subscribers.js'
  8. )
  9. replaceInFile({
  10. filePath: subscribersJsPath,
  11. regex: /sanitizeNullCharacter\(entity, field\);/g,
  12. newContent: '//sanitizeNullCharacter(entity, field)',
  13. })
  14. // FIXME: Temporarly replace broken relations resolution in @joystream/warthog
  15. const dataLoaderJsPath = path.resolve(
  16. __dirname,
  17. '../../../node_modules/@joystream/warthog/dist/middleware/DataLoaderMiddleware.js'
  18. )
  19. replaceInFile({
  20. filePath: dataLoaderJsPath,
  21. regex: /return context\.connection\.relationIdLoader[\s\S]+return group\.related;\s+\}\);\s+\}\)/,
  22. newContent: `return Promise.all(
  23. entities.map(entity => context.connection.relationLoader.load(relation, entity))
  24. ).then(function (results) {
  25. return results.map(function (related) {
  26. return (relation.isManyToOne || relation.isOneToOne) ? related[0] : related
  27. })
  28. })`,
  29. })
  30. // FIXME: Temporary fix for "table name x specified more than once"
  31. const baseServiceJsPath = path.resolve(__dirname, '../../../node_modules/@joystream/warthog/dist/core/BaseService.js')
  32. replaceInFile({
  33. filePath: baseServiceJsPath,
  34. regex: /function common\(parameters, localIdColumn, foreignTableName, foreignColumnMap, foreignColumnName\) \{[^}]+\}/,
  35. newContent: `function common(parameters, localIdColumn, foreignTableName, foreignColumnMap, foreignColumnName) {
  36. const uuid = require('uuid/v4')
  37. const foreignTableAlias = uuid().replace('-', '')
  38. var foreingIdColumn = "\\"" + foreignTableAlias + "\\".\\"" + foreignColumnMap[foreignColumnName] + "\\"";
  39. parameters.topLevelQb.leftJoin(foreignTableName, foreignTableAlias, localIdColumn + " = " + foreingIdColumn);
  40. addWhereCondition(parameters, foreignTableAlias, foreignColumnMap);
  41. }`,
  42. })