createNew method

Future<ResourceCreated> createNew(
  1. String type, {
  2. String? lid,
  3. Map<String, Object?> attributes = const {},
  4. Map<String, NewIdentifier> one = const {},
  5. Map<String, Iterable<NewIdentifier>> many = const {},
  6. Map<String, Object?> meta = const {},
  7. Map<String, Object?> documentMeta = const {},
  8. Map<String, List<String>> headers = const {},
  9. Iterable<QueryEncodable> query = const [],
})

Creates a new resource in the collection of type type. The server is responsible for assigning the resource id.

Optional arguments:

  • lid - local resource id
  • attributes - resource attributes
  • one - resource to-one relationships
  • many - resource to-many relationships
  • meta - resource meta data
  • documentMeta - document meta
  • headers - any extra HTTP headers
  • query - a collection of parameters to be included in the URI query

Implementation

Future<ResourceCreated> createNew(
  String type, {
  String? lid,
  Map<String, Object?> attributes = const {},
  Map<String, NewIdentifier> one = const {},
  Map<String, Iterable<NewIdentifier>> many = const {},
  Map<String, Object?> meta = const {},
  Map<String, Object?> documentMeta = const {},
  Map<String, List<String>> headers = const {},
  Iterable<QueryEncodable> query = const [],
}) async =>
    ResourceCreated(await send(
        _baseUri.collection(type),
        Request.post(
            OutboundDataDocument.newResource(NewResource(type, lid: lid)
              ..attributes.addAll(attributes)
              ..relationships.addAll({
                ...one.map((key, value) => MapEntry(key, NewToOne(value))),
                ...many.map((key, value) => MapEntry(key, NewToMany(value))),
              })
              ..meta.addAll(meta))
              ..meta.addAll(documentMeta))
          ..headers.addAll(headers)
          ..query.mergeAll(query)));