tryThrowDataProxyErrors method

void tryThrowDataProxyErrors(
  1. Map<String, dynamic> json
)

Implementation

void tryThrowDataProxyErrors(Map<String, dynamic> json) {
  if (json.containsKey('InteractiveTransactionMisrouted')) {
    final Map<String, String> messages = {
      'IDParseError': 'Could not parse interactive transaction ID',
      'NoQueryEngineFoundError':
          'Could not find Query Engine for the specified host and transaction ID',
      'TransactionStartError': 'Could not start interactive transaction',
    };
    throw PrismaRequestException(
      message: messages[json['InteractiveTransactionMisrouted']['reason']]!,
      engine: this,
    );
  } else if (json.containsKey('InvalidRequestError')) {
    throw PrismaRequestException(
      message: json['InvalidRequestError']['reason']!,
      engine: this,
    );
  } else if (json.containsKey('EngineNotStarted')) {
    final engineNotStarted = json['EngineNotStarted'];
    if (engineNotStarted is! Map) {
      return;
    } else if (engineNotStarted['reason'] == 'SchemaMissing') {
      throw PrismaException(
        message: 'Data Proxy: ${engineNotStarted['reason']}',
        engine: this,
      );
    } else if (engineNotStarted['reason'] == 'EngineVersionNotSupported') {
      throw PrismaInitializationException(
        message: 'Data Proxy: ${engineNotStarted['reason']}',
        engine: this,
      );
    }

    final Map<String, dynamic> reason = engineNotStarted['reason'];
    if (reason.containsKey('EngineStartupError')) {
      throw PrismaInitializationException(
        message: 'Data Proxy: ${reason['EngineStartupError']['msg']}',
        engine: this,
      );
    } else if (reason.containsKey('KnownEngineStartupError')) {
      throw PrismaInitializationException(
        message: 'Data Proxy: ${reason['KnownEngineStartupError']['msg']}',
        engine: this,
      );
    } else if (reason.containsKey('HealthcheckTimeout')) {
      throw PrismaInitializationException(
        message: 'Data Proxy: Healthcheck timeout',
        engine: this,
      );
    }
  }
}