Пример #1
0
        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();
            }
        }
Пример #2
0
        public override bool CreateDb()
        {
            bool dbMustBeSeeded;

            OptionsBuilder.EnableSensitiveDataLogging(false);

            using (var db = new SrfPlayListContext(OptionsBuilder.Options))
            {
                dbMustBeSeeded = db.Database.EnsureCreated();
            }

            return(dbMustBeSeeded);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }