3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
5
import 'dart:async' show FutureOr, Zone;
6
+ import 'dart:io' show Platform;
6
7
7
8
import 'package:_pub_shared/utils/http.dart' ;
8
9
import 'package:appengine/appengine.dart' ;
@@ -14,6 +15,10 @@ import 'package:gcloud/service_scope.dart';
14
15
import 'package:gcloud/storage.dart' ;
15
16
import 'package:googleapis_auth/auth_io.dart' as auth;
16
17
import 'package:logging/logging.dart' ;
18
+ import 'package:postgres/postgres.dart' show Pool, Endpoint, PoolSettings;
19
+ import 'package:pub_dev/database/model.dart' ;
20
+ import 'package:pub_dev/fake/backend/fake_database.dart'
21
+ show createFakeDatabaseAdaptor;
17
22
import 'package:pub_dev/package/api_export/api_exporter.dart' ;
18
23
import 'package:pub_dev/search/handlers.dart' ;
19
24
import 'package:pub_dev/service/async_queue/async_queue.dart' ;
@@ -87,6 +92,29 @@ Future<void> withServices(FutureOr<void> Function() fn) async {
87
92
final retryingAuthClient = httpRetryClient (innerClient: authClient);
88
93
registerScopeExitCallback (() async => retryingAuthClient.close ());
89
94
95
+ final databaseAdapter = DatabaseAdapter .postgres (
96
+ Pool .withEndpoints (
97
+ [
98
+ Endpoint (
99
+ host: Platform .environment['PGHOST' ] ?? '127.0.0.1' ,
100
+ port: int .tryParse (Platform .environment['PGPORT' ] ?? '' ) ?? 5432 ,
101
+ database: Platform .environment['PGDATABASE' ] ?? 'postgres' ,
102
+ username: Platform .environment['PGUSER' ] ?? 'postgres' ,
103
+ password: Platform .environment['PGPASSWORD' ] ?? 'postgres' ,
104
+ ),
105
+ ],
106
+ settings: PoolSettings (
107
+ applicationName: 'pub-dev' ,
108
+ maxConnectionCount: 10 ,
109
+ ),
110
+ ),
111
+ );
112
+ registerDatabase (Database <PrimaryDatabase >(
113
+ databaseAdapter,
114
+ SqlDialect .postgres (),
115
+ ));
116
+ registerScopeExitCallback (() => databaseAdapter.close ());
117
+
90
118
// override storageService with retrying http client
91
119
registerStorageService (
92
120
Storage (retryingAuthClient, activeConfiguration.projectId));
@@ -179,6 +207,14 @@ Future<R> withFakeServices<R>({
179
207
}
180
208
181
209
// register fake services that would have external dependencies
210
+ final databaseAdapter = createFakeDatabaseAdaptor ();
211
+ registerDatabase (Database <PrimaryDatabase >(
212
+ databaseAdapter,
213
+ SqlDialect .postgres (),
214
+ ));
215
+ await database.createTables ();
216
+ registerScopeExitCallback (() => databaseAdapter.close ());
217
+
182
218
registerSecretBackend (FakeSecretBackend ({}));
183
219
registerAuthProvider (FakeAuthProvider ());
184
220
registerScopeExitCallback (authProvider.close);
@@ -261,7 +297,7 @@ Future<R> _withPubServices<R>(FutureOr<R> Function() fn) async {
261
297
registerIndexUpdater (IndexUpdater (dbService));
262
298
registerPublisherBackend (PublisherBackend (dbService));
263
299
registerScoreCardBackend (ScoreCardBackend (dbService));
264
- registerSearchBackend (SearchBackend (dbService,
300
+ registerSearchBackend (SearchBackend (database, dbService,
265
301
storageService.bucket (activeConfiguration.searchSnapshotBucketName! )));
266
302
registerSearchClient (SearchClient ());
267
303
registerSearchAdapter (SearchAdapter ());
@@ -280,6 +316,7 @@ Future<R> _withPubServices<R>(FutureOr<R> Function() fn) async {
280
316
storageService.bucket (activeConfiguration.publicPackagesBucketName! ),
281
317
));
282
318
registerTaskBackend (TaskBackend (
319
+ database,
283
320
dbService,
284
321
storageService.bucket (activeConfiguration.taskResultBucketName! ),
285
322
));
0 commit comments