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)); }
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); }
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); }
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)); }
private List <string> SingerKnownPlatformIds(Singers s) => (new[] { s.NeteaseId, s.KugouId, s.QQMusicId }).Where(x => !string.IsNullOrEmpty(x)).ToList();
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); }