mirror of
https://github.com/Radarr/Radarr.git
synced 2025-04-24 06:27:08 -04:00
fixup!
This commit is contained in:
parent
a936ab2504
commit
b6f94855eb
6 changed files with 80 additions and 54 deletions
|
@ -19,33 +19,38 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
c.Insert.IntoTable("Movies").Row(new
|
||||
{
|
||||
Monitored = true,
|
||||
MinimumAvailability = 4,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
MovieMetadataId = 1,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
});
|
||||
|
||||
c.Insert.IntoTable("MovieMetadata").Row(new
|
||||
{
|
||||
Title = "Title",
|
||||
CleanTitle = "CleanTitle",
|
||||
Status = 3,
|
||||
MinimumAvailability = 4,
|
||||
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
|
||||
Recommendations = new[] { 1 }.ToJson(),
|
||||
Runtime = 90,
|
||||
OriginalTitle = "Title",
|
||||
CleanOriginalTitle = "CleanTitle",
|
||||
OriginalLanguage = 1,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
TitleSlug = 123456,
|
||||
TmdbId = 132456,
|
||||
Added = DateTime.UtcNow,
|
||||
Collection = new { Name = "Some Collection", TmdbId = 11 }.ToJson(),
|
||||
LastInfoSync = DateTime.UtcNow,
|
||||
});
|
||||
});
|
||||
|
||||
var collections = db.Query<Collection207>("SELECT Id, Title, TmdbId, Monitored FROM Collections");
|
||||
var collections = db.Query<Collection208>("SELECT Id, Title, TmdbId, Monitored FROM Collections");
|
||||
|
||||
collections.Should().HaveCount(1);
|
||||
collections.First().TmdbId.Should().Be(11);
|
||||
collections.First().Title.Should().Be("Some Collection");
|
||||
collections.First().Monitored.Should().BeFalse();
|
||||
|
||||
var movies = db.Query<Movie207>("SELECT Id, CollectionId FROM Movies");
|
||||
var movies = db.Query<Movie208>("SELECT Id, CollectionId FROM MovieMetadata");
|
||||
|
||||
movies.Should().HaveCount(1);
|
||||
movies.First().CollectionId.Should().Be(collections.First().Id);
|
||||
|
@ -59,20 +64,25 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
c.Insert.IntoTable("Movies").Row(new
|
||||
{
|
||||
Monitored = true,
|
||||
MinimumAvailability = 4,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
MovieMetadataId = 1,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
});
|
||||
|
||||
c.Insert.IntoTable("MovieMetadata").Row(new
|
||||
{
|
||||
Title = "Title",
|
||||
CleanTitle = "CleanTitle",
|
||||
Status = 3,
|
||||
MinimumAvailability = 4,
|
||||
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
|
||||
Recommendations = new[] { 1 }.ToJson(),
|
||||
Runtime = 90,
|
||||
OriginalTitle = "Title",
|
||||
CleanOriginalTitle = "CleanTitle",
|
||||
OriginalLanguage = 1,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
TitleSlug = 123456,
|
||||
TmdbId = 132456,
|
||||
Added = DateTime.UtcNow,
|
||||
Collection = new { Name = "Some Collection", TmdbId = 11 }.ToJson(),
|
||||
LastInfoSync = DateTime.UtcNow,
|
||||
});
|
||||
|
@ -80,26 +90,31 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
c.Insert.IntoTable("Movies").Row(new
|
||||
{
|
||||
Monitored = true,
|
||||
Title = "Title 2",
|
||||
MinimumAvailability = 4,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
MovieMetadataId = 2,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
});
|
||||
|
||||
c.Insert.IntoTable("MovieMetadata").Row(new
|
||||
{
|
||||
Title = "Title2",
|
||||
CleanTitle = "CleanTitle2",
|
||||
Status = 3,
|
||||
MinimumAvailability = 4,
|
||||
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
|
||||
Recommendations = new[] { 1 }.ToJson(),
|
||||
Runtime = 90,
|
||||
OriginalTitle = "Title2",
|
||||
CleanOriginalTitle = "CleanTitle2",
|
||||
OriginalLanguage = 1,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
Path = string.Format("/Movies/{0}", "Title 2"),
|
||||
TitleSlug = 123457,
|
||||
TmdbId = 132457,
|
||||
Added = DateTime.UtcNow,
|
||||
Collection = new { Name = "Some Collection", TmdbId = 11 }.ToJson(),
|
||||
LastInfoSync = DateTime.UtcNow,
|
||||
});
|
||||
});
|
||||
|
||||
var collections = db.Query<Collection207>("SELECT Id, Title, TmdbId, Monitored FROM Collections");
|
||||
var collections = db.Query<Collection208>("SELECT Id, Title, TmdbId, Monitored FROM Collections");
|
||||
|
||||
collections.Should().HaveCount(1);
|
||||
collections.First().TmdbId.Should().Be(11);
|
||||
|
@ -131,7 +146,7 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
});
|
||||
});
|
||||
|
||||
var items = db.Query<ListDefinition207>("SELECT Id, Monitor FROM ImportLists");
|
||||
var items = db.Query<ListDefinition208>("SELECT Id, Monitor FROM ImportLists");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
items.First().Monitor.Should().Be(0);
|
||||
|
@ -161,7 +176,7 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
});
|
||||
});
|
||||
|
||||
var items = db.Query<ListDefinition207>("SELECT Id, Monitor FROM ImportLists");
|
||||
var items = db.Query<ListDefinition208>("SELECT Id, Monitor FROM ImportLists");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
items.First().Monitor.Should().Be(2);
|
||||
|
@ -182,7 +197,7 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
ShouldMonitor = false,
|
||||
Name = "IMDB List",
|
||||
Implementation = "TMDbCollectionImport",
|
||||
Settings = new TmdbCollectionListSettings206
|
||||
Settings = new TmdbCollectionListSettings207
|
||||
{
|
||||
CollectionId = "11"
|
||||
}.ToJson(),
|
||||
|
@ -190,7 +205,7 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
});
|
||||
});
|
||||
|
||||
var items = db.Query<ListDefinition207>("SELECT Id, Monitor FROM ImportLists");
|
||||
var items = db.Query<ListDefinition208>("SELECT Id, Monitor FROM ImportLists");
|
||||
|
||||
items.Should().HaveCount(0);
|
||||
}
|
||||
|
@ -203,20 +218,25 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
c.Insert.IntoTable("Movies").Row(new
|
||||
{
|
||||
Monitored = true,
|
||||
MinimumAvailability = 4,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
MovieMetadataId = 1,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
});
|
||||
|
||||
c.Insert.IntoTable("MovieMetadata").Row(new
|
||||
{
|
||||
Title = "Title",
|
||||
CleanTitle = "CleanTitle",
|
||||
Status = 3,
|
||||
MinimumAvailability = 4,
|
||||
Images = new[] { new { CoverType = "Poster" } }.ToJson(),
|
||||
Recommendations = new[] { 1 }.ToJson(),
|
||||
Runtime = 90,
|
||||
OriginalTitle = "Title",
|
||||
CleanOriginalTitle = "CleanTitle",
|
||||
OriginalLanguage = 1,
|
||||
ProfileId = 1,
|
||||
MovieFileId = 0,
|
||||
Path = string.Format("/Movies/{0}", "Title"),
|
||||
TitleSlug = 123456,
|
||||
TmdbId = 132456,
|
||||
Added = DateTime.UtcNow,
|
||||
Collection = new { Name = "Some Collection", TmdbId = 11 }.ToJson(),
|
||||
LastInfoSync = DateTime.UtcNow,
|
||||
});
|
||||
|
@ -231,7 +251,7 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
ShouldMonitor = false,
|
||||
Name = "IMDB List",
|
||||
Implementation = "TMDbCollectionImport",
|
||||
Settings = new TmdbCollectionListSettings206
|
||||
Settings = new TmdbCollectionListSettings207
|
||||
{
|
||||
CollectionId = "11"
|
||||
}.ToJson(),
|
||||
|
@ -239,14 +259,14 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
});
|
||||
});
|
||||
|
||||
var items = db.Query<Collection207>("SELECT Id, Monitored FROM Collections");
|
||||
var items = db.Query<Collection208>("SELECT Id, Monitored FROM Collections");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
items.First().Monitored.Should().BeTrue();
|
||||
}
|
||||
}
|
||||
|
||||
public class Collection207
|
||||
public class Collection208
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int TmdbId { get; set; }
|
||||
|
@ -254,19 +274,19 @@ namespace NzbDrone.Core.Test.Datastore.Migration
|
|||
public bool Monitored { get; set; }
|
||||
}
|
||||
|
||||
public class Movie207
|
||||
public class Movie208
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int CollectionId { get; set; }
|
||||
}
|
||||
|
||||
public class ListDefinition207
|
||||
public class ListDefinition208
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public int Monitor { get; set; }
|
||||
}
|
||||
|
||||
public class TmdbCollectionListSettings206
|
||||
public class TmdbCollectionListSettings207
|
||||
{
|
||||
public string CollectionId { get; set; }
|
||||
}
|
||||
|
|
|
@ -30,9 +30,9 @@ namespace NzbDrone.Core.Datastore.Migration
|
|||
.WithColumn("Monitored").AsBoolean().WithDefaultValue(false)
|
||||
.WithColumn("LastInfoSync").AsDateTime().Nullable()
|
||||
.WithColumn("Added").AsDateTime().Nullable()
|
||||
.WithColumn("Movies").AsString().WithDefaultValue("[]");
|
||||
.WithColumn("MovieTmdbIds").AsString().WithDefaultValue("[]");
|
||||
|
||||
Alter.Table("Movies").AddColumn("CollectionId").AsInt32().Nullable();
|
||||
Alter.Table("MovieMetadata").AddColumn("CollectionId").AsInt32().Nullable();
|
||||
Alter.Table("ImportLists").AddColumn("Monitor").AsInt32().Nullable();
|
||||
|
||||
Execute.WithConnection(MigrateCollections);
|
||||
|
@ -44,7 +44,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
|||
|
||||
Delete.Column("ShouldMonitor").FromTable("ImportLists");
|
||||
Delete.FromTable("ImportLists").Row(new { Implementation = "TMDbCollectionImport" });
|
||||
Delete.Column("Collection").FromTable("Movies");
|
||||
Delete.Column("Collection").FromTable("MovieMetadata");
|
||||
}
|
||||
|
||||
private void MigrateCollections(IDbConnection conn, IDbTransaction tran)
|
||||
|
@ -68,7 +68,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
|||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tran;
|
||||
cmd.CommandText = "SELECT \"Collection\", \"ProfileId\", \"MinimumAvailability\", \"Path\" FROM \"Movies\" WHERE \"Collection\" IS NOT NULL GROUP BY \"Collection\"";
|
||||
cmd.CommandText = "SELECT \"Collection\", \"ProfileId\", \"MinimumAvailability\", \"Path\" FROM \"Movies\" JOIN \"MovieMetadata\" ON \"Movies\".\"MovieMetadataId\" = \"MovieMetadata\".\"Id\" WHERE \"Collection\" IS NOT NULL GROUP BY \"Collection\"";
|
||||
|
||||
var addedCollections = new List<int>();
|
||||
var added = DateTime.UtcNow;
|
||||
|
@ -212,7 +212,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
|||
using (var cmd = conn.CreateCommand())
|
||||
{
|
||||
cmd.Transaction = tran;
|
||||
cmd.CommandText = "SELECT \"Id\", \"Collection\" FROM \"Movies\" WHERE \"Collection\" IS NOT NULL";
|
||||
cmd.CommandText = "SELECT \"Id\", \"Collection\" FROM \"MovieMetadata\" WHERE \"Collection\" IS NOT NULL";
|
||||
|
||||
using (var reader = cmd.ExecuteReader())
|
||||
{
|
||||
|
@ -227,7 +227,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
|||
using (var updateCmd = conn.CreateCommand())
|
||||
{
|
||||
updateCmd.Transaction = tran;
|
||||
updateCmd.CommandText = @"UPDATE ""Movies"" SET ""CollectionId"" = ? WHERE ""Id"" = ?";
|
||||
updateCmd.CommandText = @"UPDATE ""MovieMetadata"" SET ""CollectionId"" = ? WHERE ""Id"" = ?";
|
||||
updateCmd.AddParameter(collectionId);
|
||||
updateCmd.AddParameter(id);
|
||||
|
||||
|
|
|
@ -510,7 +510,8 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
|
|||
CleanTitle = arg.Name.CleanMovieTitle(),
|
||||
SortTitle = Parser.Parser.NormalizeTitle(arg.Name),
|
||||
Images = arg.Images?.Select(MapImage).ToList() ?? new List<MediaCover.MediaCover>(),
|
||||
MovieMetadata = arg.Parts?.Select(x => MapMovie(x)).ToList() ?? new List<MovieMetadata>()
|
||||
MovieTmdbIds = arg.Parts?.Select(x => x.TmdbId).ToList() ?? new List<int>(),
|
||||
Movies = arg.Parts?.Select(x => MapMovie(x)).ToList() ?? new List<MovieMetadata>()
|
||||
};
|
||||
|
||||
return collection;
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace NzbDrone.Core.Movies.Collections
|
|||
public MovieCollection()
|
||||
{
|
||||
Images = new List<MediaCover.MediaCover>();
|
||||
MovieMetadataIds = new List<int>();
|
||||
MovieTmdbIds = new List<int>();
|
||||
}
|
||||
|
||||
public string Title { get; set; }
|
||||
|
@ -25,8 +25,8 @@ namespace NzbDrone.Core.Movies.Collections
|
|||
public DateTime? LastInfoSync { get; set; }
|
||||
public List<MediaCover.MediaCover> Images { get; set; }
|
||||
public DateTime Added { get; set; }
|
||||
public List<int> MovieMetadataIds { get; set; }
|
||||
public List<MovieMetadata> MovieMetadata { get; set; }
|
||||
public List<int> MovieTmdbIds { get; set; }
|
||||
public List<MovieMetadata> Movies { get; set; }
|
||||
|
||||
public void ApplyChanges(MovieCollection otherCollection)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Equ;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Languages;
|
||||
using NzbDrone.Core.Movies.AlternativeTitles;
|
||||
using NzbDrone.Core.Movies.Collections;
|
||||
|
|
|
@ -17,6 +17,7 @@ namespace NzbDrone.Core.Movies
|
|||
private readonly IProvideMovieInfo _movieInfo;
|
||||
private readonly IMovieCollectionService _collectionService;
|
||||
private readonly IMovieService _movieService;
|
||||
private readonly IMovieMetadataService _movieMetadataService;
|
||||
private readonly IAddMovieService _addMovieService;
|
||||
|
||||
private readonly Logger _logger;
|
||||
|
@ -24,12 +25,14 @@ namespace NzbDrone.Core.Movies
|
|||
public RefreshCollectionService(IProvideMovieInfo movieInfo,
|
||||
IMovieCollectionService collectionService,
|
||||
IMovieService movieService,
|
||||
IMovieMetadataService movieMetadataService,
|
||||
IAddMovieService addMovieService,
|
||||
Logger logger)
|
||||
{
|
||||
_movieInfo = movieInfo;
|
||||
_collectionService = collectionService;
|
||||
_movieService = movieService;
|
||||
_movieMetadataService = movieMetadataService;
|
||||
_addMovieService = addMovieService;
|
||||
_logger = logger;
|
||||
}
|
||||
|
@ -62,7 +65,10 @@ namespace NzbDrone.Core.Movies
|
|||
collection.SortTitle = collectionInfo.SortTitle;
|
||||
collection.LastInfoSync = DateTime.UtcNow;
|
||||
collection.Images = collectionInfo.Images;
|
||||
collection.MovieMetadataIds = collectionInfo.MovieMetadataIds;
|
||||
collection.MovieTmdbIds = collectionInfo.MovieTmdbIds;
|
||||
|
||||
collectionInfo.Movies.ForEach(x => x.CollectionId = collection.Id);
|
||||
_movieMetadataService.UpsertMany(collectionInfo.Movies);
|
||||
|
||||
_logger.Debug("Finished collection refresh for {0}", collection.Title);
|
||||
|
||||
|
@ -94,15 +100,13 @@ namespace NzbDrone.Core.Movies
|
|||
{
|
||||
var existingMovies = _movieService.AllMovieTmdbIds();
|
||||
|
||||
_addMovieService.AddMovies(collection.MovieMetadata.Where(m => !existingMovies.Contains(m.TmdbId)).Select(m => new Movie
|
||||
_addMovieService.AddMovies(collection.MovieTmdbIds.Where(m => !existingMovies.Contains(m)).Select(m => new Movie
|
||||
{
|
||||
TmdbId = m.TmdbId,
|
||||
Title = m.Title,
|
||||
TmdbId = m,
|
||||
ProfileId = collection.QualityProfileId,
|
||||
RootFolderPath = collection.RootFolderPath,
|
||||
MinimumAvailability = collection.MinimumAvailability,
|
||||
Monitored = true,
|
||||
Year = m.Year
|
||||
Monitored = true
|
||||
}).ToList());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue