Comments (11)
@abelosorio I'm looking myself - I've found this: https://github.com/blueflag/graphql-aggregate but I'm still mid-evaluation
from graphql-sequelize.
Not sure we can come up with a design that accurately handles all the cases of aggregations.
The aggregations i have in my code are custom implementations, did not see a pattern that i could make generic.
from graphql-sequelize.
OK, thanks - so I'm better off doing a raw query from GraphQL? That's fine - just checking I wasn't missing anything really.
from graphql-sequelize.
@joewood or using Model.aggregate possibly
from graphql-sequelize.
Ah, it seems I was missing something. Thanks.
from graphql-sequelize.
One suggestion that would be really great to add to the library would be a special resolver
function that performs an aggregation function on the linked association. This would mean modifying the resolver factory function to include the details of the .aggregate
function. And also modify generateIncludes
to integrate this into the generated SQL. So it would be used something like this:
let customerType = new GraphQLObjectType({
name:"Customer",
fields: () => _.extend(attributeFrields(customerTable), {
orderCount: {
type: GraphQLInt,
resolve: aggregateResolver(customerTable.associations.orders,"count")
}
});
The generated SQL would have to group by all the fields outside of the aggregate association.
from graphql-sequelize.
@joewood Mixing aggregations and includes can be tricky. With window functions you can do the most basic ones though.
from graphql-sequelize.
Any news about this? I need to use aggregations but I can't found any documentation of that...
from graphql-sequelize.
@lauraannwilliams could be useful. I'm using raw queries by now, but it's not a great solution. There is another way else to use aggregation in GraphQL?
from graphql-sequelize.
Hello @abelosorio, I think I figure out the pattern to get COUNT
:
const modelType = new GraphQLObjectType({
name: 'Model',
fields: attributeFields(models.Model)
});
const modelWithCountType = new GraphQlObjectType({
name: 'ModelWithCount',
fields: {
models: { type: new GraphQLList(modelType) },
count: { type: GraphQLInt }
}
});
const query = {
type: modelWithCountType,
args: { // some query arguments },
resolve: resolver(models.Model, {
list: true, // NOTE: we return list of Models but using ModelWithCountType
after: (models) => ({ models, count: models.length })
}),
}
To summarize that: you need to create a GraphQL wrapper and manipulate a little with returned results. I hope it helps :)
from graphql-sequelize.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
from graphql-sequelize.
Related Issues (20)
- Combining multiple associations HOT 5
- Problem integrating connection types and dataloader for paginated (cursor) queries HOT 1
- When using `JSONType` I get `Error: One of the provided types for building the Schema is missing a name.` HOT 2
- Can we use `attributeFields` with graphql SDL? HOT 2
- How to express two way relationship HOT 2
- Change the default name of Date scalar HOT 3
- Relay Connections with Dataloader HOT 4
- Is this working with GraphQL 15? HOT 2
- sequelize model comment => graphql field description HOT 4
- CITEXT throws an issue in the latest version HOT 7
- Unable to convert geometry to graphql type HOT 1
- Are filtering operators supported? HOT 2
- OrderBy can conflicts with Attributes HOT 1
- Passing `where:` in-place, without query variable HOT 2
- Fix order type in defaultListArgs HOT 6
- Compatibility with GraphQL v17 HOT 1
- Peer dependency support for graphql 16 HOT 2
- OrderBy doesn't pass multiple to the query HOT 1
- Changing relay edges to be nonNull causes a node error HOT 3
- Use graphql-sequelize with dataloader-sequelize HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphql-sequelize.