public SearchImagesService()
        {
            _rng  = new Random();
            _http = new HttpClient();
            _http.AddFakeHeaders();
            _cache = new SearchImageCacher();
            _db    = new ServiceDb <SearchImageContext>(SearchImageContext.BaseOptions.Build());

            using (var uow = _db.GetDbContext())
            {
                _blacklistedTags = new ConcurrentDictionary <ulong, HashSet <string> >(uow.BlacklistedTags
                                                                                       .ToDictionary(x => x.GuildId, x => new HashSet <string>(x.Tags)));
            }
        }
        public override Task <BlacklistTagReply> ToggleBlacklistTag(BlacklistTagMessage request, ServerCallContext context)
        {
            lock (taglock)
            {
                var tag             = request.Tag.Trim().ToLowerInvariant();
                var blacklistedTags = _blacklistedTags.GetOrAdd(request.GuildId, new HashSet <string>());
                var isAdded         = blacklistedTags.Add(tag);

                if (!isAdded)
                {
                    blacklistedTags.Remove(tag);
                }

                var tagArr = blacklistedTags.ToArray();

                using (var uow = _db.GetDbContext())
                {
                    var bt = uow.BlacklistedTags.FirstOrDefault(x => x.GuildId == request.GuildId);
                    if (bt is null)
                    {
                        uow.BlacklistedTags.Add(new Common.Db.Models.BlacklistedTags
                        {
                            GuildId = request.GuildId,
                            Tags    = tagArr
                        });
                    }
                    else
                    {
                        bt.Tags = tagArr;
                    }

                    uow.SaveChanges();
                }

                return(Task.FromResult(new BlacklistTagReply
                {
                    IsAdded = isAdded
                }));
            }
        }