Line data Source code
1 : import 'package:testainers/src/testainers_base.dart';
2 : import 'package:testainers/src/testainers_utils.dart';
3 :
4 : class TestainersPostgresql extends Testainers {
5 : final String? _username;
6 : final String? _password;
7 : final String? _database;
8 : int? _port;
9 :
10 1 : TestainersPostgresql({
11 : String? username,
12 : String? password,
13 : String? database,
14 : int? port,
15 : super.config,
16 : super.name,
17 : super.image = 'postgres',
18 : super.tag = '18-alpine',
19 : super.ports = const <int, int>{},
20 : super.env = const <String, String>{},
21 : super.detached = true,
22 : super.remove = true,
23 : super.links,
24 : super.networks,
25 : super.healthCmd = 'pg_isready -U postgres',
26 : super.healthInterval = 5,
27 : super.healthRetries = 2,
28 : super.healthTimeout = 3,
29 : super.healthStartPeriod = 1,
30 : super.noHealthcheck,
31 : super.stopTime,
32 : }) : _username = username,
33 : _password = password,
34 : _database = database,
35 : _port = port;
36 :
37 4 : String get username => _username ?? config.defaultUsername;
38 :
39 4 : String get password => _password ?? config.defaultPassword;
40 :
41 4 : String get database => _database ?? config.defaultUsername;
42 :
43 2 : int get port => _port ?? -1;
44 :
45 1 : @override
46 : Future<Map<int, int>> portsFilter(Map<int, int> ports) async {
47 2 : _port ??= await TestainersUtils.generatePort();
48 3 : return <int, int>{...ports, _port!: 5432};
49 : }
50 :
51 1 : @override
52 : Future<Map<String, String>> envFilter(Map<String, String> env) async =>
53 1 : <String, String>{
54 : ...env,
55 2 : 'POSTGRES_USER': username,
56 2 : 'POSTGRES_PASSWORD': password,
57 2 : 'POSTGRES_DB': database,
58 : };
59 : }
|