Future<Result<int, String, T?>> updateItem(T item, {Future<Result<int, String, T?>> Function(T)? alternativeFunc});