From 8bcf08d415d417d8fa804d67d2a47c62f495730d Mon Sep 17 00:00:00 2001 From: Vladimir Volek Date: Tue, 5 Dec 2023 15:07:06 +0100 Subject: [PATCH] feat: feature flags --- config/development.yaml | 2 ++ src/app.ts | 15 ++++++++++----- src/config.ts | 2 ++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/config/development.yaml b/config/development.yaml index 23de9ac1..ab441f6c 100644 --- a/config/development.yaml +++ b/config/development.yaml @@ -2,6 +2,8 @@ server: listenAddress: "localhost" port: 3000 debug: true + features: + - CIP-1694 dbSync: host: "cdbsync-dev.mydomain.com" port: 5432 diff --git a/src/app.ts b/src/app.ts index 5996aa4f..a591492a 100644 --- a/src/app.ts +++ b/src/app.ts @@ -12,6 +12,10 @@ const esmRequire = createRequire(import.meta.url); const packageJson = esmRequire('../package.json'); const config = getConfig(); +const isCIP1694Active = config.server.features.some( + feature => feature.toLowerCase() === 'CIP-1694'.toLowerCase(), +); + const start = (options = {}): FastifyInstance => { const app = fastify(options); @@ -111,11 +115,12 @@ const start = (options = {}): FastifyInstance => { registerRoute(app, import('./routes/epochs/number/stakes/index.js')); registerRoute(app, import('./routes/epochs/number/stakes/pool-id.js')); - // governance - registerRoute(app, import('./routes/governance/dreps/index.js')); - registerRoute(app, import('./routes/governance/dreps/hash/index.js')); - registerRoute(app, import('./routes/governance/dreps/hash/distribution.js')); - + if (isCIP1694Active) { + // governance + registerRoute(app, import('./routes/governance/dreps/index.js')); + registerRoute(app, import('./routes/governance/dreps/hash/index.js')); + registerRoute(app, import('./routes/governance/dreps/hash/distribution.js')); + } // health registerRoute(app, import('./routes/health/index.js')); registerRoute(app, import('./routes/health/clock.js')); diff --git a/src/config.ts b/src/config.ts index e57225b4..f54b9dcf 100644 --- a/src/config.ts +++ b/src/config.ts @@ -18,6 +18,7 @@ export const loadConfig = () => { !config.has('server.prometheusMetrics') ? process.env.BLOCKFROST_CONFIG_SERVER_PROMETHEUS_METRICS === 'true' : config.get('server.prometheusMetrics'); + const features = config.get('server.features'); // dbSync const databaseSyncHost = @@ -53,6 +54,7 @@ export const loadConfig = () => { port, debug, prometheusMetrics, + features, }, dbSync: { host: databaseSyncHost,