public async Task Update( string projectId, IKvpItem kvp, CancellationToken cancellationToken = default(CancellationToken) ) { if (kvp == null) { throw new ArgumentException("kvp can't be null"); } var kvpItem = KvpItem.FromIKvpItem(kvp); using (var db = _contextFactory.Create()) { bool tracking = db.ChangeTracker.Entries <KvpItem>().Any(x => x.Entity.Id == kvpItem.Id); if (!tracking) { db.KvpItems.Update(kvpItem); } var rowsAffected = await db.SaveChangesAsync(cancellationToken) .ConfigureAwait(false); } }
public async Task Update( string projectId, IKvpItem kvp, CancellationToken cancellationToken = default(CancellationToken) ) { var item = KvpItem.FromIKvpItem(kvp); await _kvpCommands.UpdateAsync( projectId, item.Id, item, cancellationToken).ConfigureAwait(false); }
public async Task CreateOrUpdate(string siteId, string userId, string key, string value) { if (string.IsNullOrWhiteSpace(siteId)) { throw new ArgumentException("siteid must be provided"); } if (string.IsNullOrWhiteSpace(userId)) { throw new ArgumentException("userId must be provided"); } if (string.IsNullOrWhiteSpace(key)) { throw new ArgumentException("key must be provided"); } //if (string.IsNullOrWhiteSpace(value)) throw new ArgumentException("value must be provided"); var kvpList = await _kvpStorage.FetchById( siteId, //projectId "*", // featureId siteId, //setId userId // subSetId ).ConfigureAwait(false); var foundKvp = kvpList.Where(x => x.Key == key).FirstOrDefault(); if (foundKvp != null) { foundKvp.Value = value; foundKvp.ModifiedUtc = DateTime.UtcNow; await _kvpStorage.Update( siteId, foundKvp).ConfigureAwait(false); } else { var kvp = new KvpItem(); kvp.Key = key; kvp.Value = value; kvp.SetId = siteId; kvp.SubSetId = userId; await _kvpStorage.Create( siteId, kvp).ConfigureAwait(false); } }
public async Task Create( string projectId, IKvpItem kvp, CancellationToken cancellationToken = default(CancellationToken) ) { if (kvp == null) { throw new ArgumentException("kvp can't be null"); } var kvpItem = KvpItem.FromIKvpItem(kvp); _db.KvpItems.Add(kvpItem); var rowsAffected = await _db.SaveChangesAsync(cancellationToken) .ConfigureAwait(false); }