/// <inheritdoc /> protected override Task <EntityTag> GetDeadETagAsync(IEntry entry, CancellationToken cancellationToken) { var storeData = Load(entry, false, cancellationToken); var entryKey = GetEntryKey(entry); EntryInfo info; if (!storeData.Entries.TryGetValue(entryKey, out info)) { info = new EntryInfo(); storeData.Entries.Add(entryKey, info); } XElement etagElement; if (!info.Attributes.TryGetValue(_etagKey, out etagElement)) { var etag = new EntityTag(false); etagElement = etag.ToXml(); info.Attributes[_etagKey] = etagElement; Save(entry, storeData, cancellationToken); return(Task.FromResult(etag)); } return(Task.FromResult(EntityTag.FromXml(etagElement))); }
/// <inheritdoc /> protected override Task <EntityTag> GetDeadETagAsync(IEntry entry, CancellationToken cancellationToken) { var key = GetETagProperty.PropertyName; var prop = _connection .CreateCommand("SELECT * FROM props WHERE id=?", key) .ExecuteQuery <PropertyEntry>() .FirstOrDefault(); if (prop == null) { var etag = new EntityTag(false); prop = new PropertyEntry() { Id = CreateId(key, entry), Language = null, Path = entry.Path.ToString(), XmlName = key.ToString(), Value = etag.ToXml().ToString(SaveOptions.OmitDuplicateNamespaces), }; _connection.Insert(prop); return(Task.FromResult(etag)); } var result = EntityTag.FromXml(XElement.Parse(prop.Value)); return(Task.FromResult(result)); }
/// <inheritdoc /> protected override Task <EntityTag> UpdateDeadETagAsync(IEntry entry, CancellationToken cancellationToken) { var etag = new EntityTag(false); var key = GetETagProperty.PropertyName; var prop = new PropertyEntry() { Id = CreateId(key, entry), Language = null, Path = entry.Path.ToString(), XmlName = key.ToString(), Value = etag.ToXml().ToString(SaveOptions.OmitDuplicateNamespaces), }; _connection.InsertOrReplace(prop); return(Task.FromResult(etag)); }