Skip to content

Commit 1eec653

Browse files
committed
refactor(database): update migration class and log message
- Update RefactorAdConfigToRoleBased migration class constructor parameters - Improve log message in up() method to include PR ID and date
1 parent 860f8c1 commit 1eec653

File tree

1 file changed

+56
-38
lines changed

1 file changed

+56
-38
lines changed

lib/src/database/migrations/20250924084800__refactor_ad_config_to_role_based.dart

Lines changed: 56 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,34 +20,37 @@ import 'package:mongo_dart/mongo_dart.dart';
2020
class RefactorAdConfigToRoleBased extends Migration {
2121
/// {@macro refactor_ad_config_to_role_based}
2222
RefactorAdConfigToRoleBased()
23-
: super(
24-
version: '20250924084800',
25-
description: 'Refactor adConfig to use role-based visibleTo maps',
26-
gitHubPullRequest:
27-
'https://github.com/flutter-news-app-full-source-code/core/pull/50',
28-
);
23+
: super(
24+
prDate: '20250924084800',
25+
prSummary: 'Refactor adConfig to use role-based visibleTo maps',
26+
prId: '50',
27+
);
2928

3029
@override
3130
Future<void> up(Db db, Logger log) async {
32-
log.info('Applying migration: Refactor adConfig to role-based visibleTo maps.');
31+
log.info(
32+
'Applying migration PR#$prId (Date: $prDate): $prSummary.',
33+
);
3334

3435
final remoteConfigCollection = db.collection('remote_configs');
3536

3637
// Define default FeedAdFrequencyConfig for roles
37-
const defaultGuestFeedAdFrequency =
38-
FeedAdFrequencyConfig(adFrequency: 5, adPlacementInterval: 3);
39-
const defaultStandardUserFeedAdFrequency =
40-
FeedAdFrequencyConfig(adFrequency: 10, adPlacementInterval: 5);
41-
const defaultPremiumUserFeedAdFrequency =
42-
FeedAdFrequencyConfig(adFrequency: 0, adPlacementInterval: 0);
43-
38+
const defaultGuestFeedAdFrequency = FeedAdFrequencyConfig(
39+
adFrequency: 5,
40+
adPlacementInterval: 3,
41+
);
42+
const defaultStandardUserFeedAdFrequency = FeedAdFrequencyConfig(
43+
adFrequency: 10,
44+
adPlacementInterval: 5,
45+
);
4446
// Define default InterstitialAdFrequencyConfig for roles
45-
const defaultGuestInterstitialAdFrequency =
46-
InterstitialAdFrequencyConfig(transitionsBeforeShowingInterstitialAds: 5);
47+
const defaultGuestInterstitialAdFrequency = InterstitialAdFrequencyConfig(
48+
transitionsBeforeShowingInterstitialAds: 5,
49+
);
4750
const defaultStandardUserInterstitialAdFrequency =
48-
InterstitialAdFrequencyConfig(transitionsBeforeShowingInterstitialAds: 10);
49-
const defaultPremiumUserInterstitialAdFrequency =
50-
InterstitialAdFrequencyConfig(transitionsBeforeShowingInterstitialAds: 50000);
51+
InterstitialAdFrequencyConfig(
52+
transitionsBeforeShowingInterstitialAds: 10,
53+
);
5154

5255
// Define default ArticleAdSlot visibility for roles
5356
final defaultArticleAdSlots = {
@@ -57,25 +60,35 @@ class RefactorAdConfigToRoleBased extends Migration {
5760

5861
final result = await remoteConfigCollection.updateMany(
5962
// Find documents that still have the old structure (e.g., old frequency fields)
60-
where.exists('adConfig.feedAdConfiguration.frequencyConfig.guestAdFrequency'),
63+
where.exists(
64+
'adConfig.feedAdConfiguration.frequencyConfig.guestAdFrequency',
65+
),
6166
ModifierBuilder()
6267
// --- FeedAdConfiguration Transformation ---
6368
// Remove old frequencyConfig fields
6469
..unset('adConfig.feedAdConfiguration.frequencyConfig.guestAdFrequency')
65-
..unset('adConfig.feedAdConfiguration.frequencyConfig.guestAdPlacementInterval')
66-
..unset('adConfig.feedAdConfiguration.frequencyConfig.authenticatedAdFrequency')
67-
..unset('adConfig.feedAdConfiguration.frequencyConfig.authenticatedAdPlacementInterval')
68-
..unset('adConfig.feedAdConfiguration.frequencyConfig.premiumAdFrequency')
69-
..unset('adConfig.feedAdConfiguration.frequencyConfig.premiumAdPlacementInterval')
70+
..unset(
71+
'adConfig.feedAdConfiguration.frequencyConfig.guestAdPlacementInterval',
72+
)
73+
..unset(
74+
'adConfig.feedAdConfiguration.frequencyConfig.authenticatedAdFrequency',
75+
)
76+
..unset(
77+
'adConfig.feedAdConfiguration.frequencyConfig.authenticatedAdPlacementInterval',
78+
)
79+
..unset(
80+
'adConfig.feedAdConfiguration.frequencyConfig.premiumAdFrequency',
81+
)
82+
..unset(
83+
'adConfig.feedAdConfiguration.frequencyConfig.premiumAdPlacementInterval',
84+
)
7085
// Set the new visibleTo map for FeedAdConfiguration
7186
..set(
7287
'adConfig.feedAdConfiguration.visibleTo',
7388
{
7489
AppUserRole.guestUser.name: defaultGuestFeedAdFrequency.toJson(),
75-
AppUserRole.standardUser.name:
76-
defaultStandardUserFeedAdFrequency.toJson(),
77-
AppUserRole.premiumUser.name:
78-
defaultPremiumUserFeedAdFrequency.toJson(),
90+
AppUserRole.standardUser.name: defaultStandardUserFeedAdFrequency
91+
.toJson(),
7992
},
8093
)
8194
// --- ArticleAdConfiguration Transformation ---
@@ -87,24 +100,27 @@ class RefactorAdConfigToRoleBased extends Migration {
87100
{
88101
AppUserRole.guestUser.name: defaultArticleAdSlots,
89102
AppUserRole.standardUser.name: defaultArticleAdSlots,
90-
AppUserRole.premiumUser.name: defaultArticleAdSlots,
91103
},
92104
)
93105
// --- InterstitialAdConfiguration Transformation ---
94106
// Remove old feedInterstitialAdFrequencyConfig fields
95-
..unset('adConfig.interstitialAdConfiguration.feedInterstitialAdFrequencyConfig.guestTransitionsBeforeShowingInterstitialAds')
96-
..unset('adConfig.interstitialAdConfiguration.feedInterstitialAdFrequencyConfig.standardUserTransitionsBeforeShowingInterstitialAds')
97-
..unset('adConfig.interstitialAdConfiguration.feedInterstitialAdFrequencyConfig.premiumUserTransitionsBeforeShowingInterstitialAds')
107+
..unset(
108+
'adConfig.interstitialAdConfiguration.feedInterstitialAdFrequencyConfig.guestTransitionsBeforeShowingInterstitialAds',
109+
)
110+
..unset(
111+
'adConfig.interstitialAdConfiguration.feedInterstitialAdFrequencyConfig.standardUserTransitionsBeforeShowingInterstitialAds',
112+
)
113+
..unset(
114+
'adConfig.interstitialAdConfiguration.feedInterstitialAdFrequencyConfig.premiumUserTransitionsBeforeShowingInterstitialAds',
115+
)
98116
// Set the new visibleTo map for InterstitialAdConfiguration
99117
..set(
100118
'adConfig.interstitialAdConfiguration.visibleTo',
101119
{
102-
AppUserRole.guestUser.name:
103-
defaultGuestInterstitialAdFrequency.toJson(),
120+
AppUserRole.guestUser.name: defaultGuestInterstitialAdFrequency
121+
.toJson(),
104122
AppUserRole.standardUser.name:
105123
defaultStandardUserInterstitialAdFrequency.toJson(),
106-
AppUserRole.premiumUser.name:
107-
defaultPremiumUserInterstitialAdFrequency.toJson(),
108124
},
109125
),
110126
);
@@ -125,7 +141,9 @@ class RefactorAdConfigToRoleBased extends Migration {
125141
// Reverting to the old structure would require re-introducing the old fields
126142
// and potentially losing data if the new structure was used.
127143
// For simplicity in this example, we'll just unset the new fields.
128-
final result = await db.collection('remote_configs').updateMany(
144+
final result = await db
145+
.collection('remote_configs')
146+
.updateMany(
129147
where.exists('adConfig.feedAdConfiguration.visibleTo'),
130148
ModifierBuilder()
131149
..unset('adConfig.feedAdConfiguration.visibleTo')

0 commit comments

Comments
 (0)