Example #1
0
        private UpdateDefinition <Singers> GetSingerUpdater(Singers s)
        {
            var u          = Builders <Singers> .Update;
            var updatePipe = new List <UpdateDefinition <Singers> >();

            if (!string.IsNullOrEmpty(s.SingerName))
            {
                updatePipe.Add(u.Set(r => r.SingerName, s.SingerName));
            }
            if (!string.IsNullOrEmpty(s.NeteaseId))
            {
                updatePipe.Add(u.Set(r => r.NeteaseId, s.NeteaseId));
            }
            if (!string.IsNullOrEmpty(s.KugouId))
            {
                updatePipe.Add(u.Set(r => r.KugouId, s.KugouId));
            }
            if (!string.IsNullOrEmpty(s.QQMusicId))
            {
                updatePipe.Add(u.Set(r => r.QQMusicId, s.QQMusicId));
            }
            if (s.Language != null)
            {
                updatePipe.Add(u.Set(r => r.Language, s.Language));
            }
            return(u.Combine(updatePipe));
        }
Example #2
0
        public bool UpdateSingerInfo(Singers singerNewInfo)
        {
            var filter       = Builders <Singers> .Filter;
            var singerFilter = filter.Eq(r => r.SingerName, singerNewInfo.SingerName);

            var updater = GetSingerUpdater(singerNewInfo);
            var session = _context._client.StartSession();

            session.StartTransaction();
            var result = _context.Singers.UpdateOne(singerFilter, updater, new UpdateOptions {
                IsUpsert = true
            });

            if (result.MatchedCount == 1 && result.ModifiedCount == 0 && result.UpsertedId == null)
            {
                // 不需要改动
                _logger.LogInformation($"歌手信息: {singerNewInfo.SingerName} 不需要更新.");
                session.CommitTransaction();
                return(true);
            }
            else if (result.ModifiedCount == 1 || result.UpsertedId != null)
            {
                // 满足条件commit.
                _logger.LogInformation($"歌手信息: {singerNewInfo.SingerName} 成功更新.");
                session.CommitTransaction();
                return(true);
            }
            // 其他条件rollback
            _logger.LogInformation($"歌手信息: {singerNewInfo.SingerName} 错误回滚: {result}.");
            session.AbortTransaction();
            return(false);
        }
        public void Task_Get_With_Relation_Return_NotEqual()
        {
            var factory = new ConnectionFactory();
            var context = factory.CreateContextForSQLite();

            for (int i = 1; i < 4; i++)
            {
                var singers = new Singers()
                {
                    SingerId     = i,
                    SingerName   = "Category " + i,
                    SingerReview = "good one",
                    IsActive     = true,
                    CreatedDate  = DateTime.Now,
                    ModifiedDate = DateTime.Now,
                    CreatedBy    = 1,
                    ModifiedBy   = 1
                };
                context.Singers.Add(singers);
            }
            for (int i = 1; i < 4; i++)
            {
                var album = new Albums()
                {
                    AlbumId          = i,
                    AlbumName        = "Category " + i,
                    AlbumImagPath    = "../Test/Image.png",
                    AlbumPrice       = 1,
                    AlbumReleaseDate = DateTime.Now,
                    IsActive         = true,
                    CreatedDate      = DateTime.Now,
                    ModifiedDate     = DateTime.Now,
                    CreatedBy        = 1,
                    ModifiedBy       = 1
                };
                context.Albums.Add(album);
            }

            for (int i = 1; i < 4; i++)
            {
                var singerAlbum = new SingerAlbumLinks()
                {
                    SingerAlbumId = i,
                    SingerId      = i,
                    AlbumId       = 2,
                };
                context.SingerAlbumLinks.Add(singerAlbum);
            }
            context.SaveChanges();

            var singerRepo    = new SingersRepository(context);
            var singerService = new SingerService(singerRepo);

            var result = singerService.GetSingerDetailsByAlbumId(4);

            Assert.NotEqual(3, result.Count);
        }
Example #4
0
 public USinger GetSinger(string name)
 {
     Log.Information(name);
     name = name.Replace(PathManager.UtauVoicePath, "");
     if (Singers.ContainsKey(name))
     {
         return(Singers[name]);
     }
     return(null);
 }
 public void AddSinger(Singer singer)
 {
     if (Singers.Any(e => e.SingerType == singer.SingerType))
     {
         throw new Exception($"You cannot add additional-{singer.SingerType} to quartet->{this.Name}");
     }
     if (Singers.Count > 3)
     {
         throw new Exception($"You cannot add additional singer->{singer.Name} to quartet->{this.Name} cause quartet already more than 3 members");
     }
     Singers.Add(singer);
 }
Example #6
0
        public void InsertNewSingerInfoToDbIfNotExists(string Singerid, string Platform, string SingerName)
        {
            var singer = new Singers
            {
                SingerName = SingerName.Trim()
            };

            switch (Platform)
            {
            case "netease":
            {
                if (string.IsNullOrEmpty(singer.NeteaseId))
                {
                    singer.NeteaseId = Singerid;
                }
                break;
            }

            case "kugou":
            {
                if (string.IsNullOrEmpty(singer.NeteaseId))
                {
                    singer.KugouId = Singerid;
                }
                break;
            }

            case "qqmusic":
            {
                if (string.IsNullOrEmpty(singer.NeteaseId))
                {
                    singer.QQMusicId = Singerid;
                }
                break;
            }
            }
            UpdateSingerInfo(singer);
        }
 public Singer GetByType(SingerType type)
 {
     return(Singers.FirstOrDefault(e => e.SingerType == type));
 }
Example #8
0
 private List <string> SingerKnownPlatformIds(Singers s)
 => (new[] { s.NeteaseId, s.KugouId, s.QQMusicId }).Where(x => !string.IsNullOrEmpty(x)).ToList();
Example #9
0
        public void Task_Get_With_Relation_Return_NotNull()
        {
            var factory = new ConnectionFactory();
            var context = factory.CreateContextForSQLite();

            for (int i = 1; i < 4; i++)
            {
                var singers = new Singers()
                {
                    SingerId     = i,
                    SingerName   = "Category " + i,
                    SingerReview = "good one",
                    IsActive     = true,
                    CreatedDate  = DateTime.Now,
                    ModifiedDate = DateTime.Now,
                    CreatedBy    = 1,
                    ModifiedBy   = 1
                };
                context.Singers.Add(singers);
            }

            for (int i = 1; i < 4; i++)
            {
                var album = new Albums()
                {
                    AlbumId          = i,
                    AlbumName        = "Category " + i,
                    AlbumImagPath    = "../Test/Image.png",
                    AlbumPrice       = 1,
                    AlbumReleaseDate = DateTime.Now,
                    IsActive         = true,
                    CreatedDate      = DateTime.Now,
                    ModifiedDate     = DateTime.Now,
                    CreatedBy        = 1,
                    ModifiedBy       = 1
                };
                context.Albums.Add(album);
            }

            for (int i = 1; i < 4; i++)
            {
                var songs = new Songs()
                {
                    SongId         = i,
                    SingerId       = 2,
                    AlbumId        = 2,
                    SongDuration   = TimeSpan.Parse("00:04:00"),
                    SongName       = "Test Song" + i.ToString(),
                    SongPrice      = 3,
                    SongPopularity = 3,
                    IsActive       = true,
                    CreatedDate    = DateTime.Now,
                    ModifiedDate   = DateTime.Now,
                    CreatedBy      = 1,
                    ModifiedBy     = 1
                };
                context.Songs.Add(songs);
            }
            context.SaveChanges();

            var songRepo    = new SongsRepository(context);
            var songService = new SongService(songRepo);
            var result      = songService.GetSongList(2, 10, 0, string.Empty);

            Assert.NotNull(result);
        }