Skip to content

Commit b020955

Browse files
authored
Follow-up to Datastore model and fields: removing Secret entity and requiring isAdminDeleted fields. (#8827)
1 parent 1810596 commit b020955

File tree

6 files changed

+12
-57
lines changed

6 files changed

+12
-57
lines changed

app/lib/admin/backend.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,7 @@ class AdminBackend {
887887
..order('adminDeletedAt');
888888
await for (final package in pQuery.run()) {
889889
// sanity check
890-
if (!(package.isAdminDeleted ?? false)) {
890+
if (!package.isAdminDeleted) {
891891
continue;
892892
}
893893

@@ -902,7 +902,7 @@ class AdminBackend {
902902
..order('adminDeletedAt');
903903
await for (final version in pvQuery.run()) {
904904
// sanity check
905-
if (!(version.isAdminDeleted ?? false)) {
905+
if (!version.isAdminDeleted) {
906906
continue;
907907
}
908908

app/lib/admin/tools/delete_all_staging.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import '../../account/models.dart';
99
import '../../audit/models.dart';
1010
import '../../package/models.dart';
1111
import '../../publisher/models.dart';
12-
import '../../service/secret/models.dart';
1312
import '../../shared/datastore.dart';
1413
import '../../shared/env_config.dart';
1514
import '../../task/models.dart';
@@ -54,7 +53,6 @@ Future<String> executeDeleteAllStaging(List<String> args) async {
5453
dbService.query<Publisher>(): 500,
5554
dbService.query<ModeratedPackage>(): 500,
5655
dbService.query<NeatTaskStatus>(): 500,
57-
dbService.query<Secret>(): 500,
5856
dbService.query<PackageState>(): 100,
5957
};
6058

app/lib/package/models.dart

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,8 @@ class Package extends db.ExpandoModel<String> {
130130
DateTime? moderatedAt;
131131

132132
/// `true` if package was deleted by admins (pending final deletion).
133-
/// TODO: mark `required: true` after backfill is done and all runtimes use the field
134-
@db.BoolProperty(required: false)
135-
bool? isAdminDeleted;
133+
@db.BoolProperty(required: true)
134+
bool isAdminDeleted = false;
136135

137136
/// The timestamp when the package was deleted by admins.
138137
@db.DateTimeProperty()
@@ -195,7 +194,7 @@ class Package extends db.ExpandoModel<String> {
195194

196195
// Convenience Fields:
197196

198-
bool get isVisible => !isModerated && !(isAdminDeleted ?? false);
197+
bool get isVisible => !isModerated && !isAdminDeleted;
199198
bool get isNotVisible => !isVisible;
200199

201200
bool get isIncludedInRobots {
@@ -604,9 +603,8 @@ class PackageVersion extends db.ExpandoModel<String> {
604603
DateTime? moderatedAt;
605604

606605
/// `true` if package version was deleted by admins (pending final deletion).
607-
/// TODO: mark `required: true` after backfill is done and all runtimes use the field
608-
@db.BoolProperty(required: false)
609-
bool? isAdminDeleted;
606+
@db.BoolProperty(required: true)
607+
bool isAdminDeleted = false;
610608

611609
/// The timestamp when the package version was deleted by admins.
612610
@db.DateTimeProperty()
@@ -620,7 +618,7 @@ class PackageVersion extends db.ExpandoModel<String> {
620618
isRetracted = false;
621619
}
622620

623-
late final isVisible = !isModerated && !(isAdminDeleted ?? false);
621+
late final isVisible = !isModerated && !isAdminDeleted;
624622
late final isNotVisible = !isVisible;
625623

626624
// Convenience Fields:

app/lib/service/secret/models.dart

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import '../../shared/datastore.dart' as db;
6-
7-
/// A secret value stored in Datastore, typically an access credential used by
8-
/// the application.
9-
@db.Kind(name: 'Secret', idType: db.IdType.String)
10-
class Secret extends db.Model {
11-
@db.StringProperty(required: true)
12-
String? value;
13-
}
14-
15-
/// Identifiers of the [Secret] keys.
5+
/// Identifiers and secret keys.
166
abstract class SecretKey {
177
static const String redisConnectionString = 'redis-connection-string';
188

app/lib/shared/integrity.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ class IntegrityChecker {
445445
yield* _checkAdminDeletedFlags(
446446
kind: 'Package',
447447
id: p.name!,
448-
isAdminDeleted: p.isAdminDeleted ?? false,
448+
isAdminDeleted: p.isAdminDeleted,
449449
adminDeletedAt: p.adminDeletedAt,
450450
);
451451
if (p.isModerated) {
@@ -601,7 +601,7 @@ class IntegrityChecker {
601601
yield* _checkAdminDeletedFlags(
602602
kind: 'PackageVersion',
603603
id: pv.qualifiedVersionKey.toString(),
604-
isAdminDeleted: pv.isAdminDeleted ?? false,
604+
isAdminDeleted: pv.isAdminDeleted,
605605
adminDeletedAt: pv.adminDeletedAt,
606606
);
607607

app/lib/tool/backfill/backfill_new_fields.dart

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:logging/logging.dart';
6-
import 'package:pub_dev/package/models.dart';
7-
import 'package:pub_dev/service/secret/models.dart';
8-
import 'package:pub_dev/shared/datastore.dart';
96

107
final _logger = Logger('backfill_new_fields');
118

@@ -15,33 +12,5 @@ final _logger = Logger('backfill_new_fields');
1512
/// CHANGELOG.md must be updated with the new fields, and the next
1613
/// release could remove the backfill from here.
1714
Future<void> backfillNewFields() async {
18-
_logger.info('Deleting Secret entries');
19-
await dbService.deleteWithQuery(dbService.query<Secret>());
20-
21-
_logger.info('Backfill admin deleted fields...');
22-
await for (final e in dbService.query<Package>().run()) {
23-
if (e.isAdminDeleted == null) {
24-
await withRetryTransaction(dbService, (tx) async {
25-
final p = await tx.lookupOrNull<Package>(e.key);
26-
if (p == null) {
27-
return;
28-
}
29-
p.isAdminDeleted ??= false;
30-
tx.insert(p);
31-
});
32-
}
33-
}
34-
35-
await for (final e in dbService.query<PackageVersion>().run()) {
36-
if (e.isAdminDeleted == null) {
37-
await withRetryTransaction(dbService, (tx) async {
38-
final p = await tx.lookupOrNull<PackageVersion>(e.key);
39-
if (p == null) {
40-
return;
41-
}
42-
p.isAdminDeleted ??= false;
43-
tx.insert(p);
44-
});
45-
}
46-
}
15+
_logger.info('Nothing to backfill.');
4716
}

0 commit comments

Comments
 (0)