All checks were successful
/ build (map[dockerfile:./services/hasura/Dockerfile name:hasura]) (push) Successful in 47s
/ build (map[dockerfile:./services/web/Dockerfile name:web]) (push) Successful in 1m47s
/ build (map[dockerfile:./services/watchers/Dockerfile name:watchers]) (push) Successful in 2m37s
/ build (map[dockerfile:./services/files/Dockerfile name:files]) (push) Successful in 2m52s
/ build (map[dockerfile:./services/api/Dockerfile name:api]) (push) Successful in 3m2s
/ build (map[dockerfile:./services/app/Dockerfile name:app]) (push) Successful in 31s
/ build (map[dockerfile:./services/tasks/Dockerfile name:tasks]) (push) Successful in 2m44s
/ deploy (push) Successful in 48s
30 lines
631 B
JavaScript
30 lines
631 B
JavaScript
// deprecated, replaced by redis qdedup
|
|
|
|
module.exports = () => {
|
|
const localCacheIds = new Set()
|
|
|
|
return async function (iteratee, callback, getKey = ({ id }) => id) {
|
|
const iterationIds = new Set()
|
|
|
|
for (const row of iteratee) {
|
|
const key = getKey(row)
|
|
iterationIds.add(key)
|
|
|
|
// skip already sent tasks
|
|
if (localCacheIds.has(key)) {
|
|
continue
|
|
}
|
|
|
|
// send task
|
|
await callback(row)
|
|
localCacheIds.add(key)
|
|
}
|
|
|
|
// cleanup
|
|
for (const key of localCacheIds.values()) {
|
|
if (!iterationIds.has(key)) {
|
|
localCacheIds.delete(key)
|
|
}
|
|
}
|
|
}
|
|
}
|