示例#1
0
        private static void HandleRecordings(DataContext context, JsonAcoustIdRequest.JsonResult json, AcoustId ai)
        {
            json.Recordings?.ForEach(recording =>
            {
                MusicBrainzRecord mbr = context.SetMusicBrainzRecords.Include(x => x.MusicBrainzRecordAcoustIds)
                                        .ThenInclude(x => x.AcoustId)
                                        .FirstOrDefault(x => x.MusicbrainzId.Equals(recording.Id));

                if (null == mbr)
                {
                    // not found in database
                    mbr = new MusicBrainzRecord
                    {
                        MusicbrainzId = recording.Id
                        , MusicBrainzRecordAcoustIds = new List <MusicBrainzRecordAcoustId>()
                    };
                    context.SetMusicBrainzRecords.Add(mbr);
                    context.SaveChanges();
                    mbr.MusicBrainzRecordAcoustIds.Add(new MusicBrainzRecordAcoustId
                    {
                        AcoustIdUniqueId            = ai.UniqueId
                        , AcoustId                  = ai
                        , MusicBrainzRecord         = mbr
                        , MusicBrainzRecordUniqueId = mbr.UniqueId
                    });
                    context.SaveChanges();

                    return; // continue in foreach
                }

                if (mbr.MusicBrainzRecordAcoustIds.Any(x => x.AcoustId.Id.Equals(ai.Id)))
                {
                    // reference already exists
                    return;
                }

                // no reference yet -> create one
                mbr.MusicBrainzRecordAcoustIds.Add(new MusicBrainzRecordAcoustId
                {
                    AcoustIdUniqueId            = ai.UniqueId
                    , AcoustId                  = ai
                    , MusicBrainzRecord         = mbr
                    , MusicBrainzRecordUniqueId = mbr.UniqueId
                });
                context.SaveChanges();
            });
        }
示例#2
0
        private static AcoustId HandleAcoustId(DataContext context, JsonAcoustIdRequest.JsonResult json)
        {
            AcoustId dbAid = context.SetAcoustIds.FirstOrDefault(y => y.Id.Equals(json.Id));

            if (null != dbAid)
            {
                return(dbAid);
            }

            // does not exist in database yet
            dbAid = new AcoustId
            {
                Id = json.Id
            };
            context.SetAcoustIds.Add(dbAid);
            context.SaveChanges();

            return(dbAid);
        }
示例#3
0
 private static void HandleResult(DataContext context, Track track, AcoustId dbAid, JsonAcoustIdRequest.JsonResult json)
 {
     context.SetAcoustIdResults.Add(new AcoustIdResult
     {
         Track      = track
         , AcoustId = dbAid
         , Score    = json.Score
     });
     context.SaveChanges();
 }