PostgreSQLContainerConfig constructor

PostgreSQLContainerConfig({
  1. String pgUser = 'postgres',
  2. String pgPassword = 'postgres',
  3. String pgDatabase = 'postgres',
  4. int? hostPort,
})

Implementation

PostgreSQLContainerConfig(
    {this.pgUser = 'postgres',
    this.pgPassword = 'postgres',
    this.pgDatabase = 'postgres',
    int? hostPort})
    : super(
        'postgres',
        version: 'latest',
        hostPorts: hostPort != null ? [hostPort] : null,
        containerPorts: [5432],
        environment: {
          'POSTGRES_USER': pgUser,
          'POSTGRES_PASSWORD': pgPassword,
          'POSTGRES_DB': pgDatabase,
        },
        outputAsLines: true,
        stdoutReadyFunction: (output, data) {
          var lines = data is List ? data : [data];

          var readyForConnections = lines.any((l) =>
              l.contains('database system is ready to accept connections'));
          if (!readyForConnections) return false;

          var allLines = output.dataAsListOfStrings;

          var initComplete = allLines.indexWhere(
              (l) => l.contains('PostgreSQL init process complete;'));
          if (initComplete < 0) return false;

          var afterComplete = allLines.sublist(initComplete);

          readyForConnections = afterComplete.any((l) =>
              l.contains('database system is ready to accept connections'));

          print(readyForConnections);

          return readyForConnections;
        },
        stderrReadyFunction: (output, data) {
          var lines = data is List ? data : [data];

          var readyForConnections = lines.any((l) =>
              l.contains('database system is ready to accept connections'));
          return readyForConnections;
        },
      ) {
  if (pgUser.trim().isEmpty) {
    throw ArgumentError('Invalid pgUser: $pgUser');
  }

  if (pgDatabase.trim().isEmpty) {
    throw ArgumentError('Invalid pgDatabase: $pgDatabase');
  }

  if (pgPassword.isEmpty) {
    throw ArgumentError('Invalid pgPassword: $pgUser');
  }
}