@@ -7,43 +7,49 @@ import {
77 wrappedGetFromDb ,
88 wrappedSaveToDb
99} from './utils/dbUtils'
10- import { logger } from './utils/utils'
10+ import { logger , snooze } from './utils/utils'
1111
1212const providerAssets = {
1313 // coincap: coincapAssets, // Disabled because ZEC rates are bad. Can re-enable once we can blacklist IDs.
1414 coinMarketCap : coinMarketCapAssets ,
1515 coingecko : coingeckoAssets
1616}
1717
18+ const DEFAULT_WAIT_MS = 60 * 60 * 1000 // 1 hour
19+
1820export const uidEngine = async ( ) : Promise < void > => {
19- logger ( 'Updating UID Cache' )
20- try {
21- const edgeDoc = ( await wrappedGetFromDb ( [ 'currencyCodeMaps' ] ) ) [ 0 ]
22- const promises = Object . keys ( providerAssets ) . map ( provider =>
23- providerAssets [ provider ] ( )
24- . then ( newMap => {
25- // Combine the new UID map with existing UID map
26- const assetMap = { ...edgeDoc [ provider ] , ...newMap }
21+ while ( true ) {
22+ logger ( 'Updating UID Cache' )
23+ try {
24+ const edgeDoc = ( await wrappedGetFromDb ( [ 'currencyCodeMaps' ] ) ) [ 0 ]
25+ const promises = Object . keys ( providerAssets ) . map ( provider =>
26+ providerAssets [ provider ] ( )
27+ . then ( newMap => {
28+ // Combine the new UID map with existing UID map
29+ const assetMap = { ...edgeDoc [ provider ] , ...newMap }
2730
28- // Remove the UIDs for the currency codes we've hardcoded
29- for ( let i = 0 ; i < edgeDoc . allEdgeCurrencies . length ; i ++ ) {
30- delete assetMap [ edgeDoc . allEdgeCurrencies [ i ] ]
31- }
31+ // Remove the UIDs for the currency codes we've hardcoded
32+ for ( let i = 0 ; i < edgeDoc . allEdgeCurrencies . length ; i ++ ) {
33+ delete assetMap [ edgeDoc . allEdgeCurrencies [ i ] ]
34+ }
3235
33- // Combine our codes with the new ones
34- edgeDoc [ provider ] = {
35- ...assetMap ,
36- ...currencyCodeMaps [ provider ]
37- }
38- } )
39- . catch ( e => logger ( `Failed to update ${ provider } ` , e ) )
40- . finally ( logger ( `${ provider } provider updated` ) )
41- )
42- await Promise . allSettled ( promises )
43- wrappedSaveToDb ( [ edgeDoc ] )
44- } catch ( e ) {
45- const message = `ratesEngine failure: ${ e } `
46- slackMessage ( message ) . catch ( e => logger ( e ) )
47- logger ( message )
36+ // Combine our codes with the new ones
37+ edgeDoc [ provider ] = {
38+ ...assetMap ,
39+ ...currencyCodeMaps [ provider ]
40+ }
41+ } )
42+ . catch ( e => logger ( `Failed to update ${ provider } ` , e ) )
43+ . finally ( logger ( `${ provider } provider updated` ) )
44+ )
45+ await Promise . allSettled ( promises )
46+ wrappedSaveToDb ( [ edgeDoc ] )
47+ } catch ( e ) {
48+ const message = `ratesEngine failure: ${ e } `
49+ slackMessage ( message ) . catch ( e => logger ( e ) )
50+ logger ( message )
51+ }
52+ logger ( 'UID Cache updated. Snoozing for 1 hour' )
53+ await snooze ( DEFAULT_WAIT_MS )
4854 }
4955}
0 commit comments