postHydraCLIInstall.ts 1.3 KB

1234567891011121314151617181920212223
  1. // A script to be executed post hydra-cli install, that may include patches for Hydra CLI
  2. import fs from 'fs'
  3. import path from 'path'
  4. // FIXME: Temporary fix for missing JOIN and HAVING conditions in search queries (Hydra)
  5. const searchServiceTemplatePath = path.resolve(
  6. __dirname,
  7. '../../codegen/node_modules/@joystream/hydra-cli/lib/src/templates/textsearch/service.ts.mst'
  8. )
  9. const searchServiceTemplateContent = fs.readFileSync(searchServiceTemplatePath).toString()
  10. const searchServiceTemplateContentLines = searchServiceTemplateContent.split('\n')
  11. searchServiceTemplateContentLines.splice(
  12. searchServiceTemplateContentLines.findIndex((l) => l.match(/Add new query to queryString/)) + 1,
  13. 1, // remove 1 line
  14. `queries = queries.concat(generateSqlQuery(repositories[index].metadata.tableName, qb.createJoinExpression(), WHERE, qb.createHavingExpression()));`
  15. )
  16. searchServiceTemplateContentLines.splice(
  17. searchServiceTemplateContentLines.findIndex((l) => l.match(/const generateSqlQuery = /)),
  18. 3, // remove 3 lines
  19. `const generateSqlQuery = (table: string, joins: string, where: string, having: string) =>
  20. \`SELECT '\${table}_' || "\${table}"."id" AS unique_id FROM "\${table}" \` + joins + ' ' + where + ' ' + having;`
  21. )
  22. fs.writeFileSync(searchServiceTemplatePath, searchServiceTemplateContentLines.join('\n'))