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
Changes from 1 commit
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
Next Next commit
feat(database): add saved filters limit to remote config
- Introduce new fields for saved filters limits in remote config
- Set default values for guest, authenticated, and premium user tiers
- Implement migration to add these fields to existing documents
- Create reversible migration with up and down methods
  • Loading branch information
fulleni committed Oct 13, 2025
commit 66d1a0dd5f21ac75f96468bccac1ebdd5bbff4ae
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.',
);
}
}

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