From aa7ae128d862291b7b1113dc73361dbe0984cb77 Mon Sep 17 00:00:00 2001 From: shiyasmohd Date: Fri, 31 Jan 2025 16:40:57 +0530 Subject: [PATCH 1/5] fix: generate types for mappings when int8 is used as id --- packages/cli/src/codegen/schema.ts | 79 +++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 7 deletions(-) diff --git a/packages/cli/src/codegen/schema.ts b/packages/cli/src/codegen/schema.ts index ef98482a5..b74c6aa16 100644 --- a/packages/cli/src/codegen/schema.ts +++ b/packages/cli/src/codegen/schema.ts @@ -16,6 +16,7 @@ import * as util from './util.js'; class IdField { static BYTES = Symbol('Bytes'); static STRING = Symbol('String'); + static INT8 = Symbol('Int8'); private kind: typeof IdField.BYTES | typeof IdField.STRING; @@ -27,15 +28,43 @@ class IdField { throw Error('id field must be a named type'); } const typeName = idField.type.type.name.value; - this.kind = typeName === 'Bytes' ? IdField.BYTES : IdField.STRING; + switch (typeName) { + case 'Bytes': + this.kind = IdField.BYTES; + break; + case 'Int8': + this.kind = IdField.INT8; + break; + default: + this.kind = IdField.STRING; + break; + } } typeName() { - return this.kind === IdField.BYTES ? 'Bytes' : 'string'; + switch (this.kind) { + case IdField.BYTES: + return 'Bytes'; + case IdField.INT8: + return 'Int8'; + case IdField.STRING: + return 'string'; + default: + return 'string'; + } } gqlTypeName() { - return this.kind === IdField.BYTES ? 'Bytes' : 'String'; + switch (this.kind) { + case IdField.BYTES: + return 'Bytes'; + case IdField.INT8: + return 'Int8'; + case IdField.STRING: + return 'String'; + default: + return 'String'; + } } tsNamedType() { @@ -43,19 +72,55 @@ class IdField { } tsValueFrom() { - return this.kind === IdField.BYTES ? 'Value.fromBytes(id)' : 'Value.fromString(id)'; + switch (this.kind) { + case IdField.BYTES: + return 'Value.fromBytes(id)'; + case IdField.INT8: + return 'Value.fromI64(id)'; + case IdField.STRING: + return 'Value.fromString(id)'; + default: + return 'Value.fromString(id)'; + } } tsValueKind() { - return this.kind === IdField.BYTES ? 'ValueKind.BYTES' : 'ValueKind.STRING'; + switch (this.kind) { + case IdField.BYTES: + return 'ValueKind.BYTES'; + case IdField.INT8: + return 'ValueKind.INT8'; + case IdField.STRING: + return 'ValueKind.STRING'; + default: + return 'ValueKind.STRING'; + } } tsValueToString() { - return this.kind == IdField.BYTES ? 'id.toBytes().toHexString()' : 'id.toString()'; + switch (this.kind) { + case IdField.BYTES: + return 'id.toBytes().toHexString()'; + case IdField.INT8: + return 'id.toI64().toString()'; + case IdField.STRING: + return 'id.toString()'; + default: + return 'id.toString()'; + } } tsToString() { - return this.kind == IdField.BYTES ? 'id.toHexString()' : 'id'; + switch (this.kind) { + case IdField.BYTES: + return 'id.toHexString()'; + case IdField.INT8: + return 'id.toString()'; + case IdField.STRING: + return 'id'; + default: + return 'id'; + } } static fromFields(fields: readonly FieldDefinitionNode[] | undefined) { From 5e2c0a6b4b7bec9cc8b6d13d98d46b43304b71bd Mon Sep 17 00:00:00 2001 From: Shiyas Mohammed <83513144+shiyasmohd@users.noreply.github.com> Date: Fri, 31 Jan 2025 16:42:57 +0530 Subject: [PATCH 2/5] add changeset --- .changeset/new-rules-bake.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/new-rules-bake.md diff --git a/.changeset/new-rules-bake.md b/.changeset/new-rules-bake.md new file mode 100644 index 000000000..05eb3951a --- /dev/null +++ b/.changeset/new-rules-bake.md @@ -0,0 +1,5 @@ +--- +"@graphprotocol/graph-cli": minor +--- + +fix: generate types for mappings when int8 is used as id From 9e0e990535fc71b4bf45d8349b4ae217bb8d2a2a Mon Sep 17 00:00:00 2001 From: shiyasmohd Date: Fri, 31 Jan 2025 16:44:47 +0530 Subject: [PATCH 3/5] update changeset --- .changeset/new-rules-bake.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/new-rules-bake.md b/.changeset/new-rules-bake.md index 05eb3951a..93c2044c5 100644 --- a/.changeset/new-rules-bake.md +++ b/.changeset/new-rules-bake.md @@ -1,5 +1,5 @@ --- -"@graphprotocol/graph-cli": minor +"@graphprotocol/graph-cli": patch --- fix: generate types for mappings when int8 is used as id From 58cfd7f2b68bcc031bf0659ea84a0b9b0caa8a75 Mon Sep 17 00:00:00 2001 From: shiyasmohd Date: Tue, 11 Feb 2025 06:59:45 +0530 Subject: [PATCH 4/5] fix: add Int8 to imports when codegen --- packages/cli/src/codegen/schema.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/cli/src/codegen/schema.ts b/packages/cli/src/codegen/schema.ts index b74c6aa16..52366460d 100644 --- a/packages/cli/src/codegen/schema.ts +++ b/packages/cli/src/codegen/schema.ts @@ -157,6 +157,7 @@ export default class SchemaCodeGenerator { 'Bytes', 'BigInt', 'BigDecimal', + 'Int8' ], '@graphprotocol/graph-ts', ), From 6cc2a1c7813a896ba22df3dbf73fb96965d84a87 Mon Sep 17 00:00:00 2001 From: shiyasmohd Date: Tue, 11 Feb 2025 07:03:22 +0530 Subject: [PATCH 5/5] fix: lint fix --- packages/cli/src/codegen/schema.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/codegen/schema.ts b/packages/cli/src/codegen/schema.ts index 52366460d..8665466dd 100644 --- a/packages/cli/src/codegen/schema.ts +++ b/packages/cli/src/codegen/schema.ts @@ -157,7 +157,7 @@ export default class SchemaCodeGenerator { 'Bytes', 'BigInt', 'BigDecimal', - 'Int8' + 'Int8', ], '@graphprotocol/graph-ts', ),