update<D extends Dto<D>, F extends DtoFilter<D>, E extends DtoExpand<D>, S extends DtoSort<D>, F2 extends DtoFieldSelect<D>> method

Future<D> update<D extends Dto<D>, F extends DtoFilter<D>, E extends DtoExpand<D>, S extends DtoSort<D>, F2 extends DtoFieldSelect<D>>(
  1. DtoMeta<D, F, E, S, F2> meta,
  2. String id, {
  3. PatchDto<D>? body,
  4. Map<String, dynamic> query = const {},
  5. Map<String, String> headers = const {},
  6. void expand(
    1. E
    )?,
  7. void fields(
    1. F2
    )?,
})

Implementation

Future<D> update<
  D extends Dto<D>,
  F extends DtoFilter<D>,
  E extends DtoExpand<D>,
  S extends DtoSort<D>,
  F2 extends DtoFieldSelect<D>
>(
  DtoMeta<D, F, E, S, F2> meta,
  String id, {
  PatchDto<D>? body,
  Map<String, dynamic> query = const {},
  Map<String, String> headers = const {},
  void Function(E)? expand,
  void Function(F2)? fields,
}) async {
  var collection = meta.collectionName;
  var converter = meta.fromRecord;
  var updated = await _pb
      .collection(collection)
      .update(
        id,
        body: body?.toJson() ?? const {},
        query: query,
        files: await Future.wait(body?.toFiles() ?? const []),
        headers: headers,
        expand: _build(meta.expansions, expand)?.toString(),
        fields: _build(meta.fields, fields)?.toString(),
      );
  return converter(updated);
}