Skip to content

Commit 75dee01

Browse files
committed
Fix for when there are more than 25 resolvers for a type
1 parent 61cef3f commit 75dee01

File tree

1 file changed

+46
-31
lines changed

1 file changed

+46
-31
lines changed

cli.js

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,16 @@ program
6969
})
7070
}
7171

72-
function _fetchResolvers(apiId, typeName) {
72+
function _fetchResolvers(apiId, typeName, nextToken) {
7373
return new Promise(function(resolve, reject) {
7474
let params = {
7575
apiId: apiId,
7676
typeName: typeName,
7777
maxResults: 25
7878
};
79+
if (nextToken) {
80+
params.nextToken = nextToken;
81+
}
7982
appsync.listResolvers(params, function(err, data) {
8083
if (err)
8184
return reject(err)
@@ -142,47 +145,59 @@ program
142145
}
143146
],
144147
function(err, results) {
145-
if (err)
146-
return reject(err)
148+
if (err) {
149+
console.log("Error", err);
150+
return reject(err)
151+
}
147152
else
148153
return resolve(null)
149154
});
150155
})
151156
}
152157

158+
function processAllResolvers(type, nextToken, eachCallback) {
159+
async.waterfall([
160+
function fetchResolvers(cb) {
161+
console.log("Fetching resolvers for", type.name, nextToken);
162+
_fetchResolvers(API_ID, type.name, nextToken).then(function(data) {
163+
cb(null, data);
164+
}).catch(function(e) {
165+
cb(e);
166+
})
167+
},
168+
function writeResolvers(data, cb) {
169+
if (data.resolvers.length > 0) {
170+
async.each(data.resolvers, function(resolver, resolverCallback) {
171+
_writeMappingTemplates(type.name, resolver).then(function() {
172+
resolverCallback(null, data)
173+
}).catch(function(err) {
174+
console.log("Err", err);
175+
resolverCallback(err, data)
176+
})
177+
}, function(err) {
178+
cb(null, data)
179+
})
180+
} else {
181+
console.log('No resolvers for ', type.name)
182+
cb(null, 'NO_RESOLVER');
183+
}
184+
}
185+
], function(err, data) {
186+
if (data != 'NO_RESOLVER' && data.nextToken != null && data.nextToken != undefined) {
187+
processAllResolvers(type, data.nextToken, eachCallback);
188+
} else
189+
eachCallback(err, null)
190+
});
191+
}
192+
153193
function ProcessAPI(params, callback) {
154194
_getDataTypes(params, function(err, data) {
155195
if (err)
156196
return callback(err)
157197
async.each(data.types, function(type, eachCallback) {
158-
async.waterfall([
159-
function fetchResolvers(cb) {
160-
_fetchResolvers(API_ID, type.name).then(function(data) {
161-
cb(null, data);
162-
}).catch(function(e) {
163-
cb(e);
164-
})
165-
},
166-
function writeResolvers(data, cb) {
167-
if (data.resolvers.length > 0) {
168-
async.each(data.resolvers, function(resolver, resolverCallback) {
169-
_writeMappingTemplates(type.name, resolver).then(function() {
170-
resolverCallback(null)
171-
}).catch(function(err) {
172-
resolverCallback(err)
173-
})
174-
}, function(err, done) {
175-
cb(null)
176-
})
177-
} else {
178-
console.log('No resolvers for ', type.name)
179-
cb(null, 'NO_RESOLVER');
180-
}
181-
}
182-
], function(err, done) {
183-
eachCallback(err, done)
184-
});
185-
}, function(err, done) {
198+
processAllResolvers(type, null, eachCallback);
199+
}
200+
, function(err, done) {
186201
if (data.nextToken != null || data.nextToken != undefined) {
187202
params.nextToken = data.nextToken;
188203
ProcessAPI(params, callback)

0 commit comments

Comments
 (0)