Skip to content

addFilterArg not being processed when using AND/OR/_operators #445

Open
@seansabour

Description

@seansabour
DbinstanceTC.mongooseResolvers
    .pagination({ suffix: "Extended" })
    .addArgs({
      filterNodeInfo: DNSCNameTC.mongooseResolvers
        .pagination()
        .getArg("filter"),
    })
    .addArgs({
      filterEnvironmentLink: EnvironmentTC.mongooseResolvers
        .pagination()
        .getArg("filter"),
    })
    .addFilterArg({
      name: "isDatabaseEmpty",
      type: "Boolean",
      description: "Filter by empty or non-empty databases array",
      query: (rawQuery, value) => {
        if (value !== undefined) {
          rawQuery.databases = value ? { $size: 0 } : { $not: { $size: 0 } };
        }
      },
    })
    .withMiddlewares([authorizeGraphQL([Roles.Admin, Roles.Inventory])])
    .wrapResolve(processChildFilters)
    .wrapResolve(addEnvFilters),

This works fine, when running a query like this:

{
  dbinstancePagination(
    page: 1
    perPage: 50
    filter: {isDatabaseEmpty: true}
  ) {
    items {
      _id
      name
      tenantCount
      databases {
        _id
        name
        type
      }
    }
    pageInfo {
      currentPage
      perPage
      pageCount
      itemCount
      hasNextPage
      hasPreviousPage
    }
  }
}

but when running this it returns non-empty databases:

{
  dbinstancePagination(
    page: 1
    perPage: 50
    filter: {AND: [{isDatabaseEmpty: true}, {name: "mysql" }]}
  ) {
    items {
      _id
      name
      tenantCount
      databases {
        _id
        name
        type
      }
    }
    pageInfo {
      currentPage
      perPage
      pageCount
      itemCount
      hasNextPage
      hasPreviousPage
    }
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions