コード例 #1
0
 private void ValidateEntryOrThrow(IRegsEntry entry)
 {
     if (entry == null)
     {
         throw new ArgumentNullException(nameof(entry));
     }
 }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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;
            }));
        }
コード例 #5
0
 public IRegsEntry Set(ushort db, RegsKey key, IRegsEntry entry) => _dbManager.Upsert(db, key, entry);