Skip to content

Commit 5189b1e

Browse files
authored
Merge pull request #1463 from input-output-hk/feat/provider-selection
feat(cardano-services): implement provider selection based on env variables and config
2 parents 7d78ad4 + 6c8c97d commit 5189b1e

File tree

6 files changed

+435
-93
lines changed

6 files changed

+435
-93
lines changed

packages/cardano-services/src/Program/options/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
export * from './providers';
12
export * from './common';
23
export * from './ogmios';
34
export * from './policyIds';
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { newOption } from './util';
2+
3+
export enum ProviderImplementation {
4+
TYPEORM = 'typeorm',
5+
BLOCKFROST = 'blockfrost',
6+
DBSYNC = 'dbsync',
7+
// Below ones are specific to TxSubmitProvider
8+
SUBMIT_NODE = 'submit-node',
9+
SUBMIT_API = 'submit-api'
10+
}
11+
12+
export type ProviderImplementations = {
13+
assetProvider?: ProviderImplementation;
14+
rewardsProvider?: ProviderImplementation;
15+
networkInfoProvider?: ProviderImplementation;
16+
utxoProvider?: ProviderImplementation;
17+
txSubmitProvider?: ProviderImplementation;
18+
chainHistoryProvider?: ProviderImplementation;
19+
stakePoolProvider?: ProviderImplementation;
20+
};
21+
export const ProviderImplementationDescription = 'Select one of the available provider implementations';
22+
const argParser = (impl: string) => ProviderImplementation[impl.toUpperCase() as keyof typeof ProviderImplementation];
23+
export const providerSelectionOptions = [
24+
newOption(
25+
'--asset-provider <implementation>',
26+
ProviderImplementationDescription,
27+
'ASSET_PROVIDER',
28+
argParser,
29+
ProviderImplementation.DBSYNC
30+
)
31+
.conflicts('useTypeormAssetProvider')
32+
.choices([ProviderImplementation.BLOCKFROST, ProviderImplementation.DBSYNC, ProviderImplementation.TYPEORM]),
33+
newOption(
34+
'--stake-pool-provider <implementation>',
35+
ProviderImplementationDescription,
36+
'STAKE_POOL_PROVIDER',
37+
argParser,
38+
ProviderImplementation.DBSYNC
39+
)
40+
.conflicts('useTypeormStakePoolProvider')
41+
.choices([ProviderImplementation.DBSYNC, ProviderImplementation.TYPEORM]),
42+
newOption(
43+
'--utxo-provider <implementation>',
44+
ProviderImplementationDescription,
45+
'UTXO_PROVIDER',
46+
argParser,
47+
ProviderImplementation.DBSYNC
48+
).choices([ProviderImplementation.BLOCKFROST, ProviderImplementation.DBSYNC]),
49+
newOption(
50+
'--chain-history-provider <implementation>',
51+
ProviderImplementationDescription,
52+
'CHAIN_HISTORY_PROVIDER',
53+
argParser,
54+
ProviderImplementation.DBSYNC
55+
).choices([ProviderImplementation.BLOCKFROST, ProviderImplementation.DBSYNC]),
56+
newOption(
57+
'--rewards-provider <implementation>',
58+
ProviderImplementationDescription,
59+
'REWARDS_PROVIDER',
60+
argParser,
61+
ProviderImplementation.DBSYNC
62+
).choices([ProviderImplementation.BLOCKFROST, ProviderImplementation.DBSYNC]),
63+
newOption(
64+
'--network-info-provider <implementation>',
65+
ProviderImplementationDescription,
66+
'NETWORK_INFO_PROVIDER',
67+
argParser,
68+
ProviderImplementation.DBSYNC
69+
).choices([ProviderImplementation.BLOCKFROST, ProviderImplementation.DBSYNC]),
70+
newOption(
71+
'--tx-submit-provider <implementation>',
72+
ProviderImplementationDescription,
73+
'TX_SUBMIT_PROVIDER',
74+
argParser,
75+
ProviderImplementation.SUBMIT_NODE
76+
)
77+
.conflicts('useSubmitApi')
78+
.choices([ProviderImplementation.BLOCKFROST, ProviderImplementation.SUBMIT_API, ProviderImplementation.SUBMIT_NODE])
79+
];

0 commit comments

Comments
 (0)