Skip to content

Commit f30427b

Browse files
feat: dune ids as env vars (#196)
1 parent 56fac16 commit f30427b

5 files changed

Lines changed: 45 additions & 16 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export function getAffiliateProgramTableName(): string {
2+
const value = process.env.DUNE_AFFILIATE_PROGRAM_TABLE_NAME;
3+
if (!value) {
4+
throw new Error('DUNE_AFFILIATE_PROGRAM_TABLE_NAME is not set');
5+
}
6+
return value;
7+
}

libs/services/src/AffiliateProgramExportService/AffiliateProgramExportServiceImpl.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import {
44
AffiliateProgramExportService,
55
AffiliateProgramSignature,
66
} from './AffiliateProgramExportService';
7-
8-
const AFFILIATE_PROGRAM_TABLE_NAME = 'affiliate_program_data';
7+
import { getAffiliateProgramTableName } from './AffiliateProgramExportService.config';
98

109
type AffiliateProgramRow = {
1110
code: string;
@@ -89,16 +88,15 @@ export class AffiliateProgramExportServiceImpl
8988

9089
private async upload(rows: AffiliateProgramRow[]): Promise<void> {
9190
const csv = buildCsv(rows);
91+
const tableName = getAffiliateProgramTableName();
9292
const response = await this.duneRepository.uploadCsv({
93-
tableName: AFFILIATE_PROGRAM_TABLE_NAME,
93+
tableName,
9494
data: csv,
9595
isPrivate: true,
9696
});
9797
if (!response.success) {
9898
const message = response.message ? `: ${response.message}` : '';
99-
throw new Error(
100-
`Dune CSV upload failed for ${AFFILIATE_PROGRAM_TABLE_NAME}${message}`
101-
);
99+
throw new Error(`Dune CSV upload failed for ${tableName}${message}`);
102100
}
103101
}
104102
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export function getDuneQueryIds(): {
2+
traderStats: number;
3+
affiliateStats: number;
4+
} {
5+
const traderRaw = process.env.DUNE_QUERY_ID_TRADER_STATS;
6+
if (!traderRaw) {
7+
throw new Error('DUNE_QUERY_ID_TRADER_STATS is not set');
8+
}
9+
const traderStats = Number.parseInt(traderRaw, 10);
10+
if (Number.isNaN(traderStats)) {
11+
throw new Error('DUNE_QUERY_ID_TRADER_STATS must be an integer');
12+
}
13+
14+
const affiliateRaw = process.env.DUNE_QUERY_ID_AFFILIATE_STATS;
15+
if (!affiliateRaw) {
16+
throw new Error('DUNE_QUERY_ID_AFFILIATE_STATS is not set');
17+
}
18+
const affiliateStats = Number.parseInt(affiliateRaw, 10);
19+
if (Number.isNaN(affiliateStats)) {
20+
throw new Error('DUNE_QUERY_ID_AFFILIATE_STATS must be an integer');
21+
}
22+
23+
return { traderStats, affiliateStats };
24+
}
25+
26+
export const DUNE_PAGE_SIZE = 1000 as const;
27+
export const DUNE_MAX_ROWS = 1_000_000 as const;

libs/services/src/AffiliateStatsService/AffiliateStatsService.constants.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

libs/services/src/AffiliateStatsService/AffiliateStatsServiceImpl.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ import {
77
TraderStatsResult,
88
TraderStatsRow,
99
} from './AffiliateStatsService';
10-
import { DUNE_MAX_ROWS, DUNE_PAGE_SIZE, DUNE_QUERY_IDS } from './AffiliateStatsService.constants';
10+
import {
11+
DUNE_MAX_ROWS,
12+
DUNE_PAGE_SIZE,
13+
getDuneQueryIds,
14+
} from './AffiliateStatsService.config';
1115
import type { AffiliateStatsRowRaw, CacheEntry, TraderStatsRowRaw } from './AffiliateStatsService.types';
1216
import {
1317
isAffiliateStatsRowRaw,
@@ -33,7 +37,7 @@ export class AffiliateStatsServiceImpl implements AffiliateStatsService {
3337
TraderStatsRow
3438
>({
3539
cacheKey: 'affiliate-trader-stats',
36-
queryId: DUNE_QUERY_IDS.traderStats,
40+
queryId: getDuneQueryIds().traderStats,
3741
typeAssertion: isTraderStatsRowRaw,
3842
mapRow: normalizeTraderStatsRow,
3943
});
@@ -52,7 +56,7 @@ export class AffiliateStatsServiceImpl implements AffiliateStatsService {
5256
AffiliateStatsRow
5357
>({
5458
cacheKey: 'affiliate-stats',
55-
queryId: DUNE_QUERY_IDS.affiliateStats,
59+
queryId: getDuneQueryIds().affiliateStats,
5660
typeAssertion: isAffiliateStatsRowRaw,
5761
mapRow: normalizeAffiliateStatsRow,
5862
});

0 commit comments

Comments
 (0)