Ejemplo n.º 1
0
        /// <inheritdoc />
        public async ValueTask DeleteAsync(BlackjackContext entity)
        {
            var key = GetInstanceKey(entity.ChannelId, entity.UserId);

            Logging.Log.Debug($"MUT - {SessionKey}: {key}");
            await cache.HashDeleteAsync(SessionKey, key);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Update the values in Redis.
        /// </summary>
        public async ValueTask UpdateAsync(Context context, CancellationToken token = default)
        {
            if (updatedKeys.Count == 0)
            {
                return;
            }

            var cacheKey    = GetCacheKey(guildId);
            var cacheKeys   = (await cache.HashKeysAsync(cacheKey)).ToList();
            var deletedKeys = updatedKeys
                              .Where(k => !values.TryGetValue(k, out var value) || value.IsNull)
                              .ToList();

            foreach (var key in deletedKeys.Where(cacheKeys.Contains))
            {
                await cache.HashDeleteAsync(cacheKey, key);
            }

            foreach (var key in updatedKeys)
            {
                if (deletedKeys.Contains(key))
                {
                    continue;
                }

                var value = values[key];

                if (cacheKeys.Count >= keyLimit && !cacheKeys.Contains(key))
                {
                    throw new MiScriptException($"You can store up to {keyLimit} keys in the storage");
                }

                await using var stream = new MemoryStream();
                var writer     = new StreamWriter(stream);
                var jsonWriter = new JsonTextWriter(writer);

                await value.WriteJsonAsync(context, jsonWriter);

                await jsonWriter.FlushAsync(token);

                var json = Encoding.UTF8.GetString(stream.ToArray());

                if (json.Length > valueLimit)
                {
                    throw new MiScriptException($"The value limit is {valueLimit} bytes, tried to store {json.Length} bytes.");
                }

                await cache.HashUpsertAsync(cacheKey, key, json);
            }
        }
Ejemplo n.º 3
0
 private async Task DeletePayloadAsync(TaskPayload payload)
 {
     await cacheClient.HashDeleteAsync(GetObjectNamespace(payload.OwnerId), payload.Uuid);
 }
Ejemplo n.º 4
0
 /// <inheritdoc />
 public async Task CancelTaskAsync(string uuid, Optional <string> ownerId)
 {
     await cacheClient.HashDeleteAsync(parent.GetObjectNamespace(ownerId), uuid);
 }
Ejemplo n.º 5
0
 /// <inheritdoc />
 public async ValueTask DeleteAsync(T entity)
 {
     await cacheClient.HashDeleteAsync(
         GetCacheKey(entity), GetMemberKey(entity));
 }
Ejemplo n.º 6
0
 /// <inheritdoc />
 public Task RemoveCacheAsync(long guildId, string commandName)
 {
     return(cache.HashDeleteAsync(
                CommandCacheKey, commandName + ":" + guildId));
 }