Changed the db to represent compilations. By default a track will have a single albumId and a list of artistIds. If the album is a compilation, we will use Various Artists to align with Plex, iTunes, and Amazon.

pull/4/head
Joseph Milazzo 8 years ago
parent 9ce71ff698
commit ce62cff57d

@ -30,12 +30,11 @@ namespace NzbDrone.Core.Datastore.Migration
; ;
Create.TableForModel("Albums") Create.TableForModel("Albums")
.WithColumn("AlbumId").AsInt32() // Does this map to collectionId? .WithColumn("AlbumId").AsInt32()
.WithColumn("CompilationId").AsInt32() .WithColumn("ArtistId").AsInt32()
.WithColumn("Compilation").AsBoolean()
.WithColumn("Title").AsString() .WithColumn("Title").AsString()
.WithColumn("Year").AsInt32() .WithColumn("Year").AsInt32()
.WithColumn("Image").AsInt32() // Is this needed? .WithColumn("Image").AsInt32()
.WithColumn("TrackCount").AsInt32() .WithColumn("TrackCount").AsInt32()
.WithColumn("DiscCount").AsInt32() .WithColumn("DiscCount").AsInt32()
.WithColumn("Monitored").AsBoolean(); .WithColumn("Monitored").AsBoolean();
@ -43,8 +42,7 @@ namespace NzbDrone.Core.Datastore.Migration
Create.TableForModel("Tracks") Create.TableForModel("Tracks")
.WithColumn("ItunesTrackId").AsInt32().Unique() .WithColumn("ItunesTrackId").AsInt32().Unique()
.WithColumn("AlbumId").AsInt32() .WithColumn("AlbumId").AsInt32()
.WithColumn("CompilationId").AsInt32().Nullable() .WithColumn("ArtistsId").AsString().Nullable()
.WithColumn("Compilation").AsBoolean().WithDefaultValue("False")
.WithColumn("TrackNumber").AsInt32() .WithColumn("TrackNumber").AsInt32()
.WithColumn("Title").AsString().Nullable() .WithColumn("Title").AsString().Nullable()
.WithColumn("Ignored").AsBoolean().Nullable() .WithColumn("Ignored").AsBoolean().Nullable()
@ -53,10 +51,7 @@ namespace NzbDrone.Core.Datastore.Migration
.WithColumn("TrackCensoredName").AsString().Nullable() .WithColumn("TrackCensoredName").AsString().Nullable()
.WithColumn("TrackFileId").AsInt32().Nullable() .WithColumn("TrackFileId").AsInt32().Nullable()
.WithColumn("ReleaseDate").AsDateTime().Nullable(); .WithColumn("ReleaseDate").AsDateTime().Nullable();
//.WithColumn("AbsoluteEpisodeNumber").AsInt32().Nullable()
//.WithColumn("SceneAbsoluteEpisodeNumber").AsInt32().Nullable()
//.WithColumn("SceneSeasonNumber").AsInt32().Nullable()
//.WithColumn("SceneEpisodeNumber").AsInt32().Nullable();
Create.TableForModel("TrackFiles") Create.TableForModel("TrackFiles")
.WithColumn("ArtistId").AsInt32() .WithColumn("ArtistId").AsInt32()
@ -66,9 +61,6 @@ namespace NzbDrone.Core.Datastore.Migration
.WithColumn("DateAdded").AsDateTime() .WithColumn("DateAdded").AsDateTime()
.WithColumn("AlbumId").AsInt32(); // How does this impact stand alone tracks? .WithColumn("AlbumId").AsInt32(); // How does this impact stand alone tracks?
Create.TableForModel("Compilation")
.WithColumn("CompilationId").AsInt32().Unique()
.WithColumn("ArtistId").AsString().Nullable();
} }
} }

@ -103,17 +103,14 @@ namespace NzbDrone.Core.Datastore
.For("Tracks") .For("Tracks")
.LazyLoad(condition: parent => parent.Id > 0, .LazyLoad(condition: parent => parent.Id > 0,
query: (db, parent) => db.Query<Track>().Where(c => c.ItunesTrackId == parent.Id).ToList()) query: (db, parent) => db.Query<Track>().Where(c => c.ItunesTrackId == parent.Id).ToList())
.HasOne(file => file.Artist, file => file.AlbumId); .HasOne(file => file.Artist, file => file.AlbumId);
Mapper.Entity<Track>().RegisterModel("Tracks") Mapper.Entity<Track>().RegisterModel("Tracks")
//.Ignore(e => e.SeriesTitle) //.Ignore(e => e.SeriesTitle)
.Ignore(e => e.Album) .Ignore(e => e.Album)
.Ignore(e => e.HasFile) .Ignore(e => e.HasFile)
.Relationship() .Relationship()
.HasOne(track => track.TrackFile, track => track.TrackFileId); .HasOne(track => track.TrackFile, track => track.TrackFileId); // TODO: Check lazy load for artists
Mapper.Entity<Compilation>().RegisterModel("Compilation")
.Relationships.AutoMapICollectionOrComplexProperties(); //TODO: Figure out how to map this Table
Mapper.Entity<QualityDefinition>().RegisterModel("QualityDefinitions") Mapper.Entity<QualityDefinition>().RegisterModel("QualityDefinitions")
.Ignore(d => d.Weight); .Ignore(d => d.Weight);

@ -1,19 +0,0 @@
using NzbDrone.Core.Datastore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NzbDrone.Core.Music
{
public class Compilation : ModelBase
{
public Compilation()
{
}
public int CompilationId { get; set; }
public LazyList<Artist> Artists { get; set; }
}
}

@ -19,6 +19,7 @@ namespace NzbDrone.Core.Music
public int ItunesTrackId { get; set; } public int ItunesTrackId { get; set; }
public int AlbumId { get; set; } public int AlbumId { get; set; }
public LazyLoaded<Artist> ArtistsId { get; set; }
public int CompilationId { get; set; } public int CompilationId { get; set; }
public bool Compilation { get; set; } public bool Compilation { get; set; }
public int TrackNumber { get; set; } public int TrackNumber { get; set; }

Loading…
Cancel
Save