Database redesign (#31)
* starting database redesign * set season and episode numbers * use datetimes in db (utc); update movie metadata * get movie cards from new table * copy show/episode metadata * remove old movie metadata type * rename new movie metadata type * code cleanup * start to remove old television classes * remove old television tables from database * fix playout building * fix collection views * fix show/season views * clean up movie metadata table * fix scanner tests * add libraries ui * code cleanup * fix movie scanning/metadata * add library scan button to ui * delete library path from ui * temp disable movie scanning * remove orphan media items and prevent duplicate paths * attach artwork to metadata * fix split show/season display * fix television artwork * store year distinct from release date * fix collections ui * code cleanup * add library paths from ui * fix adding to collections from ui * fix schedule items loading * schedule editing works again * remove some todos * more cleanup * fix unit tests * fix episode sorting * fix deleting show library paths * remove unused class * fix playout list in ui * fix log viewer * start to use version/file instead of statistics * clean up old columns * fix playout display (time zone) * fix playback * fix channel guide time zone * cascade more deletes * fix compiler warnings * fix adding new seasons * use artwork for channel logo * clean cache folder on startup (move channel logos, delete everything else) * log database migration * update homepage docs for libraries * fix adding new channel with logo * fix episode numbers in epg
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class EpisodeConfiguration : IEntityTypeConfiguration<Episode>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<Episode> builder)
|
||||
{
|
||||
builder.ToTable("Episode");
|
||||
|
||||
builder.HasMany(e => e.EpisodeMetadata)
|
||||
.WithOne(m => m.Episode)
|
||||
.HasForeignKey(m => m.EpisodeId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
builder.HasMany(e => e.MediaVersions)
|
||||
.WithOne()
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class MediaFileConfiguration : IEntityTypeConfiguration<MediaFile>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<MediaFile> builder)
|
||||
{
|
||||
builder.ToTable("MediaFile");
|
||||
|
||||
builder.HasIndex(f => f.Path)
|
||||
.IsUnique();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class MediaItemConfiguration : IEntityTypeConfiguration<MediaItem>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<MediaItem> builder) => builder.ToTable("MediaItem");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class MediaVersionConfiguration : IEntityTypeConfiguration<MediaVersion>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<MediaVersion> builder)
|
||||
{
|
||||
builder.ToTable("MediaVersion");
|
||||
|
||||
builder.HasMany(v => v.MediaFiles)
|
||||
.WithOne(f => f.MediaVersion)
|
||||
.HasForeignKey(f => f.MediaVersionId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class MovieConfiguration : IEntityTypeConfiguration<Movie>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<Movie> builder)
|
||||
{
|
||||
builder.ToTable("Movie");
|
||||
|
||||
builder.HasMany(m => m.MovieMetadata)
|
||||
.WithOne(m => m.Movie)
|
||||
.HasForeignKey(m => m.MovieId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
builder.HasMany(m => m.MediaVersions)
|
||||
.WithOne()
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class PlexMovieMediaItemConfiguration : IEntityTypeConfiguration<PlexMovie>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<PlexMovie> builder) => builder.ToTable("PlexMovie");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class SeasonConfiguration : IEntityTypeConfiguration<Season>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<Season> builder)
|
||||
{
|
||||
builder.ToTable("Season");
|
||||
|
||||
builder.HasMany(s => s.Episodes)
|
||||
.WithOne(e => e.Season)
|
||||
.HasForeignKey(e => e.SeasonId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
builder.HasMany(s => s.SeasonMetadata)
|
||||
.WithOne(s => s.Season)
|
||||
.HasForeignKey(s => s.SeasonId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using ErsatzTV.Core.Domain;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Metadata.Builders;
|
||||
|
||||
namespace ErsatzTV.Infrastructure.Data.Configurations
|
||||
{
|
||||
public class ShowConfiguration : IEntityTypeConfiguration<Show>
|
||||
{
|
||||
public void Configure(EntityTypeBuilder<Show> builder)
|
||||
{
|
||||
builder.ToTable("Show");
|
||||
|
||||
builder.HasMany(s => s.Seasons)
|
||||
.WithOne(s => s.Show)
|
||||
.HasForeignKey(s => s.ShowId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
|
||||
builder.HasMany(s => s.ShowMetadata)
|
||||
.WithOne(s => s.Show)
|
||||
.HasForeignKey(s => s.ShowId)
|
||||
.OnDelete(DeleteBehavior.Cascade);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user