Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 321f87f

Browse files
authored
Merge pull request #69 from flutter-news-app-full-source-code/fix/new-migration-to-add-saved-filters-limit-to-remote-config
Fix/new migration to add saved filters limit to remote config
2 parents e0e01c7 + b5e201d commit 321f87f

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

‎lib/src/database/migrations/20251013000056_add_saved_filters_to_user_preferences.dart‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ class AddSavedFiltersToUserPreferences extends Migration {
1010
: super(
1111
prDate: '20251013000056',
1212
prId: '56',
13-
prSummary: 'Add savedFilters field to user_content_preferences',
13+
prSummary:
14+
'This pull request introduces the ability for users to save and manage custom filter combinations for news headlines. It achieves this by adding a new SavedFilter data model, integrating it into the existing user content preferences, and implementing configurable limits for these saved filters based on user tiers',
1415
);
1516

1617
@override
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import 'package:flutter_news_app_api_server_full_source_code/src/database/migration.dart';
2+
import 'package:logging/logging.dart';
3+
import 'package:mongo_dart/mongo_dart.dart';
4+
5+
/// Migration to add the `savedFiltersLimit` fields to existing
6+
/// `remote_configs` documents within the `userPreferenceConfig` sub-document.
7+
class AddSavedFiltersToRemoteConfig extends Migration {
8+
/// {@macro add_saved_filters_to_remote_config}
9+
AddSavedFiltersToRemoteConfig()
10+
: super(
11+
prDate: '20251013000057',
12+
prId: '57',
13+
prSummary:
14+
'This pull request introduces the ability for users to save and manage custom filter combinations for news headlines. It achieves this by adding a new SavedFilter data model, integrating it into the existing user content preferences, and implementing configurable limits for these saved filters based on user tiers',
15+
);
16+
17+
@override
18+
Future<void> up(Db db, Logger log) async {
19+
final collection = db.collection('remote_configs');
20+
final result = await collection.updateMany(
21+
// Filter for documents where 'userPreferenceConfig.guestSavedFiltersLimit' does not exist.
22+
// This assumes if one is missing, all are likely missing.
23+
where.notExists('userPreferenceConfig.guestSavedFiltersLimit'),
24+
// Set 'guestSavedFiltersLimit', 'authenticatedSavedFiltersLimit',
25+
// and 'premiumSavedFiltersLimit' to a default value.
26+
modify
27+
.set('userPreferenceConfig.guestSavedFiltersLimit', 3)
28+
.set('userPreferenceConfig.authenticatedSavedFiltersLimit', 10)
29+
.set('userPreferenceConfig.premiumSavedFiltersLimit', 25),
30+
);
31+
log.info(
32+
'Updated ${result.nModified} documents in remote_configs '
33+
'to include savedFiltersLimit fields.',
34+
);
35+
}
36+
37+
@override
38+
Future<void> down(Db db, Logger log) async {
39+
final collection = db.collection('remote_configs');
40+
await collection.updateMany(
41+
where.exists('userPreferenceConfig.guestSavedFiltersLimit'),
42+
modify
43+
.unset('userPreferenceConfig.guestSavedFiltersLimit')
44+
.unset('userPreferenceConfig.authenticatedSavedFiltersLimit')
45+
.unset('userPreferenceConfig.premiumSavedFiltersLimit'),
46+
);
47+
log.info(
48+
'Removed "savedFiltersLimit" fields from remote_configs '
49+
'userPreferenceConfig sub-document.',
50+
);
51+
}
52+
}

‎lib/src/database/migrations/all_migrations.dart‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flutter_news_app_api_server_full_source_code/src/database/migration.dart';
22
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/20250924084800__refactor_ad_config_to_role_based.dart';
33
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/20251013000056_add_saved_filters_to_user_preferences.dart';
4+
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/20251013000057_add_saved_filters_to_remote_config.dart';
45
import 'package:flutter_news_app_api_server_full_source_code/src/services/database_migration_service.dart'
56
show DatabaseMigrationService;
67

@@ -12,4 +13,5 @@ import 'package:flutter_news_app_api_server_full_source_code/src/services/databa
1213
final List<Migration> allMigrations = [
1314
RefactorAdConfigToRoleBased(),
1415
AddSavedFiltersToUserPreferences(),
16+
AddSavedFiltersToRemoteConfig(),
1517
];

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /