insert method

Future<MutationResult> insert(
  1. String key,
  2. Object? value, [
  3. InsertOptions? options
])

Inserts a new document into the collection, failing if the document already exists.

Implementation

Future<MutationResult> insert(
  String key,
  Object? value, [
  InsertOptions? options,
]) async {
  options ??= const InsertOptions();
  final id = _documentId(key);
  final expiry = options.expiry ?? Duration.zero;
  final timeout = _mutationTimeout(options);
  final encodedData = _encodeDocument(options, value);

  final response = options.usesLegacyDurability
      ? await _connection.insertWithLegacyDurability(
          InsertWithLegacyDurability(
            id: id,
            value: encodedData.bytes,
            flags: encodedData.flags,
            expiry: expiry.inSeconds,
            timeout: timeout,
            persistTo: options.durabilityPersistTo,
            replicateTo: options.durabilityReplicateTo,
            partition: 0,
            opaque: 0,
          ),
        )
      : await _connection.insert(
          InsertRequest(
            id: id,
            value: encodedData.bytes,
            flags: encodedData.flags,
            expiry: expiry.inSeconds,
            timeout: timeout,
            durabilityLevel: options.durabilityLevel,
            partition: 0,
            opaque: 0,
          ),
        );

  return MutationResult(
    cas: response.cas,
    token: response.token,
  );
}