Browse Source

Task/enable Bull Dashboard in admin control panel without environment variable (#6876)

* Enable Bull Dashboard without environment variable

* Update changelog
pull/6881/head
Thomas Kaul 1 week ago
committed by GitHub
parent
commit
9ed4c679b2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 42
      apps/api/src/app/app.module.ts
  3. 2
      apps/api/src/app/user/user.service.ts
  4. 1
      apps/api/src/services/configuration/configuration.service.ts
  5. 1
      apps/api/src/services/interfaces/environment.interface.ts
  6. 20
      apps/api/src/services/queues/data-gathering/data-gathering.module.ts
  7. 20
      apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts
  8. 2
      apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts

1
CHANGELOG.md

@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- Enabled the _Bull Dashboard_ in the admin control panel without requiring an environment variable (experimental)
- Extracted the page tabs to a reusable component - Extracted the page tabs to a reusable component
- Upgraded `bull-board` from version `7.0.0` to `7.1.5` - Upgraded `bull-board` from version `7.0.0` to `7.1.5`

42
apps/api/src/app/app.module.ts

@ -74,29 +74,25 @@ import { UserModule } from './user/user.module';
AuthDeviceModule, AuthDeviceModule,
AuthModule, AuthModule,
BenchmarksModule, BenchmarksModule,
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' BullBoardModule.forRoot({
? [ adapter: ExpressAdapter,
BullBoardModule.forRoot({ boardOptions: {
adapter: ExpressAdapter, uiConfig: {
boardOptions: { boardLogo: {
uiConfig: { height: 0,
boardLogo: { path: '',
height: 0, width: 0
path: '', },
width: 0 boardTitle: 'Job Queues',
}, favIcon: {
boardTitle: 'Job Queues', alternative: '/assets/favicon-32x32.png',
favIcon: { default: '/assets/favicon-32x32.png'
alternative: '/assets/favicon-32x32.png', }
default: '/assets/favicon-32x32.png' }
} },
} middleware: BullBoardAuthMiddleware,
}, route: BULL_BOARD_ROUTE
middleware: BullBoardAuthMiddleware, }),
route: BULL_BOARD_ROUTE
})
]
: []),
BullModule.forRoot({ BullModule.forRoot({
redis: { redis: {
db: parseInt(process.env.REDIS_DB ?? '0', 10), db: parseInt(process.env.REDIS_DB ?? '0', 10),

2
apps/api/src/app/user/user.service.ts

@ -532,7 +532,7 @@ export class UserService {
} }
if (hasRole(user, Role.ADMIN)) { if (hasRole(user, Role.ADMIN)) {
if (this.configurationService.get('ENABLE_FEATURE_BULL_BOARD')) { if ((user.settings.settings as UserSettings).isExperimentalFeatures) {
currentPermissions.push(permissions.accessAdminControlBullBoard); currentPermissions.push(permissions.accessAdminControlBullBoard);
} }

1
apps/api/src/services/configuration/configuration.service.ts

@ -44,7 +44,6 @@ export class ConfigurationService {
ENABLE_FEATURE_AUTH_GOOGLE: bool({ default: false }), ENABLE_FEATURE_AUTH_GOOGLE: bool({ default: false }),
ENABLE_FEATURE_AUTH_OIDC: bool({ default: false }), ENABLE_FEATURE_AUTH_OIDC: bool({ default: false }),
ENABLE_FEATURE_AUTH_TOKEN: bool({ default: true }), ENABLE_FEATURE_AUTH_TOKEN: bool({ default: true }),
ENABLE_FEATURE_BULL_BOARD: bool({ default: false }),
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }), ENABLE_FEATURE_FEAR_AND_GREED_INDEX: bool({ default: false }),
ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: bool({ default: true }), ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: bool({ default: true }),
ENABLE_FEATURE_READ_ONLY_MODE: bool({ default: false }), ENABLE_FEATURE_READ_ONLY_MODE: bool({ default: false }),

1
apps/api/src/services/interfaces/environment.interface.ts

@ -20,7 +20,6 @@ export interface Environment extends CleanedEnvAccessors {
ENABLE_FEATURE_AUTH_GOOGLE: boolean; ENABLE_FEATURE_AUTH_GOOGLE: boolean;
ENABLE_FEATURE_AUTH_OIDC: boolean; ENABLE_FEATURE_AUTH_OIDC: boolean;
ENABLE_FEATURE_AUTH_TOKEN: boolean; ENABLE_FEATURE_AUTH_TOKEN: boolean;
ENABLE_FEATURE_BULL_BOARD: boolean;
ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean; ENABLE_FEATURE_FEAR_AND_GREED_INDEX: boolean;
ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: boolean; ENABLE_FEATURE_GATHER_NEW_EXCHANGE_RATES: boolean;
ENABLE_FEATURE_READ_ONLY_MODE: boolean; ENABLE_FEATURE_READ_ONLY_MODE: boolean;

20
apps/api/src/services/queues/data-gathering/data-gathering.module.ts

@ -19,18 +19,14 @@ import { DataGatheringProcessor } from './data-gathering.processor';
@Module({ @Module({
imports: [ imports: [
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' BullBoardModule.forFeature({
? [ adapter: BullAdapter,
BullBoardModule.forFeature({ name: DATA_GATHERING_QUEUE,
adapter: BullAdapter, options: {
name: DATA_GATHERING_QUEUE, displayName: 'Data Gathering',
options: { readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false'
displayName: 'Data Gathering', }
readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false' }),
}
})
]
: []),
BullModule.registerQueue({ BullModule.registerQueue({
limiter: { limiter: {
duration: ms('4 seconds'), duration: ms('4 seconds'),

20
apps/api/src/services/queues/portfolio-snapshot/portfolio-snapshot.module.ts

@ -25,18 +25,14 @@ import { PortfolioSnapshotProcessor } from './portfolio-snapshot.processor';
imports: [ imports: [
AccountBalanceModule, AccountBalanceModule,
ActivitiesModule, ActivitiesModule,
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' BullBoardModule.forFeature({
? [ adapter: BullAdapter,
BullBoardModule.forFeature({ name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE,
adapter: BullAdapter, options: {
name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE, displayName: 'Portfolio Snapshot Computation',
options: { readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false'
displayName: 'Portfolio Snapshot Computation', }
readOnlyMode: process.env.BULL_BOARD_IS_READ_ONLY !== 'false' }),
}
})
]
: []),
BullModule.registerQueue({ BullModule.registerQueue({
name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE, name: PORTFOLIO_SNAPSHOT_COMPUTATION_QUEUE,
settings: { settings: {

2
apps/api/src/services/queues/statistics-gathering/statistics-gathering.module.ts

@ -13,7 +13,7 @@ import { StatisticsGatheringService } from './statistics-gathering.service';
@Module({ @Module({
exports: [BullModule, StatisticsGatheringService], exports: [BullModule, StatisticsGatheringService],
imports: [ imports: [
...(process.env.ENABLE_FEATURE_BULL_BOARD === 'true' ...(process.env.ENABLE_FEATURE_STATISTICS === 'true'
? [ ? [
BullBoardModule.forFeature({ BullBoardModule.forFeature({
adapter: BullAdapter, adapter: BullAdapter,

Loading…
Cancel
Save