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

Fix/new migration to add saved filters limit to remote config #69

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ class AddSavedFiltersToUserPreferences extends Migration {
: super(
prDate: '20251013000056',
prId: '56',
prSummary: 'Add savedFilters field to user_content_preferences',
prSummary:
'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',
);

@override
Expand Down
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import 'package:flutter_news_app_api_server_full_source_code/src/database/migration.dart';
import 'package:logging/logging.dart';
import 'package:mongo_dart/mongo_dart.dart';

/// Migration to add the `savedFiltersLimit` fields to existing
/// `remote_configs` documents within the `userPreferenceConfig` sub-document.
class AddSavedFiltersToRemoteConfig extends Migration {
/// {@macro add_saved_filters_to_remote_config}
AddSavedFiltersToRemoteConfig()
: super(
prDate: '20251013000057',
prId: '57',
prSummary:
'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',
);

@override
Future<void> up(Db db, Logger log) async {
final collection = db.collection('remote_configs');
final result = await collection.updateMany(
// Filter for documents where 'userPreferenceConfig.guestSavedFiltersLimit' does not exist.
// This assumes if one is missing, all are likely missing.
where.notExists('userPreferenceConfig.guestSavedFiltersLimit'),
// Set 'guestSavedFiltersLimit', 'authenticatedSavedFiltersLimit',
// and 'premiumSavedFiltersLimit' to a default value.
modify
.set('userPreferenceConfig.guestSavedFiltersLimit', 3)
.set('userPreferenceConfig.authenticatedSavedFiltersLimit', 10)
.set('userPreferenceConfig.premiumSavedFiltersLimit', 25),
);
log.info(
'Updated ${result.nModified} documents in remote_configs '
'to include savedFiltersLimit fields.',
);
}

@override
Future<void> down(Db db, Logger log) async {
final collection = db.collection('remote_configs');
await collection.updateMany(
where.exists('userPreferenceConfig.guestSavedFiltersLimit'),
modify
.unset('userPreferenceConfig.guestSavedFiltersLimit')
.unset('userPreferenceConfig.authenticatedSavedFiltersLimit')
.unset('userPreferenceConfig.premiumSavedFiltersLimit'),
);
log.info(
'Removed "savedFiltersLimit" fields from remote_configs '
'userPreferenceConfig sub-document.',
);
}
}
2 changes: 2 additions & 0 deletions lib/src/database/migrations/all_migrations.dart
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:flutter_news_app_api_server_full_source_code/src/database/migration.dart';
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/20250924084800__refactor_ad_config_to_role_based.dart';
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/20251013000056_add_saved_filters_to_user_preferences.dart';
import 'package:flutter_news_app_api_server_full_source_code/src/database/migrations/20251013000057_add_saved_filters_to_remote_config.dart';
import 'package:flutter_news_app_api_server_full_source_code/src/services/database_migration_service.dart'
show DatabaseMigrationService;

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

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /