@@ -9,8 +9,10 @@ import 'package:flutter_news_app_api_server_full_source_code/src/config/environm
99import 'package:flutter_news_app_api_server_full_source_code/src/rbac/permission_service.dart' ;
1010import 'package:flutter_news_app_api_server_full_source_code/src/services/auth_service.dart' ;
1111import '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' ;
1213import 'package:flutter_news_app_api_server_full_source_code/src/services/country_query_service.dart' ;
1314import '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' ;
1416import 'package:flutter_news_app_api_server_full_source_code/src/services/database_seeding_service.dart' ;
1517import 'package:flutter_news_app_api_server_full_source_code/src/services/default_user_preference_limit_service.dart' ;
1618import '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