private async Task UpdateConfigEntryAsync(GameConfigurationUpdateRequest <TConfigType> request, int ownershipId, CancellationToken token = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } switch (request.Source) { case ConfigurationSourceType.Account: { var entry = await AccountConfigRepository.RetrieveAsync(new GameConfigurationKey <TConfigType>(ownershipId, request.ConfigType), token); entry.Data = new GameConfigData(request.Data); await AccountConfigRepository.UpdateAsync(new GameConfigurationKey <TConfigType>(ownershipId, request.ConfigType), entry, token); return; } case ConfigurationSourceType.Character: { var entry = await CharacterConfigRepository.RetrieveAsync(new GameConfigurationKey <TConfigType>(ownershipId, request.ConfigType), token); entry.Data = new GameConfigData(request.Data); await CharacterConfigRepository.UpdateAsync(new GameConfigurationKey <TConfigType>(ownershipId, request.ConfigType), entry, token); return; } default: throw new ArgumentOutOfRangeException(nameof(request.Source), request.Source, null); } }
private async Task <bool> CreateConfigEntryAsync(GameConfigurationUpdateRequest <TConfigType> request, int ownershipId, CancellationToken token = default) { if (request == null) { throw new ArgumentNullException(nameof(request)); } switch (request.Source) { case ConfigurationSourceType.Account: return(await AccountConfigRepository.TryCreateAsync(new AccountGameConfiguration <TConfigType>(ownershipId, new GameConfigData(request.Data), request.ConfigType), token)); case ConfigurationSourceType.Character: return(await CharacterConfigRepository.TryCreateAsync(new CharacterGameConfiguration <TConfigType>(ownershipId, new GameConfigData(request.Data), request.ConfigType), token)); default: throw new ArgumentOutOfRangeException(nameof(request.Source), request.Source, null); } }
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); } }