private async Task <bool> ContainsConfigEntryAsync(ConfigurationSourceType source, TConfigType configType, int ownershipId, CancellationToken token = default)
        {
            if (configType == null)
            {
                throw new ArgumentNullException(nameof(configType));
            }
            if (!Enum.IsDefined(typeof(ConfigurationSourceType), source))
            {
                throw new InvalidEnumArgumentException(nameof(source), (int)source, typeof(ConfigurationSourceType));
            }

            switch (source)
            {
            case ConfigurationSourceType.Account:
                return(await AccountConfigRepository.ContainsAsync(new GameConfigurationKey <TConfigType>(ownershipId, configType), token));

            case ConfigurationSourceType.Character:
                return(await CharacterConfigRepository.ContainsAsync(new GameConfigurationKey <TConfigType>(ownershipId, configType), token));

            default:
                throw new ArgumentOutOfRangeException(nameof(source), source, null);
            }
        }