putMeta method

  1. @override
Future<bool> putMeta(
  1. AtKey atKey
)
override

Updates the metadata of AtKey.key if it is already present. Otherwise creates a new key without a value. By default namespace that is used to create the AtClient instance will be appended to the key. phone@alice will be saved as phone.persona@alice where 'persona' is the namespace. If you want to save by ignoring the namespace set AtKey.metadata.namespaceAware to false.

update:meta:phone@alice:ttl:60000
  var metaData = Metadata()..ttl = 60000
  var key = AtKey()..key='phone'
            ..metadata=metaData
  putMeta(key);
update:meta:phone@alice:ttr:120000:ccd:true
  var metaData = Metadata()..ttr = '120000'
                           ..ccd = true
  var key = AtKey()..key='phone'
            ..metadata=metaData
  putMeta(key);

If you want to set both value and metadata please use put

Implementation

@override
Future<bool> putMeta(AtKey atKey) async {
  var updateKey = atKey.key;
  var metadata = atKey.metadata;
  if (metadata.namespaceAware) {
    updateKey = _getKeyWithNamespace(atKey.key);
  }
  var builder = UpdateVerbBuilder();
  builder
    ..atKey = atKey
    ..operation = AtConstants.updateMeta;

  var updateMetaResult = await getSecondary()
      .executeVerb(builder, sync: SyncUtil.shouldSync(updateKey));
  return updateMetaResult != null;
}