예제 #1
0
 private void FillBeatmapParameters(IBeatmap beatmap)
 {
     _insertSql.Parameters.Add("@Raw", DbType.String).Value               = $"{beatmap.TitleRoman} - {beatmap.ArtistRoman}";
     _insertSql.Parameters.Add("@TitleRoman", DbType.String).Value        = beatmap.TitleRoman;
     _insertSql.Parameters.Add("@ArtistRoman", DbType.String).Value       = beatmap.ArtistRoman;
     _insertSql.Parameters.Add("@TitleUnicode", DbType.String).Value      = beatmap.TitleUnicode;
     _insertSql.Parameters.Add("@ArtistUnicode", DbType.String).Value     = beatmap.ArtistUnicode;
     _insertSql.Parameters.Add("@Creator", DbType.String).Value           = beatmap.Creator;
     _insertSql.Parameters.Add("@DiffName", DbType.String).Value          = beatmap.DiffName;
     _insertSql.Parameters.Add("@Mp3Name", DbType.String).Value           = beatmap.Mp3Name;
     _insertSql.Parameters.Add("@Md5", DbType.String).Value               = beatmap.Md5;
     _insertSql.Parameters.Add("@OsuFileName", DbType.String).Value       = beatmap.OsuFileName;
     _insertSql.Parameters.Add("@MaxBpm", DbType.Double).Value            = beatmap.MaxBpm;
     _insertSql.Parameters.Add("@MinBpm", DbType.Double).Value            = beatmap.MinBpm;
     _insertSql.Parameters.Add("@Tags", DbType.String).Value              = beatmap.Tags;
     _insertSql.Parameters.Add("@State", DbType.Int16).Value              = beatmap.State;
     _insertSql.Parameters.Add("@Circles", DbType.Int32).Value            = beatmap.Circles;
     _insertSql.Parameters.Add("@Sliders", DbType.Int32).Value            = beatmap.Sliders;
     _insertSql.Parameters.Add("@Spinners", DbType.Int32).Value           = beatmap.Spinners;
     _insertSql.Parameters.Add("@EditDate", DbType.DateTime).Value        = beatmap.EditDate ?? DateTime.MinValue;
     _insertSql.Parameters.Add("@ApproachRate", DbType.Double).Value      = beatmap.ApproachRate;
     _insertSql.Parameters.Add("@CircleSize", DbType.Double).Value        = beatmap.CircleSize;
     _insertSql.Parameters.Add("@HpDrainRate", DbType.Double).Value       = beatmap.HpDrainRate;
     _insertSql.Parameters.Add("@OverallDifficulty", DbType.Double).Value = beatmap.OverallDifficulty;
     _insertSql.Parameters.Add("@SliderVelocity", DbType.Double).Value    = beatmap.SliderVelocity;
     _insertSql.Parameters.Add("@DrainingTime", DbType.Int32).Value       = beatmap.DrainingTime;
     _insertSql.Parameters.Add("@TotalTime", DbType.Int32).Value          = beatmap.TotalTime;
     _insertSql.Parameters.Add("@PreviewTime", DbType.Int32).Value        = beatmap.PreviewTime;
     _insertSql.Parameters.Add("@MapId", DbType.Int32).Value              = beatmap.MapId;
     _insertSql.Parameters.Add("@MapSetId", DbType.Int32).Value           = beatmap.MapSetId;
     _insertSql.Parameters.Add("@ThreadId", DbType.Int32).Value           = beatmap.ThreadId;
     _insertSql.Parameters.Add("@MapRating", DbType.Int32).Value          = 0; //TODO: store per-gamemode pass ranks
     _insertSql.Parameters.Add("@Offset", DbType.Int32).Value             = beatmap.Offset;
     _insertSql.Parameters.Add("@StackLeniency", DbType.Double).Value     = beatmap.StackLeniency;
     _insertSql.Parameters.Add("@Mode", DbType.Int16).Value               = (byte)beatmap.PlayMode;
     _insertSql.Parameters.Add("@Source", DbType.String).Value            = beatmap.Source;
     _insertSql.Parameters.Add("@AudioOffset", DbType.Int32).Value        = beatmap.AudioOffset;
     _insertSql.Parameters.Add("@LetterBox", DbType.String).Value         = beatmap.LetterBox;
     _insertSql.Parameters.Add("@Played", DbType.Boolean).Value           = beatmap.Played;
     _insertSql.Parameters.Add("@LastPlayed", DbType.DateTime).Value      = beatmap.LastPlayed;
     _insertSql.Parameters.Add("@IsOsz2", DbType.Boolean).Value           = beatmap.IsOsz2;
     _insertSql.Parameters.Add("@Dir", DbType.String).Value               = beatmap.Dir;
     _insertSql.Parameters.Add("@LastSync", DbType.DateTime).Value        = beatmap.LastSync;
     _insertSql.Parameters.Add("@DisableHitsounds", DbType.Boolean).Value = beatmap.DisableHitsounds;
     _insertSql.Parameters.Add("@DisableSkin", DbType.Boolean).Value      = beatmap.DisableSkin;
     _insertSql.Parameters.Add("@DisableSb", DbType.Boolean).Value        = beatmap.DisableSb;
     _insertSql.Parameters.Add("@BgDim", DbType.Int16).Value              = beatmap.BgDim;
     _insertSql.Parameters.Add("@Somestuff", DbType.Int16).Value          = beatmap.Somestuff;
     _insertSql.Parameters.Add("@StarsOsu", DbType.Binary).Value          = beatmap.SerializeStars();
     _insertSql.Parameters.Add("@BeatmapChecksum", DbType.String).Value   = beatmap.GetChecksum();
     _insertSql.Parameters.Add("@MainBpm", DbType.Double).Value           = beatmap.MainBpm;
 }
예제 #2
0
 /// <summary>
 /// Used for inserting beatmap data to SQL table.
 /// When adding large amount of beatmaps it is advised to use MassStoring to speed up adding.
 /// When MassStoring is active, only new maps are queried to Sqlite
 /// </summary>
 /// <param name="beatmap">Beatmap to insert</param>
 public void StoreBeatmap(IBeatmap beatmap)
 {
     lock (_sqlConnector)
     {
         if (_sqlConnector.MassInsertIsActive)
         {
             var checksum = beatmap.GetChecksum();
             if (_beatmapChecksums.ContainsKey(checksum))
             {
                 _beatmapChecksums[checksum].Found = true;
                 return;
             }
             else
             {
                 var existingEntry = _beatmapChecksums.FirstOrDefault(x => x.Value.Md5 == beatmap.Md5);
                 if (!existingEntry.Equals(default(KeyValuePair <string, MapIdMd5Pair>)))
                 {
                     _beatmapChecksums.Remove(existingEntry.Key);
                 }
             }
         }
         _sqlConnector.StoreBeatmap(beatmap);
     }
 }