update method

  1. @override
Future<int> update({
  1. required Filter<ModelBase> where(
    1. TMeta t
    ),
  2. TModel? model,
  3. Map<ColumnDefinition<TModel, dynamic>, dynamic> columnValues(
    1. TMeta t
    )?,
  4. bool? useIsolate,
})

Implementation

@override
Future<int> update({
  required Filter Function(TMeta t) where,
  TModel? model,
  Map<ColumnDefinition<TModel, dynamic>, dynamic> Function(TMeta t)?
      columnValues,
  bool? useIsolate,
}) async {
  final query = where(
    t,
  ).filters.where((element) => element.column?.name == 'id').toList();
  if (query.isNotEmpty == true) {
    var createdAt = model?.createdAt;
    if (model == null) {
      final res = await firstWhereOrNullMap(
        where,
        select: (t) => [t.createdAt],
      );
      if (res != null && res.containsKey(t.createdAt.name)) {
        createdAt = res[t.createdAt.name] as DateTime?;
      }
    }
    model = (model ?? mType).updateDates(createdAt: createdAt) as TModel;
    final update = columnValues != null
        ? (model as Model).toStorageJson(columnValues: columnValues(t))
        : model.toMap();
    await write(key: query[0].value as String, value: update);
    return 1;
  }
  return 0;
}