private void ValidateEntryOrThrow(IRegsEntry entry) { if (entry == null) { throw new ArgumentNullException(nameof(entry)); } }
/// <summary> /// Inserts a the provided entry for the specified key if the key does not already exist. /// </summary> /// <param name="db">The database to operate on.</param> /// <param name="key">The key of the entry to insert.</param> /// <param name="entry">The value of the entry.</param> /// <returns>true if the key/entry pair was inserted successfully; otherwise false if the key already exists</returns> public bool Insert(ushort db, RegsKey key, IRegsEntry entry) { ValidateDatabaseOrThrow(db); ValidateEntryOrThrow(entry); return(_databases[db].Value.TryAdd(key, entry)); }
/// <summary> /// Updates the specified key to the newly provided entry if they key already exists. /// </summary> /// <param name="db">The database to operate on.</param> /// <param name="key">The key of the entry to insert.</param> /// <param name="entry">The value of the entry.</param> /// <returns>true if the entry was updated successfully; otherwise false</returns> public bool Update(ushort db, RegsKey key, IRegsEntry entry) { ValidateDatabaseOrThrow(db); ValidateEntryOrThrow(entry); if (_databases[db].Value.TryGetValue(key, out IRegsEntry existingEntry)) { return(_databases[db].Value.TryUpdate(key, entry, existingEntry)); } return(false); }
/// <summary> /// Insert a new key/entry pair if the key does not already exist, or updates a key/entry pair if the key already exits. /// </summary> /// <param name="db">The database to operate on.</param> /// <param name="key">The key of the entry.</param> /// <param name="entry">The value of the entry.</param>m> /// <returns>The new entry for the key.</returns> public IRegsEntry Upsert(ushort db, RegsKey key, IRegsEntry entry) { ValidateDatabaseOrThrow(db); ValidateEntryOrThrow(entry); return(_databases[db].Value.AddOrUpdate(key, entry, (k, existingEntry) => { entry.CreatedOn = existingEntry.CreatedOn; entry.ModifiedOn = DateTimeOffset.UtcNow; return entry; })); }
public IRegsEntry Set(ushort db, RegsKey key, IRegsEntry entry) => _dbManager.Upsert(db, key, entry);