Olá João! Tudo bem com você?
Peço desculpa pela demora para responder o seu tópico.
Para retornar a quantidade por status utilizando GraphQL, você pode seguir os seguintes passos:
1 - Primeiro, defina o schema do GraphQL com o tipo de dado que representa a quantidade por status. Por exemplo:
type StatusCount {
status: String
count: Int
}
2 - Em seguida, defina a query que irá retornar a quantidade por status. Por exemplo:
type Query {
statusCounts: [StatusCount]
}
3 - Implemente a resolução da query no resolver. Você pode utilizar a lógica que você já conhece em SQL para contar os registros por status e retornar os resultados. Por exemplo:
const resolvers = {
Query: {
statusCounts: () => {
// Lógica para contar os registros por status e retornar os resultados
const items = [
{ status: 'A' },
{ status: 'A' },
{ status: 'A' },
{ status: 'B' },
{ status: 'B' },
{ status: 'B' },
{ status: 'B' },
{ status: 'B' },
{ status: 'C' }
];
const counts = {};
items.forEach(item => {
if (counts[item.status]) {
counts[item.status]++;
} else {
counts[item.status] = 1;
}
});
return Object.keys(counts).map(status => ({
status,
count: counts[status]
}));
}
}
};
4 - Agora, você pode executar a query statusCounts
para obter a quantidade por status. Por exemplo:
query {
statusCounts {
status
count
}
}
Dessa forma você conseguirá obter um resultado parecido com a query que você comentou. Contudo, o exemplo que dei deve ser adequado para o seu projeto, você deve realizar os ajustes tanto na parte das querys do GraphQL, quanto no código do resolvers.
Espero ter ajudado. Caso tenha mais dúvidas ou problemas, relacionados com esse tópico, estarei à disposição para ajudá-lo.
Grande abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.