/// <summary> /// Converts a videodb_videodata object to VideoDbMovie object. /// Functions makes additional queries to fill owner name, mediatype name and genres. /// </summary> /// <param name="source"></param> /// <returns></returns> private VideoDbMovie ConvertToVideoDbMovie(videodb_videodata source) { var converted = new VideoDbMovie { DigitalVideoFilePath = source.filename, DiskId = source.diskid, Id = source.id, ImgUrl = source.imgurl, Length = source.runtime.ToString(), Plot = source.plot, Rating = source.rating, SubTitle = source.subtitle, Title = source.title, OwnerId = source.owner_id, MediaTypeId = source.mediatype }; converted.Genres = _videoDbRepo.GetGenresForVideo(source.id).ToList(); if (source.owner_id == _options.DeletedOwnerId && _options.IsDeletedOwnerVirtual) { converted.Owner = "Video has been marked as deleted (no owner)."; } else { converted.Owner = _videoDbRepo.GetUserName(source.owner_id); } converted.MediaType = _videoDbRepo.GetMediaType(source.mediatype); return(converted); }
public void InsertOrUpdateVideoDataTest() { var video = new videodb_videodata(); video.title = "TestVideo"; // plot was cut after 256 items, see https://github.com/viper3400/VideoDb/issues/1 var plotBuilder = new StringBuilder(); plotBuilder.Append("Lorem ipsum dolor sit amet, causae honestatis his eu. Justo quaeque gubergren at per, probo brute nihil vis no."); plotBuilder.Append("His id salutandi consectetuer. In qualisque incorrupte vis, iudico aliquip mei et, ei adolescens voluptaria duo. "); plotBuilder.Append("Atqui populo singulis cum at. In causae labores vivendo sea. In brute oporteat appellantur sed."); plotBuilder.Append("Cu odio error laboramus his, percipit iracundia argumentum eam te, ea tamquam utroque constituto mei. "); plotBuilder.Append("Odio albucius elaboraret ei est. Iudico possim nam ne, cu iusto efficiantur vix. "); plotBuilder.Append("Te eum simul albucius conclusionemque, et cum nulla eruditi intellegam. Impetus singulis no mel."); plotBuilder.Append("Usu quidam accumsan concludaturque an, pri dico inimicus."); video.plot = plotBuilder.ToString();; video.owner_id = 3; IVideoDbRepository _videoDbRepository = new VideoDbRepository(VideoDbContextFactory.Create(connectionString)); var id = _videoDbRepository.InsertOrUpdateVideo(video); Assert.True(id != 0); var actual = _videoDbRepository.GetVideoDataById(id); Assert.Equal("TestVideo", actual.title); Assert.Equal(plotBuilder.ToString(), actual.plot); Assert.Equal(3, actual.owner_id); video.title = "TestVideo (Updated)"; var updatedId = _videoDbRepository.InsertOrUpdateVideo(video); Assert.Equal(id, updatedId); Assert.Equal("TestVideo (Updated)", actual.title); Assert.Equal(plotBuilder.ToString(), actual.plot); Assert.Equal(3, actual.owner_id); var deleted = _videoDbRepository.DeleteVideo(updatedId); Assert.True(deleted); var deletedVideo = _videoDbRepository.GetVideoDataById(updatedId); Assert.Null(deletedVideo); }
/// <summary> /// Creates a new record if the id of the given object is 0. /// Otherwise the record with the given id will be updated. /// </summary> /// <param name="Video"></param> /// <returns>Returns the id of the record.</returns> public int InsertOrUpdateVideo(videodb_videodata Video) { if (Video.id.Equals(0)) { // if id is 0 we will create a new record Video.created = DateTime.Now; Video.lastupdate = DateTime.Now; _dbContext.VideoData.Add(Video); _dbContext.SaveChanges(); } else { // in this case an existing record may be modified Video.lastupdate = DateTime.Now; _dbContext.Entry(Video).State = EntityState.Modified; _dbContext.SaveChanges(); } return(Video.id); }