protected async Task <Option <ResourceResponse> > GetResourceResponse(object data)
        {
            var json    = JsonConvert.SerializeObject(data);
            var md5Hash = json.GetMd5Hash();

            await using var context = new RelayApiContext(Options);
            var firstOrDefaultAsync = await context.ResourceConfigData.Where(d => d.Hash == md5Hash).OrderBy(x => x.Id).FirstOrDefaultAsync();

            if (firstOrDefaultAsync == null)
            {
                return(Option <ResourceResponse> .None);
            }

            context.ResourceConfigData.Remove(firstOrDefaultAsync);
            await context.SaveChangesAsync();

            await Task.Delay(firstOrDefaultAsync.DelayInMs);

            var status       = firstOrDefaultAsync.HttpStatusCode ?? Option <HttpStatusCode> .None;
            var invalidToken = string.IsNullOrWhiteSpace(firstOrDefaultAsync.InvalidToken) ? Option <string> .None : firstOrDefaultAsync.InvalidToken;

            return(status.Match(s => new ResourceResponse {
                StatusCode = s, InvalidToken = invalidToken.Match(t => t, () => Option <string> .None)
            },
                                () => invalidToken.Match(t => new ResourceResponse {
                StatusCode = Option <HttpStatusCode> .None, InvalidToken = t
            }, () => Option <ResourceResponse> .None)));
        }
        protected async Task AddResourceConfig(object data, ResourceHandlerConfiguration resourceHandlerConfigurations)
        {
            var json       = JsonConvert.SerializeObject(data);
            var configData = new ResourceConfigData
            {
                Hash         = json.GetMd5Hash(), DelayInMs = resourceHandlerConfigurations.DelayInMs, HttpStatusCode = resourceHandlerConfigurations.HttpStatusCode,
                InvalidToken = resourceHandlerConfigurations.InvalidToken, Body = json
            };

            await using var context = new RelayApiContext(Options);
            await context.ResourceConfigData.AddAsync(configData).ConfigureAwait(false);

            await context.SaveChangesAsync().ConfigureAwait(false);
        }