@@ -122,10 +122,12 @@ Future _checkPackage(Package p) async {
122
122
_problems.add ('Package(${p .name }) has invalid uploader: User($userId )' );
123
123
}
124
124
}
125
- final versions = < Key > {};
125
+ final versionKeys = < Key > {};
126
+ final qualifiedVersionKeys = < QualifiedVersionKey > {};
126
127
await for (PackageVersion pv
127
128
in dbService.query <PackageVersion >(ancestorKey: p.key).run ()) {
128
- versions.add (pv.key);
129
+ versionKeys.add (pv.key);
130
+ qualifiedVersionKeys.add (pv.qualifiedVersionKey);
129
131
if (pv.uploader == null ) {
130
132
_problems
131
133
.add ('PackageVersion(${pv .package } ${pv .version }) has no uploader.' );
@@ -139,15 +141,50 @@ Future _checkPackage(Package p) async {
139
141
'PackageVersion(${pv .package } ${pv .version }) has invalid uploader: User(${pv .uploader })' );
140
142
}
141
143
}
142
- if (p.latestVersionKey != null && ! versions .contains (p.latestVersionKey)) {
144
+ if (p.latestVersionKey != null && ! versionKeys .contains (p.latestVersionKey)) {
143
145
_problems.add (
144
146
'Package(${p .name }) has missing latestVersionKey: ${p .latestVersionKey .id }' );
145
147
}
146
148
if (p.latestDevVersionKey != null &&
147
- ! versions .contains (p.latestDevVersionKey)) {
149
+ ! versionKeys .contains (p.latestDevVersionKey)) {
148
150
_problems.add (
149
151
'Package(${p .name }) has missing latestDevVersionKey: ${p .latestDevVersionKey .id }' );
150
152
}
153
+
154
+ // Checking if PackageVersionPubspec is referenced by a PackageVersion entity.
155
+ final pvpQuery = dbService.query <PackageVersionPubspec >()
156
+ ..filter ('package =' , p.name);
157
+ final pvpKeys = < QualifiedVersionKey > {};
158
+ await for (PackageVersionPubspec pvp in pvpQuery.run ()) {
159
+ final key = pvp.qualifiedVersionKey;
160
+ pvpKeys.add (key);
161
+ if (! qualifiedVersionKeys.contains (key)) {
162
+ _problems.add ('PackageVersionPubspec($key ) has no PackageVersion.' );
163
+ }
164
+ }
165
+ for (QualifiedVersionKey key in qualifiedVersionKeys) {
166
+ if (! pvpKeys.contains (key)) {
167
+ _problems.add ('PackageVersion($key ) has no PackageVersionPubspec.' );
168
+ }
169
+ }
170
+
171
+ // Checking if PackageVersionInfo is referenced by a PackageVersion entity.
172
+ final pviQuery = dbService.query <PackageVersionInfo >()
173
+ ..filter ('package =' , p.name);
174
+ final pviKeys = < QualifiedVersionKey > {};
175
+ await for (PackageVersionInfo pvi in pviQuery.run ()) {
176
+ final key = pvi.qualifiedVersionKey;
177
+ pviKeys.add (key);
178
+ if (! qualifiedVersionKeys.contains (key)) {
179
+ _problems.add ('PackageVersionInfo($key ) has no PackageVersion.' );
180
+ }
181
+ }
182
+ for (QualifiedVersionKey key in qualifiedVersionKeys) {
183
+ if (! pviKeys.contains (key)) {
184
+ _problems.add ('PackageVersion($key ) has no PackageVersionInfo.' );
185
+ }
186
+ }
187
+
151
188
_packageChecked++ ;
152
189
if (_packageChecked % 200 == 0 ) {
153
190
print (' .. $_packageChecked done (${p .name })' );
0 commit comments