File tree Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Expand file tree Collapse file tree 1 file changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -3,3 +3,23 @@ import * as merge from "deepmerge";
3
3
// Helper function to combine multiple resolver definition hashes into a single hash for consumption by Apollostack's graphql-server
4
4
export const combineResolvers = ( resolvers = [ ] ) => resolvers
5
5
. reduce ( ( combined , resolver ) => merge ( combined , resolver ) ) ;
6
+
7
+ export const and = ( ...conditions ) => resolver => {
8
+ return conditions . reduceRight ( ( p , c ) => {
9
+ return c . createResolver ( p ) ;
10
+ } , resolver )
11
+ }
12
+
13
+ export const or = ( ...conditions ) => resolver => ( ...query ) => {
14
+ return new Promise ( ( resolve , reject ) => {
15
+ let limit = conditions . length - 1 ;
16
+ const attempt = ( i ) =>
17
+ conditions [ limit - i ] . createResolver ( resolver ) ( ...query )
18
+ . then ( res => resolve ( res ) )
19
+ . catch ( err => {
20
+ if ( i === limit ) reject ( err ) ;
21
+ else attempt ( i + 1 ) ;
22
+ } ) ;
23
+ attempt ( 0 ) ;
24
+ } ) ;
25
+ }
You can’t perform that action at this time.
0 commit comments