executeMutationRaw method

Future<int> executeMutationRaw(
  1. String sql,
  2. List parameters
)

Execute raw SQL mutation (INSERT/UPDATE/DELETE) and return affected rows.

Example:

final affected = await executor.executeMutationRaw(
  'DELETE FROM sessions WHERE expires_at < NOW()',
  [],
);

Implementation

Future<int> executeMutationRaw(
  String sql,
  List<dynamic> parameters,
) async {
  final argTypes = parameters.map((p) => _inferArgType(p)).toList();
  final sqlQuery = SqlQuery(sql: sql, args: parameters, argTypes: argTypes);

  final startTime = DateTime.now();
  logger?.onQueryStart(QueryStartEvent(
    sql: sql,
    parameters: parameters,
    operation: 'rawMutation',
    startTime: startTime,
  ));

  try {
    final result = await adapter.executeRaw(sqlQuery);
    final duration = DateTime.now().difference(startTime);

    logger?.onQueryEnd(QueryEndEvent(
      sql: sql,
      parameters: parameters,
      operation: 'rawMutation',
      duration: duration,
      rowCount: result,
    ));

    return result;
  } catch (e, stackTrace) {
    final duration = DateTime.now().difference(startTime);
    logger?.onQueryError(QueryErrorEvent(
      sql: sql,
      parameters: parameters,
      operation: 'rawMutation',
      duration: duration,
      error: e,
      stackTrace: stackTrace,
    ));
    throw _mapError(e);
  }
}