@graphprotocol/graph-cli
Version:
CLI for building for and deploying to The Graph
43 lines (35 loc) • 1.21 kB
JavaScript
const IpfsFileTemplateCodeGen = require('../protocols/ipfs/codegen/file_template')
const tsCodegen = require('./typescript')
module.exports = class DataSourceTemplateCodeGenerator {
constructor(template, protocol) {
this.template = template
let kind = template.get('kind')
if (kind.split('/')[0] == protocol.name) {
this.protocolTemplateCodeGen = protocol.getTemplateCodeGen(template)
} else if (kind == "file/ipfs") {
this.protocolTemplateCodeGen = new IpfsFileTemplateCodeGen(template)
}
}
generateModuleImports() {
return [
tsCodegen.moduleImports(
[
...this.protocolTemplateCodeGen.generateModuleImports(),
'DataSourceTemplate',
'DataSourceContext',
],
'@graphprotocol/graph-ts',
),
]
}
generateTypes() {
return [this._generateTemplateType()]
}
_generateTemplateType() {
let name = this.template.get('name')
let klass = tsCodegen.klass(name, { export: true, extends: 'DataSourceTemplate' })
klass.addMethod(this.protocolTemplateCodeGen.generateCreateMethod())
klass.addMethod(this.protocolTemplateCodeGen.generateCreateWithContextMethod())
return klass
}
}