seed data
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { EnsureInitialData } from '../../../../../adapters/bootstrap/EnsureInitialData';
|
||||
import { SeedInMemoryRacingData } from '../../../../../adapters/bootstrap/SeedInMemoryRacingData';
|
||||
import { Module, OnModuleInit } from '@nestjs/common';
|
||||
import { BootstrapProviders } from './BootstrapProviders';
|
||||
|
||||
@@ -6,16 +7,33 @@ import { BootstrapProviders } from './BootstrapProviders';
|
||||
providers: BootstrapProviders,
|
||||
})
|
||||
export class BootstrapModule implements OnModuleInit {
|
||||
constructor(private readonly ensureInitialData: EnsureInitialData) {}
|
||||
constructor(
|
||||
private readonly ensureInitialData: EnsureInitialData,
|
||||
private readonly seedInMemoryRacingData: SeedInMemoryRacingData,
|
||||
) {}
|
||||
|
||||
async onModuleInit() {
|
||||
console.log('[Bootstrap] Initializing application data...');
|
||||
try {
|
||||
await this.ensureInitialData.execute();
|
||||
|
||||
if (this.shouldSeedInMemory()) {
|
||||
await this.seedInMemoryRacingData.execute();
|
||||
}
|
||||
|
||||
console.log('[Bootstrap] Application data initialized successfully');
|
||||
} catch (error) {
|
||||
console.error('[Bootstrap] Failed to initialize application data:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
private shouldSeedInMemory(): boolean {
|
||||
const configured = (process.env.GRIDPILOT_API_PERSISTENCE ?? '').toLowerCase();
|
||||
if (configured) {
|
||||
return configured === 'inmemory';
|
||||
}
|
||||
|
||||
return process.env.DATABASE_URL === undefined;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Provider } from '@nestjs/common';
|
||||
import { EnsureInitialData, type InMemorySeedDependencies } from '../../../../../adapters/bootstrap/EnsureInitialData';
|
||||
import { EnsureInitialData } from '../../../../../adapters/bootstrap/EnsureInitialData';
|
||||
import { SeedInMemoryRacingData, type InMemorySeedDependencies } from '../../../../../adapters/bootstrap/SeedInMemoryRacingData';
|
||||
import { SignupWithEmailUseCase, type SignupWithEmailResult } from '@core/identity/application/use-cases/SignupWithEmailUseCase';
|
||||
import {
|
||||
CreateAchievementUseCase,
|
||||
@@ -87,6 +88,19 @@ export const BootstrapProviders: Provider[] = [
|
||||
signupUseCase: SignupWithEmailUseCase,
|
||||
createAchievementUseCase: CreateAchievementUseCase,
|
||||
logger: Logger,
|
||||
) => {
|
||||
return new EnsureInitialData(signupUseCase, createAchievementUseCase, logger);
|
||||
},
|
||||
inject: [
|
||||
SIGNUP_USE_CASE_TOKEN,
|
||||
CREATE_ACHIEVEMENT_USE_CASE_TOKEN,
|
||||
'Logger',
|
||||
],
|
||||
},
|
||||
{
|
||||
provide: SeedInMemoryRacingData,
|
||||
useFactory: (
|
||||
logger: Logger,
|
||||
driverRepository: InMemorySeedDependencies['driverRepository'],
|
||||
leagueRepository: InMemorySeedDependencies['leagueRepository'],
|
||||
raceRepository: InMemorySeedDependencies['raceRepository'],
|
||||
@@ -113,11 +127,9 @@ export const BootstrapProviders: Provider[] = [
|
||||
socialGraphRepository,
|
||||
};
|
||||
|
||||
return new EnsureInitialData(signupUseCase, createAchievementUseCase, logger, deps);
|
||||
return new SeedInMemoryRacingData(logger, deps);
|
||||
},
|
||||
inject: [
|
||||
SIGNUP_USE_CASE_TOKEN,
|
||||
CREATE_ACHIEVEMENT_USE_CASE_TOKEN,
|
||||
'Logger',
|
||||
'IDriverRepository',
|
||||
'ILeagueRepository',
|
||||
|
||||
Reference in New Issue
Block a user