update method

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

Implementation

@override
Future<int> update({
  required Filter Function(TMeta t) where,
  TEntity? entity,
  Map<ColumnDefinition<TEntity, dynamic>, dynamic> Function(TMeta t)?
      columnValues,
  bool? useIsolate,
}) async {
  assert(
    entity != null || columnValues != null,
    'entity and columnValues cannot be both null',
  );
  final db = await dbContext.database;
  final formattedQuery = await whereString(
    where,
    useIsolate: useIsolate,
  );
  var createdAt = entity?.createdAt;
  if (entity == null) {
    final res =
        await firstWhereOrNullMap(where, columns: (t) => [t.createdAt]);
    if (res != null && res.containsKey(t.createdAt.name)) {
      createdAt = DateTime.parse(res[t.createdAt.name] as String);
    }
  }
  entity = (entity ?? mType).updateDates(createdAt: createdAt) as TEntity;
  final update = columnValues != null
      ? (entity as Entity).toStorageJson(columnValues: columnValues(t))
      : entity.toDb();
  return db.update(
    t.tableName,
    update,
    where: formattedQuery.filter,
    whereArgs: formattedQuery.whereArgs,
  );
}