Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Weird behaviour with nested interfaces #103

Open
schmidsi opened this issue May 17, 2023 · 4 comments
Open

Weird behaviour with nested interfaces #103

schmidsi opened this issue May 17, 2023 · 4 comments

Comments

@schmidsi
Copy link
Member

schmidsi commented May 17, 2023

TLDR:
It seems that GraphQL Playground on hosted service does not properly fill the attributes.

Details
Reported here: https://discord.com/channels/438038660412342282/438070183794573313/1108310181227540490

Excerpt from schema:

interface Campaign {
  # ...
}

interface _ERC20Campaign implements Campaign {
  id: ID!

  claims: [ERC20Claim!]! @derivedFrom(field: "campaign")
}

interface _ERC721Campaign implements Campaign {
  id: Bytes!

  claims: [ERC721Claim!]! @derivedFrom(field: "campaign")
}

interface Claim {
  # ...
}

interface _ERC20Claim implements Claim {
  campaign: ERC20Campaign!
}

interface _ERC721Claim implements Claim {
  campaign: ERC721Campaign!
}

type ERC20Campaign implements _ERC20Campaign @entity {
  id: ID!

  # ...

  # extra fields ...

  claims: [ERC20Claim!]! @derivedFrom(field: "campaign")
}

type ERC20Claim implements _ERC20Claim @entity {
  # ...

  campaign: ERC20Campaign!
}

type ERC721Campaign implements _ERC721Campaign @entity {
  id: ID!

  # ...

  # extra fields ...

  claims: [ERC721Claim!]! @derivedFrom(field: "campaign")
}

type ERC721Claim implements _ERC721Claim @entity(immutable: true) {
  # ...

  campaign: ERC721Campaign!
}

Deployed subgraph: https://thegraph.com/hosted-service/subgraph/sebastiantf/ccm-interface-test

@schmidsi schmidsi assigned schmidsi and unassigned schmidsi May 17, 2023
@schmidsi
Copy link
Member Author

@itsjerryokolo

@schmidsi
Copy link
Member Author

Screenshot 2023-05-17 at 11 22 08

@schmidsi
Copy link
Member Author

Actual generated schema:

schema {
  query: Query
  subscription: Subscription
}

"Marks the GraphQL type as indexable entity.  Each type that should be an entity is required to be annotated with this directive."
directive @entity on OBJECT

"Defined a Subgraph ID for an object type"
directive @subgraphId(id: String!) on OBJECT

"creates a virtual field on the entity that may be queried but cannot be set manually through the mappings API."
directive @derivedFrom(field: String!) on FIELD_DEFINITION

scalar BigDecimal

scalar BigInt

input BlockChangedFilter {
  number_gte: Int!
}

input Block_height {
  hash: Bytes
  number: Int
  number_gte: Int
}

scalar Bytes

interface Campaign {
  createdAt: BigInt!
  txnHash: Bytes!
  totalClaims: Int!
  managerAddress: Bytes!
}

input Campaign_filter {
  createdAt: BigInt
  createdAt_not: BigInt
  createdAt_gt: BigInt
  createdAt_lt: BigInt
  createdAt_gte: BigInt
  createdAt_lte: BigInt
  createdAt_in: [BigInt!]
  createdAt_not_in: [BigInt!]
  txnHash: Bytes
  txnHash_not: Bytes
  txnHash_gt: Bytes
  txnHash_lt: Bytes
  txnHash_gte: Bytes
  txnHash_lte: Bytes
  txnHash_in: [Bytes!]
  txnHash_not_in: [Bytes!]
  txnHash_contains: Bytes
  txnHash_not_contains: Bytes
  totalClaims: Int
  totalClaims_not: Int
  totalClaims_gt: Int
  totalClaims_lt: Int
  totalClaims_gte: Int
  totalClaims_lte: Int
  totalClaims_in: [Int!]
  totalClaims_not_in: [Int!]
  managerAddress: Bytes
  managerAddress_not: Bytes
  managerAddress_gt: Bytes
  managerAddress_lt: Bytes
  managerAddress_gte: Bytes
  managerAddress_lte: Bytes
  managerAddress_in: [Bytes!]
  managerAddress_not_in: [Bytes!]
  managerAddress_contains: Bytes
  managerAddress_not_contains: Bytes
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [Campaign_filter]
  or: [Campaign_filter]
}

enum Campaign_orderBy {
  createdAt
  txnHash
  totalClaims
  managerAddress
}

interface Claim {
  id: ID!
  createdAt: BigInt!
  userAddress: Bytes!
  txnHash: Bytes!
}

input Claim_filter {
  id: ID
  id_not: ID
  id_gt: ID
  id_lt: ID
  id_gte: ID
  id_lte: ID
  id_in: [ID!]
  id_not_in: [ID!]
  createdAt: BigInt
  createdAt_not: BigInt
  createdAt_gt: BigInt
  createdAt_lt: BigInt
  createdAt_gte: BigInt
  createdAt_lte: BigInt
  createdAt_in: [BigInt!]
  createdAt_not_in: [BigInt!]
  userAddress: Bytes
  userAddress_not: Bytes
  userAddress_gt: Bytes
  userAddress_lt: Bytes
  userAddress_gte: Bytes
  userAddress_lte: Bytes
  userAddress_in: [Bytes!]
  userAddress_not_in: [Bytes!]
  userAddress_contains: Bytes
  userAddress_not_contains: Bytes
  txnHash: Bytes
  txnHash_not: Bytes
  txnHash_gt: Bytes
  txnHash_lt: Bytes
  txnHash_gte: Bytes
  txnHash_lte: Bytes
  txnHash_in: [Bytes!]
  txnHash_not_in: [Bytes!]
  txnHash_contains: Bytes
  txnHash_not_contains: Bytes
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [Claim_filter]
  or: [Claim_filter]
}

enum Claim_orderBy {
  id
  createdAt
  userAddress
  txnHash
}

type ERC20Campaign implements Campaign & _ERC20Campaign {
  id: ID!
  createdAt: BigInt!
  txnHash: Bytes!
  totalClaims: Int!
  managerAddress: Bytes!
  campaignId: String!
  claims(skip: Int = 0, first: Int = 100, orderBy: ERC20Claim_orderBy, orderDirection: OrderDirection, where: ERC20Claim_filter): [ERC20Claim!]!
}

input ERC20Campaign_filter {
  id: ID
  id_not: ID
  id_gt: ID
  id_lt: ID
  id_gte: ID
  id_lte: ID
  id_in: [ID!]
  id_not_in: [ID!]
  createdAt: BigInt
  createdAt_not: BigInt
  createdAt_gt: BigInt
  createdAt_lt: BigInt
  createdAt_gte: BigInt
  createdAt_lte: BigInt
  createdAt_in: [BigInt!]
  createdAt_not_in: [BigInt!]
  txnHash: Bytes
  txnHash_not: Bytes
  txnHash_gt: Bytes
  txnHash_lt: Bytes
  txnHash_gte: Bytes
  txnHash_lte: Bytes
  txnHash_in: [Bytes!]
  txnHash_not_in: [Bytes!]
  txnHash_contains: Bytes
  txnHash_not_contains: Bytes
  totalClaims: Int
  totalClaims_not: Int
  totalClaims_gt: Int
  totalClaims_lt: Int
  totalClaims_gte: Int
  totalClaims_lte: Int
  totalClaims_in: [Int!]
  totalClaims_not_in: [Int!]
  managerAddress: Bytes
  managerAddress_not: Bytes
  managerAddress_gt: Bytes
  managerAddress_lt: Bytes
  managerAddress_gte: Bytes
  managerAddress_lte: Bytes
  managerAddress_in: [Bytes!]
  managerAddress_not_in: [Bytes!]
  managerAddress_contains: Bytes
  managerAddress_not_contains: Bytes
  campaignId: String
  campaignId_not: String
  campaignId_gt: String
  campaignId_lt: String
  campaignId_gte: String
  campaignId_lte: String
  campaignId_in: [String!]
  campaignId_not_in: [String!]
  campaignId_contains: String
  campaignId_contains_nocase: String
  campaignId_not_contains: String
  campaignId_not_contains_nocase: String
  campaignId_starts_with: String
  campaignId_starts_with_nocase: String
  campaignId_not_starts_with: String
  campaignId_not_starts_with_nocase: String
  campaignId_ends_with: String
  campaignId_ends_with_nocase: String
  campaignId_not_ends_with: String
  campaignId_not_ends_with_nocase: String
  claims_: ERC20Claim_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [ERC20Campaign_filter]
  or: [ERC20Campaign_filter]
}

enum ERC20Campaign_orderBy {
  id
  createdAt
  txnHash
  totalClaims
  managerAddress
  campaignId
  claims
}

type ERC20Claim implements Claim & _ERC20Claim {
  id: ID!
  createdAt: BigInt!
  userAddress: Bytes!
  txnHash: Bytes!
  campaign: ERC20Campaign!
}

input ERC20Claim_filter {
  id: ID
  id_not: ID
  id_gt: ID
  id_lt: ID
  id_gte: ID
  id_lte: ID
  id_in: [ID!]
  id_not_in: [ID!]
  createdAt: BigInt
  createdAt_not: BigInt
  createdAt_gt: BigInt
  createdAt_lt: BigInt
  createdAt_gte: BigInt
  createdAt_lte: BigInt
  createdAt_in: [BigInt!]
  createdAt_not_in: [BigInt!]
  userAddress: Bytes
  userAddress_not: Bytes
  userAddress_gt: Bytes
  userAddress_lt: Bytes
  userAddress_gte: Bytes
  userAddress_lte: Bytes
  userAddress_in: [Bytes!]
  userAddress_not_in: [Bytes!]
  userAddress_contains: Bytes
  userAddress_not_contains: Bytes
  txnHash: Bytes
  txnHash_not: Bytes
  txnHash_gt: Bytes
  txnHash_lt: Bytes
  txnHash_gte: Bytes
  txnHash_lte: Bytes
  txnHash_in: [Bytes!]
  txnHash_not_in: [Bytes!]
  txnHash_contains: Bytes
  txnHash_not_contains: Bytes
  campaign: String
  campaign_not: String
  campaign_gt: String
  campaign_lt: String
  campaign_gte: String
  campaign_lte: String
  campaign_in: [String!]
  campaign_not_in: [String!]
  campaign_contains: String
  campaign_contains_nocase: String
  campaign_not_contains: String
  campaign_not_contains_nocase: String
  campaign_starts_with: String
  campaign_starts_with_nocase: String
  campaign_not_starts_with: String
  campaign_not_starts_with_nocase: String
  campaign_ends_with: String
  campaign_ends_with_nocase: String
  campaign_not_ends_with: String
  campaign_not_ends_with_nocase: String
  campaign_: ERC20Campaign_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [ERC20Claim_filter]
  or: [ERC20Claim_filter]
}

enum ERC20Claim_orderBy {
  id
  createdAt
  userAddress
  txnHash
  campaign
  campaign__id
  campaign__createdAt
  campaign__txnHash
  campaign__totalClaims
  campaign__managerAddress
  campaign__campaignId
}

type ERC721Campaign implements Campaign & _ERC721Campaign {
  id: ID!
  createdAt: BigInt!
  txnHash: Bytes!
  totalClaims: Int!
  managerAddress: Bytes!
  address: Bytes!
  tokenType: TokenType!
  impl: Bytes!
  claims(skip: Int = 0, first: Int = 100, orderBy: ERC721Claim_orderBy, orderDirection: OrderDirection, where: ERC721Claim_filter): [ERC721Claim!]!
}

input ERC721Campaign_filter {
  id: ID
  id_not: ID
  id_gt: ID
  id_lt: ID
  id_gte: ID
  id_lte: ID
  id_in: [ID!]
  id_not_in: [ID!]
  createdAt: BigInt
  createdAt_not: BigInt
  createdAt_gt: BigInt
  createdAt_lt: BigInt
  createdAt_gte: BigInt
  createdAt_lte: BigInt
  createdAt_in: [BigInt!]
  createdAt_not_in: [BigInt!]
  txnHash: Bytes
  txnHash_not: Bytes
  txnHash_gt: Bytes
  txnHash_lt: Bytes
  txnHash_gte: Bytes
  txnHash_lte: Bytes
  txnHash_in: [Bytes!]
  txnHash_not_in: [Bytes!]
  txnHash_contains: Bytes
  txnHash_not_contains: Bytes
  totalClaims: Int
  totalClaims_not: Int
  totalClaims_gt: Int
  totalClaims_lt: Int
  totalClaims_gte: Int
  totalClaims_lte: Int
  totalClaims_in: [Int!]
  totalClaims_not_in: [Int!]
  managerAddress: Bytes
  managerAddress_not: Bytes
  managerAddress_gt: Bytes
  managerAddress_lt: Bytes
  managerAddress_gte: Bytes
  managerAddress_lte: Bytes
  managerAddress_in: [Bytes!]
  managerAddress_not_in: [Bytes!]
  managerAddress_contains: Bytes
  managerAddress_not_contains: Bytes
  address: Bytes
  address_not: Bytes
  address_gt: Bytes
  address_lt: Bytes
  address_gte: Bytes
  address_lte: Bytes
  address_in: [Bytes!]
  address_not_in: [Bytes!]
  address_contains: Bytes
  address_not_contains: Bytes
  tokenType: TokenType
  tokenType_not: TokenType
  tokenType_in: [TokenType!]
  tokenType_not_in: [TokenType!]
  impl: Bytes
  impl_not: Bytes
  impl_gt: Bytes
  impl_lt: Bytes
  impl_gte: Bytes
  impl_lte: Bytes
  impl_in: [Bytes!]
  impl_not_in: [Bytes!]
  impl_contains: Bytes
  impl_not_contains: Bytes
  claims_: ERC721Claim_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [ERC721Campaign_filter]
  or: [ERC721Campaign_filter]
}

enum ERC721Campaign_orderBy {
  id
  createdAt
  txnHash
  totalClaims
  managerAddress
  address
  tokenType
  impl
  claims
}

type ERC721Claim implements Claim & _ERC721Claim {
  id: ID!
  createdAt: BigInt!
  userAddress: Bytes!
  txnHash: Bytes!
  campaign: ERC721Campaign!
}

input ERC721Claim_filter {
  id: ID
  id_not: ID
  id_gt: ID
  id_lt: ID
  id_gte: ID
  id_lte: ID
  id_in: [ID!]
  id_not_in: [ID!]
  createdAt: BigInt
  createdAt_not: BigInt
  createdAt_gt: BigInt
  createdAt_lt: BigInt
  createdAt_gte: BigInt
  createdAt_lte: BigInt
  createdAt_in: [BigInt!]
  createdAt_not_in: [BigInt!]
  userAddress: Bytes
  userAddress_not: Bytes
  userAddress_gt: Bytes
  userAddress_lt: Bytes
  userAddress_gte: Bytes
  userAddress_lte: Bytes
  userAddress_in: [Bytes!]
  userAddress_not_in: [Bytes!]
  userAddress_contains: Bytes
  userAddress_not_contains: Bytes
  txnHash: Bytes
  txnHash_not: Bytes
  txnHash_gt: Bytes
  txnHash_lt: Bytes
  txnHash_gte: Bytes
  txnHash_lte: Bytes
  txnHash_in: [Bytes!]
  txnHash_not_in: [Bytes!]
  txnHash_contains: Bytes
  txnHash_not_contains: Bytes
  campaign: String
  campaign_not: String
  campaign_gt: String
  campaign_lt: String
  campaign_gte: String
  campaign_lte: String
  campaign_in: [String!]
  campaign_not_in: [String!]
  campaign_contains: String
  campaign_contains_nocase: String
  campaign_not_contains: String
  campaign_not_contains_nocase: String
  campaign_starts_with: String
  campaign_starts_with_nocase: String
  campaign_not_starts_with: String
  campaign_not_starts_with_nocase: String
  campaign_ends_with: String
  campaign_ends_with_nocase: String
  campaign_not_ends_with: String
  campaign_not_ends_with_nocase: String
  campaign_: ERC721Campaign_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [ERC721Claim_filter]
  or: [ERC721Claim_filter]
}

enum ERC721Claim_orderBy {
  id
  createdAt
  userAddress
  txnHash
  campaign
  campaign__id
  campaign__createdAt
  campaign__txnHash
  campaign__totalClaims
  campaign__managerAddress
  campaign__address
  campaign__tokenType
  campaign__impl
}

"""Defines the order direction, either ascending or descending"""
enum OrderDirection {
  asc
  desc
}

type Query {
  erc20Campaign(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC20Campaign
  erc20Campaigns(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC20Campaign_orderBy
    orderDirection: OrderDirection
    where: _ERC20Campaign_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC20Campaign!]!
  erc20Claim(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC20Claim
  erc20Claims(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC20Claim_orderBy
    orderDirection: OrderDirection
    where: _ERC20Claim_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC20Claim!]!
  erc721Campaign(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC721Campaign
  erc721Campaigns(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC721Campaign_orderBy
    orderDirection: OrderDirection
    where: _ERC721Campaign_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC721Campaign!]!
  erc721Claim(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC721Claim
  erc721Claims(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC721Claim_orderBy
    orderDirection: OrderDirection
    where: _ERC721Claim_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC721Claim!]!
  campaign(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): Campaign
  campaigns(
    skip: Int = 0
    first: Int = 100
    orderBy: Campaign_orderBy
    orderDirection: OrderDirection
    where: Campaign_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [Campaign!]!
  claim(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): Claim
  claims(
    skip: Int = 0
    first: Int = 100
    orderBy: Claim_orderBy
    orderDirection: OrderDirection
    where: Claim_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [Claim!]!
  """Access to subgraph metadata"""
  _meta(block: Block_height): _Meta_
}

type Subscription {
  erc20Campaign(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC20Campaign
  erc20Campaigns(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC20Campaign_orderBy
    orderDirection: OrderDirection
    where: _ERC20Campaign_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC20Campaign!]!
  erc20Claim(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC20Claim
  erc20Claims(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC20Claim_orderBy
    orderDirection: OrderDirection
    where: _ERC20Claim_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC20Claim!]!
  erc721Campaign(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC721Campaign
  erc721Campaigns(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC721Campaign_orderBy
    orderDirection: OrderDirection
    where: _ERC721Campaign_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC721Campaign!]!
  erc721Claim(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): _ERC721Claim
  erc721Claims(
    skip: Int = 0
    first: Int = 100
    orderBy: _ERC721Claim_orderBy
    orderDirection: OrderDirection
    where: _ERC721Claim_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [_ERC721Claim!]!
  campaign(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): Campaign
  campaigns(
    skip: Int = 0
    first: Int = 100
    orderBy: Campaign_orderBy
    orderDirection: OrderDirection
    where: Campaign_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [Campaign!]!
  claim(
    id: ID!
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): Claim
  claims(
    skip: Int = 0
    first: Int = 100
    orderBy: Claim_orderBy
    orderDirection: OrderDirection
    where: Claim_filter
    """
    The block at which the query should be executed. Can either be a `{ hash: Bytes }` value containing a block hash, a `{ number: Int }` containing the block number, or a `{ number_gte: Int }` containing the minimum block number. In the case of `number_gte`, the query will be executed on the latest block only if the subgraph has progressed to or past the minimum block number. Defaults to the latest block when omitted.
    """
    block: Block_height
    """
    Set to `allow` to receive data even if the subgraph has skipped over errors while syncing.
    """
    subgraphError: _SubgraphErrorPolicy_! = deny
  ): [Claim!]!
  """Access to subgraph metadata"""
  _meta(block: Block_height): _Meta_
}

enum TokenType {
  ERC721Token
  ERC721SoulboundToken
  ERC721TokenNativeGaslessMint
  ERC721SoulboundTokenNativeGaslessMint
}

type _Block_ {
  """The hash of the block"""
  hash: Bytes
  """The block number"""
  number: Int!
  """Integer representation of the timestamp stored in blocks for the chain"""
  timestamp: Int
}

interface _ERC20Campaign {
  claims(skip: Int = 0, first: Int = 100, orderBy: ERC20Claim_orderBy, orderDirection: OrderDirection, where: ERC20Claim_filter): [ERC20Claim!]!
}

input _ERC20Campaign_filter {
  claims_: ERC20Claim_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [_ERC20Campaign_filter]
  or: [_ERC20Campaign_filter]
}

enum _ERC20Campaign_orderBy {
  claims
}

interface _ERC20Claim {
  campaign: ERC20Campaign!
}

input _ERC20Claim_filter {
  campaign: String
  campaign_not: String
  campaign_gt: String
  campaign_lt: String
  campaign_gte: String
  campaign_lte: String
  campaign_in: [String!]
  campaign_not_in: [String!]
  campaign_contains: String
  campaign_contains_nocase: String
  campaign_not_contains: String
  campaign_not_contains_nocase: String
  campaign_starts_with: String
  campaign_starts_with_nocase: String
  campaign_not_starts_with: String
  campaign_not_starts_with_nocase: String
  campaign_ends_with: String
  campaign_ends_with_nocase: String
  campaign_not_ends_with: String
  campaign_not_ends_with_nocase: String
  campaign_: ERC20Campaign_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [_ERC20Claim_filter]
  or: [_ERC20Claim_filter]
}

enum _ERC20Claim_orderBy {
  campaign
  campaign__id
  campaign__createdAt
  campaign__txnHash
  campaign__totalClaims
  campaign__managerAddress
  campaign__campaignId
}

interface _ERC721Campaign {
  claims(skip: Int = 0, first: Int = 100, orderBy: ERC721Claim_orderBy, orderDirection: OrderDirection, where: ERC721Claim_filter): [ERC721Claim!]!
}

input _ERC721Campaign_filter {
  claims_: ERC721Claim_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [_ERC721Campaign_filter]
  or: [_ERC721Campaign_filter]
}

enum _ERC721Campaign_orderBy {
  claims
}

interface _ERC721Claim {
  campaign: ERC721Campaign!
}

input _ERC721Claim_filter {
  campaign: String
  campaign_not: String
  campaign_gt: String
  campaign_lt: String
  campaign_gte: String
  campaign_lte: String
  campaign_in: [String!]
  campaign_not_in: [String!]
  campaign_contains: String
  campaign_contains_nocase: String
  campaign_not_contains: String
  campaign_not_contains_nocase: String
  campaign_starts_with: String
  campaign_starts_with_nocase: String
  campaign_not_starts_with: String
  campaign_not_starts_with_nocase: String
  campaign_ends_with: String
  campaign_ends_with_nocase: String
  campaign_not_ends_with: String
  campaign_not_ends_with_nocase: String
  campaign_: ERC721Campaign_filter
  """Filter for the block changed event."""
  _change_block: BlockChangedFilter
  and: [_ERC721Claim_filter]
  or: [_ERC721Claim_filter]
}

enum _ERC721Claim_orderBy {
  campaign
  campaign__id
  campaign__createdAt
  campaign__txnHash
  campaign__totalClaims
  campaign__managerAddress
  campaign__address
  campaign__tokenType
  campaign__impl
}

"""The type for the top-level _meta field"""
type _Meta_ {
  """
  Information about a specific subgraph block. The hash of the block
  will be null if the _meta field has a block constraint that asks for
  a block number. It will be filled if the _meta field has no block constraint
  and therefore asks for the latest  block
  
  """
  block: _Block_!
  """The deployment ID"""
  deployment: String!
  """If `true`, the subgraph encountered indexing errors at some past block"""
  hasIndexingErrors: Boolean!
}

enum _SubgraphErrorPolicy_ {
  """Data will be returned even if the subgraph has indexing errors"""
  allow
  """
  If the subgraph has indexing errors, data will be omitted. The default.
  """
  deny
}

@sebastiantf
Copy link

sebastiantf commented May 17, 2023

It doesnt really seem like an issue with nested interfaces, but with the interface names?

Replacing the underscores in the interface names seem to fix the issue.
Sample: https://thegraph.com/hosted-service/subgraph/sebastiantf/ccm-interface-i-test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants