Ejemplo n.º 1
0
        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;
            }
        }