Package Exports
- resolve-query
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (resolve-query) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
🔍 resolve-query
This package creates a function to execute a query.
Usage
import createQueryExecutor from 'resolve-query';
import createEventStore from 'resolve-es';
import createEsStorage from 'resolve-storage-memory';
import createBusDriver from 'resolve-bus-memory';
const storage = createEsStorage();
const bus = createBusDriver();
const eventStore = createEventStore({ storage, bus });
const readModels = [{
name: 'usersSimple',
initialState: [],
eventHandlers: {
UserCreated: (state, { payload }) => state.concat(payload)
},
gqlSchema: `
type User { id: ID!, UserName: String }
type Query { Users: [User], UserById(id: ID!): User }
`,
gqlResolvers: {
Users: root => root,
UserById: (root, args) => root.find(user => user.id === args.id)
}
}, {
name: 'usersGraphQL',
initialState: { Users: [] },
eventHandlers: {
UserAdded: (state, { aggregateId: id, payload: { UserName } }) => {
if (state.Users.find(user => user.id === id)) return state;
state.Users.push({ id, UserName });
return state;
},
UserDeleted: (state, { aggregateId: id }) => {
state.Users = state.Users.filter(user => user.id !== id);
return state;
}
},
gqlSchema: `
type User {
id: ID!
UserName: String
}
type Query {
Users: [User],
UserById(id: ID!): User
}
`,
gqlResolvers: {
UserById: (root, args) => root.Users.find(user => user.id === args.id)
}
}];
const query = createQueryExecutor({ eventStore, readModels });
// Request whole read-model state
query('users').then(state => {
console.log('Read model Users', state);
});
// Request by GraphQL query without paramaters
query('users', 'query { Users { id, UserName } }').then(state => {
console.log('Read model Users', state);
});
// Request by GraphQL query with paramaters
query(
'users',
'query ($testId: ID!) { UserById(id: $testId) { id, UserName } }',
{ testId: 1 }
).then(state => {
console.log('Read model Users', state);
});