singularise listing fetching
This commit is contained in:
1 parent
f2294def05
commit
bbc3fe6b48
4 files changed
+31
-27
No files matched your search
+2
-2
@@ -113,7 +113,7 @@ export default function createApi(log: Log, pg: Pg, discogs, offers, events) {
|
||||
const user = await pg.userFindId(ctx.state.user.id);
|
||||
const release = await discogs.release(releaseId);
|
||||
const want = await pg.wantCreate(release, user);
|
||||
events.emit(Events.WantsAdded, [want]);
|
||||
events.emit(Events.WantAdded, want);
|
||||
ctx.response.body = [want];
|
||||
});
|
||||
|
||||
@@ -122,7 +122,7 @@ export default function createApi(log: Log, pg: Pg, discogs, offers, events) {
|
||||
const { username } = ctx.request.body;
|
||||
const user = await pg.userFindId(ctx.state.user.id);
|
||||
const wants = await discogs.wantListSync(username, user);
|
||||
events.emit(Events.WantsAdded, wants);
|
||||
wants.forEach(w => events.emit(Events.WantAdded, w));
|
||||
ctx.response.body = wants;
|
||||
});
|
||||
|
||||
|
||||
+25
-21
@@ -9,7 +9,7 @@ import { wantDetails } from './utils';
|
||||
import routerAuth from './routers/router.auth';
|
||||
|
||||
export enum Events {
|
||||
WantsAdded = 'WantsAdded',
|
||||
WantAdded = 'WantAdded',
|
||||
StartupSync = 'StartupSync',
|
||||
ListingsUpdated = 'ListingsUpdated',
|
||||
}
|
||||
@@ -17,37 +17,41 @@ export enum Events {
|
||||
export default function createEvents(log: Log, pg: Pg, discogs, offers) {
|
||||
const events = new EventEmitter({ captureRejections: true });
|
||||
|
||||
async function populateListings(want: Want) {
|
||||
try {
|
||||
const listings = await discogs.listings(want);
|
||||
return listings;
|
||||
} catch (e) {
|
||||
if (e.message === 'rate limited') {
|
||||
log.warn('rate limited, trying again in 60s');
|
||||
await setTimeout(60 * 1000);
|
||||
return populateListings(want);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
events.on('error', function eventError(e) {
|
||||
log.error('event error', e);
|
||||
});
|
||||
|
||||
events.on(Events.WantsAdded, async function wantsAdded(wants: Want[]) {
|
||||
log.info({ event: Events.WantsAdded, wants: wants.length });
|
||||
for (const want of wants) {
|
||||
const listings = await discogs.listings(want);
|
||||
log.info({ count: listings.length, ...wantDetails(want) }, 'listings added')
|
||||
}
|
||||
|
||||
log.info('finished fetching listings', { wants: wants.length });
|
||||
events.on(Events.WantAdded, async function wantAdded(want: Want) {
|
||||
log.info({ event: Events.WantAdded, ...wantDetails(want) });
|
||||
const listings = await populateListings(want);
|
||||
log.info({ listings: listings.length, ...wantDetails(want) }, 'listings added');
|
||||
events.emit(Events.ListingsUpdated);
|
||||
});
|
||||
|
||||
events.on(Events.StartupSync, async function wantsAdded() {
|
||||
events.on(Events.StartupSync, async function wantAdded() {
|
||||
const wants = await pg.wantsToSync();
|
||||
log.info({ event: Events.StartupSync, wants: wants.length });
|
||||
|
||||
for (const want of wants) {
|
||||
try {
|
||||
const listings = await discogs.listings(want);
|
||||
log.info({ count: listings.length, ...wantDetails(want) }, 'listings added')
|
||||
} catch (e) {
|
||||
if (e.message === 'rate limited') {
|
||||
log.warn('rate limited, trying again in 60s');
|
||||
await setTimeout(60 * 1000);
|
||||
const listings = await discogs.listings(want);
|
||||
}
|
||||
}
|
||||
const listings = await populateListings(want);
|
||||
log.info({ listings: listings.length, ...wantDetails(want) }, 'listings added');
|
||||
}
|
||||
log.info('finished syncing', { wants: wants.length });
|
||||
|
||||
log.info({ wants: wants.length }, 'finished syncing');
|
||||
events.emit(Events.ListingsUpdated);
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user