executeSql method

Future<SqliteSqlExecution> executeSql({
  1. required String database,
  2. required String query,
  3. Object? params,
  4. List<String>? namespace,
})

Implementation

Future<SqliteSqlExecution> executeSql({required String database, required String query, Object? params, List<String>? namespace}) async {
  final response = await _invokeContent(
    "execute_sql",
    BinaryContent(data: Uint8List(0), headers: {"database": database, "query": query, "params": params, "namespace": namespace}),
  );
  if (response is BinaryContent) {
    if (response.headers["kind"] != "query") {
      throw _unexpectedResponseError("execute_sql");
    }
    final queryId = response.headers["query_id"];
    if (queryId is! String || queryId.isEmpty) {
      throw _unexpectedResponseError("execute_sql");
    }
    return SqliteSqlQuery(schema: ArrowIpcSchema(response.data).schema, queryId: queryId);
  }
  if (response is JsonContent) {
    if (response.json["kind"] != "statement" || response.json["rows_affected"] is! num) {
      throw _unexpectedResponseError("execute_sql");
    }
    return SqliteSqlStatement(rowsAffected: (response.json["rows_affected"] as num).toInt());
  }
  throw _unexpectedResponseError("execute_sql");
}