Saltar al contenido principal

Index select

Notación

En vez de colocar {} para envolver la selección se usa #{}.

const query = `{
product #{
id, name
},
product.provider #{
id, name
},
}`

Funcionamiento

No ejecuta selección sobre el campo, es decir que es equivalente a no listar lo que se necesita, sin embargo, si modifica el índice.

const query1 = `{
product #{
id, name
}
}`

const query2 = `{
product
}`

const query3 = `{
product {
id, name
}
}`

Si se ejecuta apply, el resultado de query1 y query2 es exactamente el mismo, mientras que si se usa includes la query1 dará los mismos resultados que la query3.

Funciona con:

access y select utilizando la misma notación

Ejemplo

Datos

const input = {
products: [
{ id: 1, name: "product 1" },
{ id: 2, name: "product 2" },
{ id: 3, name: "product 3" }
]
}

Query

import { qmapCreator } from "@qmap/engine"

const qmap = qmapCreator()

const executors = qmap(`{
products #{
name
}
}`)

Resultado

const result = executors.apply(input)
// result == input

El índice

El cambio se obtiene en esta parte, consultar si se encuentra name, será verdadero, mientras que cualquier otro campo dará un resultado false.

executors.includes(["products", "name"]) // true
executors.includes(["products", "id"]) // false
executors.includes(["products", "any"]) // false