33// BSD-style license that can be found in the LICENSE file.
44
55import 'package:logging/logging.dart' ;
6+ import 'package:pub_dev/account/models.dart' ;
7+ import 'package:pub_dev/admin/models.dart' ;
8+ import 'package:pub_dev/package/models.dart' ;
9+ import 'package:pub_dev/publisher/models.dart' ;
10+ import 'package:pub_dev/shared/datastore.dart' ;
611
712final _logger = Logger ('backfill_new_fields' );
813
@@ -12,5 +17,63 @@ final _logger = Logger('backfill_new_fields');
1217/// CHANGELOG.md must be updated with the new fields, and the next
1318/// release could remove the backfill from here.
1419Future <void > backfillNewFields () async {
15- _logger.info ('No new fields.' );
20+ _logger.info ('Backfill Package.retentionUntil...' );
21+ final pkgQuery = dbService.query <Package >()..filter ('isModerated =' , true );
22+ await for (final e in pkgQuery.run ()) {
23+ if (e.retentionUntil != null ) continue ;
24+ await withRetryTransaction (dbService, (tx) async {
25+ final pkg = await tx.lookupValue <Package >(e.key);
26+ if (! pkg.isModerated || pkg.retentionUntil != null ) {
27+ return ;
28+ }
29+ pkg.retentionUntil = pkg.moderatedAt! .add (defaultModeratedKeptUntil);
30+ tx.insert (pkg);
31+ });
32+ }
33+
34+ _logger.info ('Backfill PackageVersion.retentionUntil...' );
35+ final versionQuery = dbService.query <PackageVersion >()
36+ ..filter ('isModerated =' , true );
37+ await for (final e in versionQuery.run ()) {
38+ if (e.retentionUntil != null ) continue ;
39+ await withRetryTransaction (dbService, (tx) async {
40+ final pv = await tx.lookupValue <PackageVersion >(e.key);
41+ if (! pv.isModerated || pv.retentionUntil != null ) {
42+ return ;
43+ }
44+ pv.retentionUntil = pv.moderatedAt! .add (defaultModeratedKeptUntil);
45+ tx.insert (pv);
46+ });
47+ }
48+
49+ _logger.info ('Backfill Publisher.retentionUntil...' );
50+ final publisherQuery = dbService.query <Publisher >()
51+ ..filter ('isModerated =' , true );
52+ await for (final e in publisherQuery.run ()) {
53+ if (e.retentionUntil != null ) continue ;
54+ await withRetryTransaction (dbService, (tx) async {
55+ final p = await tx.lookupValue <Publisher >(e.key);
56+ if (! p.isModerated || p.retentionUntil != null ) {
57+ return ;
58+ }
59+ p.retentionUntil = p.moderatedAt! .add (defaultModeratedKeptUntil);
60+ tx.insert (p);
61+ });
62+ }
63+
64+ _logger.info ('Backfill User.retentionUntil...' );
65+ final userQuery = dbService.query <User >()..filter ('isModerated =' , true );
66+ await for (final e in userQuery.run ()) {
67+ if (e.retentionUntil != null ) continue ;
68+ await withRetryTransaction (dbService, (tx) async {
69+ final p = await tx.lookupValue <User >(e.key);
70+ if (! p.isModerated || p.retentionUntil != null ) {
71+ return ;
72+ }
73+ p.retentionUntil = p.moderatedAt! .add (defaultModeratedKeptUntil);
74+ tx.insert (p);
75+ });
76+ }
77+
78+ _logger.info ('Backfill completed.' );
1679}
0 commit comments