executeSql method
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");
}