Skip to content

Commit d3c1a59

Browse files
committed
feat(database): add database migration service and update seeding process
- Add DatabaseMigrationService to handle database schema migrations - Include all_migrations.dart in the import list - Update AppDependencies to initialize and run database migrations - Modify the application startup process to apply migrations before seeding
1 parent 2651006 commit d3c1a59

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

lib/src/config/app_dependencies.dart

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import 'package:flutter_news_app_api_server_full_source_code/src/config/environm
99
import 'package:flutter_news_app_api_server_full_source_code/src/rbac/permission_service.dart';
1010
import 'package:flutter_news_app_api_server_full_source_code/src/services/auth_service.dart';
1111
import 'package:flutter_news_app_api_server_full_source_code/src/services/auth_token_service.dart';
12+
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/all_migrations.dart';
1213
import 'package:flutter_news_app_api_server_full_source_code/src/services/country_query_service.dart';
1314
import 'package:flutter_news_app_api_server_full_source_code/src/services/dashboard_summary_service.dart';
15+
import 'package:flutter_news_app_api_server_full_source_code/src/services/database_migration_service.dart';
1416
import 'package:flutter_news_app_api_server_full_source_code/src/services/database_seeding_service.dart';
1517
import 'package:flutter_news_app_api_server_full_source_code/src/services/default_user_preference_limit_service.dart';
1618
import 'package:flutter_news_app_api_server_full_source_code/src/services/jwt_auth_token_service.dart';
@@ -63,6 +65,7 @@ class AppDependencies {
6365
late final EmailRepository emailRepository;
6466

6567
// Services
68+
late final DatabaseMigrationService databaseMigrationService;
6669
late final TokenBlacklistService tokenBlacklistService;
6770
late final AuthTokenService authTokenService;
6871
late final VerificationCodeStorageService verificationCodeStorageService;
@@ -92,15 +95,25 @@ class AppDependencies {
9295
await _mongoDbConnectionManager.init(EnvironmentConfig.databaseUrl);
9396
_log.info('MongoDB connection established.');
9497

95-
// 2. Seed Database
98+
// 2. Initialize and Run Database Migrations
99+
databaseMigrationService = DatabaseMigrationService(
100+
db: _mongoDbConnectionManager.db,
101+
log: Logger('DatabaseMigrationService'),
102+
migrations: allMigrations, // From lib/src/database/migrations/all_migrations.dart
103+
);
104+
await databaseMigrationService.init();
105+
_log.info('Database migrations applied.');
106+
107+
// 3. Seed Database
108+
// This runs AFTER migrations to ensure the schema is up-to-date.
96109
final seedingService = DatabaseSeedingService(
97110
db: _mongoDbConnectionManager.db,
98111
log: Logger('DatabaseSeedingService'),
99112
);
100113
await seedingService.seedInitialData();
101114
_log.info('Database seeding complete.');
102115

103-
// 3. Initialize Data Clients (MongoDB implementation)
116+
// 4. Initialize Data Clients (MongoDB implementation)
104117
final headlineClient = DataMongodb<Headline>(
105118
connectionManager: _mongoDbConnectionManager,
106119
modelName: 'headlines',

0 commit comments

Comments
 (0)