private void InsertOrUpdateMetaInfo(Guid channelId, string channelName) { using (var db = new SrfPlayListContext(OptionsBuilder.Options)) { var metaInfo = db.MetaInfo.Local.FirstOrDefault(s => s.ChannelId.Equals(channelId)); if (metaInfo == default(MetaInfo)) { metaInfo = db.MetaInfo.FirstOrDefault(s => s.ChannelId.Equals(channelId)); } if (metaInfo == default(MetaInfo)) { metaInfo = new MetaInfo { ChannelId = channelId, ChannelName = channelName }; db.Add(metaInfo); } metaInfo.LastUpdate = DateTime.Now; db.SaveChanges(); } }
public override bool CreateDb() { bool dbMustBeSeeded; OptionsBuilder.EnableSensitiveDataLogging(false); using (var db = new SrfPlayListContext(OptionsBuilder.Options)) { dbMustBeSeeded = db.Database.EnsureCreated(); } return(dbMustBeSeeded); }
public override bool Insert(string json) { var data = JsonConvert.DeserializeObject <RootObject>(json); if (data == null || !data.Songlog.Any()) { return(false); } if (data.pageSize < data.Songlog.Count) { var log = new ImportInfo(); log.Messages.Add("data.pageSize < data.Songlog.Count: " + data.Id + " => " + data.pageSize + " < " + data.Songlog.Count); ImportLog.Add(log); } using (var db = new SrfPlayListContext(OptionsBuilder.Options)) { foreach (var songLogData in data.Songlog) { // check for already imported songlog var songlog = db.Songlogs.Local.FirstOrDefault(s => s.id.Equals(songLogData.id)); if (songlog == default(Songlog)) { songlog = db.Songlogs.FirstOrDefault(s => s.id.Equals(songLogData.id)); } if (songlog != default(Songlog)) { continue; } var artist = Artist.Add(db, songLogData); var song = Song.Add(db, songLogData, artist); // checked for existing above songlog = Songlog.Add(db, songLogData, song); var log = new ImportInfo { Artist = artist.name, Song = song.title, PlayedDate = songlog.playedDate }; ImportLog.Add(log); } db.SaveChanges(); } return(true); }
private DateTime?GetLastUpdateTime(Guid channelId) { DateTime?dt; using (var db = new SrfPlayListContext(OptionsBuilder.Options)) { if (db.MetaInfo.Any(i => i.ChannelId.Equals(channelId))) { dt = db.MetaInfo.Single(m => m.ChannelId.Equals(channelId)).LastUpdate; } else { dt = null; } } return(dt); }