diff --git a/app/lib/package/api_export/api_exporter.dart b/app/lib/package/api_export/api_exporter.dart index faf0e2341b..3d79e98cdc 100644 --- a/app/lib/package/api_export/api_exporter.dart +++ b/app/lib/package/api_export/api_exporter.dart @@ -33,6 +33,8 @@ ApiExporter? get apiExporter => ss.lookup(#_apiExporter) as ApiExporter?; const _concurrency = 50; class ApiExporter { + final DatastoreDB _db; + final ExportedApi _api; /// If [stop] has been called to stop background processes. @@ -46,7 +48,8 @@ class ApiExporter { /// `null` when not started yet. Completer? _stopped; - ApiExporter({ + ApiExporter( + this._db, { required Bucket bucket, }) : _api = ExportedApi(storageService, bucket); @@ -136,7 +139,7 @@ class ApiExporter { /// This is intended to be scheduled from a daily background task. Future synchronizeExportedApi({bool forceWrite = false}) async { final allPackageNames = {}; - final packageQuery = dbService.query(); + final packageQuery = _db.query(); var errCount = 0; await packageQuery.run().parallelForEach(_concurrency, (pkg) async { final name = pkg.name!; @@ -251,7 +254,7 @@ class ApiExporter { var since = clock.ago(days: 3); while (claim.valid && !abort.isCompleted) { // Look at all packages changed in [since] - final q = dbService.query() + final q = _db.query() ..filter('updated >', since) ..order('-updated'); diff --git a/app/lib/service/services.dart b/app/lib/service/services.dart index e678500997..92cd57709f 100644 --- a/app/lib/service/services.dart +++ b/app/lib/service/services.dart @@ -245,8 +245,10 @@ Future _withPubServices(FutureOr Function() fn) async { registerAnnouncementBackend(AnnouncementBackend()); if (activeConfiguration.exportedApiBucketName != null) { registerApiExporter(ApiExporter( - bucket: storageService - .bucket(activeConfiguration.exportedApiBucketName!))); + dbService, + bucket: + storageService.bucket(activeConfiguration.exportedApiBucketName!), + )); } registerAsyncQueue(AsyncQueue()); registerAuditBackend(AuditBackend(dbService)); diff --git a/app/test/package/api_export/api_exporter_test.dart b/app/test/package/api_export/api_exporter_test.dart index 121103b9de..b286e3ee8d 100644 --- a/app/test/package/api_export/api_exporter_test.dart +++ b/app/test/package/api_export/api_exporter_test.dart @@ -12,6 +12,7 @@ import 'package:googleapis/storage/v1.dart' show DetailedApiRequestError; import 'package:logging/logging.dart'; import 'package:pub_dev/fake/backend/fake_auth_provider.dart'; import 'package:pub_dev/package/api_export/api_exporter.dart'; +import 'package:pub_dev/shared/datastore.dart'; import 'package:pub_dev/shared/storage.dart'; import 'package:pub_dev/shared/utils.dart'; import 'package:pub_dev/shared/versions.dart'; @@ -46,7 +47,7 @@ void main() { (fakeTime) async { await storageService.createBucket('bucket'); final bucket = storageService.bucket('bucket'); - final apiExporter = ApiExporter(bucket: bucket); + final apiExporter = ApiExporter(dbService, bucket: bucket); await _testExportedApiSynchronization( fakeTime, @@ -61,7 +62,7 @@ void main() { (fakeTime) async { await storageService.createBucket('bucket'); final bucket = storageService.bucket('bucket'); - final apiExporter = ApiExporter(bucket: bucket); + final apiExporter = ApiExporter(dbService, bucket: bucket); await apiExporter.synchronizeExportedApi();