public async Task <BeatmapConfig> GetOrAddBeatmapConfigByBeatmap(Beatmap beatmap) { try { if (beatmap == null) { Logger.Debug("需确认加入自定义目录后才可继续"); return(null); } if (beatmap.IsTemporary) { return(new BeatmapConfig()); } var map = await BeatmapConfigs .AsNoTracking() .FirstOrDefaultAsync(k => k.BeatmapId == beatmap.Id); if (map != null) { return(map); } var guid = Guid.NewGuid(); BeatmapConfigs.Add(new BeatmapConfig() { Id = guid, BeatmapId = beatmap.Id, }); await SaveChangesAsync(); return(await BeatmapConfigs.FindAsync(guid)); } catch (Exception ex) { Logger.Error(ex); throw; } }
/// <summary> /// ignore null columns /// </summary> /// <param name="beatmapConfig"></param> /// <returns></returns> public async Task AddOrUpdateBeatmapConfig(BeatmapConfig beatmapConfig) { if (beatmapConfig.BeatmapId == null || beatmapConfig.BeatmapId.Length == 0) { Console.WriteLine("No beatmap found."); return; } var beatmap = await Beatmaps.FindAsync(beatmapConfig.BeatmapId); if (beatmap == null) { Console.WriteLine("No beatmap found."); } var exist = await BeatmapConfigs.FindAsync(beatmapConfig.Id); if (exist == null) { BeatmapConfigs.Add(beatmapConfig); } else { if (beatmapConfig.MainVolume != null) { exist.MainVolume = beatmapConfig.MainVolume.Value; } if (beatmapConfig.MusicVolume != null) { exist.MusicVolume = beatmapConfig.MusicVolume.Value; } if (beatmapConfig.HitsoundVolume != null) { exist.HitsoundVolume = beatmapConfig.HitsoundVolume.Value; } if (beatmapConfig.SampleVolume != null) { exist.SampleVolume = beatmapConfig.SampleVolume.Value; } if (beatmapConfig.Offset != null) { exist.Offset = beatmapConfig.Offset.Value; } if (beatmapConfig.PlaybackRate != null) { exist.PlaybackRate = beatmapConfig.PlaybackRate.Value; } if (beatmapConfig.PlayUseTempo != null) { exist.PlayUseTempo = beatmapConfig.PlayUseTempo.Value; } if (beatmapConfig.LyricOffset != null) { exist.LyricOffset = beatmapConfig.LyricOffset.Value; } if (beatmapConfig.ForceLyricId != null) { exist.ForceLyricId = beatmapConfig.ForceLyricId; } } await SaveChangesAsync(); }