@@ -75,10 +75,13 @@ Future listPackage(String packageName) async {
75
75
}
76
76
}
77
77
78
- Future _deleteWithQuery (Query query) async {
78
+ Future _deleteWithQuery < T > (Query query, { bool where ( T item)} ) async {
79
79
final deletes = < Key > [];
80
80
await for (Model m in query.run ()) {
81
- deletes.add (m.key);
81
+ final shouldDelete = where == null || where (m as T );
82
+ if (shouldDelete) {
83
+ deletes.add (m.key);
84
+ }
82
85
}
83
86
await dbService.withTransaction ((tx) async {
84
87
tx.queueMutations (deletes: deletes);
@@ -146,7 +149,7 @@ Future removePackage(String packageName) async {
146
149
}
147
150
148
151
Future removePackageVersion (String packageName, String version) async {
149
- return dbService.withTransaction ((Transaction T ) async {
152
+ await dbService.withTransaction ((Transaction T ) async {
150
153
final Key packageKey = dbService.emptyKey.append (Package , id: packageName);
151
154
final Package package = (await T .lookup ([packageKey])).first;
152
155
if (package == null ) {
@@ -157,8 +160,7 @@ Future removePackageVersion(String packageName, String version) async {
157
160
final List <PackageVersion > versions = await versionsQuery.run ().toList ();
158
161
final versionNames = versions.map ((v) => '${v .semanticVersion }' ).toList ();
159
162
if (! versionNames.contains (version)) {
160
- throw new Exception (
161
- "Package $packageName does not have a version $version ." );
163
+ print ('Package $packageName does not have a version $version .' );
162
164
}
163
165
164
166
if ('${package .latestSemanticVersion }' == version) {
@@ -174,8 +176,20 @@ Future removePackageVersion(String packageName, String version) async {
174
176
final storage = backend.repository.storage;
175
177
print ('Removing GCS objects ...' );
176
178
await storage.remove (packageName, version);
177
-
178
- print ('Version "$version " of "$packageName " got successfully removed.' );
179
- print ('WARNING: Please remember to clear the AppEngine memcache!' );
180
179
});
180
+
181
+ await dartdocBackend.removeAll (packageName, version: version);
182
+
183
+ await _deleteWithQuery (
184
+ dbService.query (Job )..filter ('packageName =' , packageName),
185
+ where: (Job job) => job.packageVersion == version,
186
+ );
187
+
188
+ await _deleteWithQuery (
189
+ dbService.query (History )..filter ('packageName =' , packageName),
190
+ where: (History history) => history.packageVersion == version,
191
+ );
192
+
193
+ print ('Version "$version " of "$packageName " got successfully removed.' );
194
+ print ('WARNING: Please remember to clear the AppEngine memcache!' );
181
195
}
0 commit comments