Browse Source

use datetimes in db (utc); update movie metadata

pull/31/head
Jason Dove 6 years ago
parent
commit
93194eb215
  1. 4
      ErsatzTV.Application/MediaSources/Commands/ScanLocalLibraryHandler.cs
  2. 4
      ErsatzTV.Application/Plex/Commands/SynchronizePlexLibraryByIdHandler.cs
  3. 4
      ErsatzTV.Core.Tests/FFmpeg/FFmpegPlaybackSettingsServiceTests.cs
  4. 84
      ErsatzTV.Core.Tests/Scheduling/PlayoutBuilderTests.cs
  5. 2
      ErsatzTV.Core/Domain/Library/Library.cs
  6. 6
      ErsatzTV.Core/Domain/Metadata/Metadata.cs
  7. 4
      ErsatzTV.Core/Domain/Metadata/MetadataKind.cs
  8. 4
      ErsatzTV.Core/Domain/PlayoutAnchor.cs
  9. 7
      ErsatzTV.Core/Domain/PlayoutItem.cs
  10. 8
      ErsatzTV.Core/Scheduling/PlayoutBuilder.cs
  11. 4
      ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs
  12. 2
      ErsatzTV.Infrastructure/Data/Repositories/PlayoutRepository.cs
  13. 1874
      ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.Designer.cs
  14. 23
      ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.cs
  15. 26
      ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs
  16. 3
      ErsatzTV/Services/SchedulerService.cs

4
ErsatzTV.Application/MediaSources/Commands/ScanLocalLibraryHandler.cs

@ -58,7 +58,7 @@ namespace ErsatzTV.Application.MediaSources.Commands @@ -58,7 +58,7 @@ namespace ErsatzTV.Application.MediaSources.Commands
{
(LocalLibrary localLibrary, string ffprobePath, bool forceScan) = parameters;
DateTimeOffset lastScan = localLibrary.LastScan ?? DateTime.MinValue;
var lastScan = new DateTimeOffset(localLibrary.LastScan ?? DateTime.MinValue, TimeSpan.Zero);
if (forceScan || lastScan < DateTimeOffset.Now - TimeSpan.FromHours(6))
{
foreach (LibraryPath libraryPath in localLibrary.Paths)
@ -74,7 +74,7 @@ namespace ErsatzTV.Application.MediaSources.Commands @@ -74,7 +74,7 @@ namespace ErsatzTV.Application.MediaSources.Commands
}
}
localLibrary.LastScan = DateTimeOffset.Now;
localLibrary.LastScan = DateTime.UtcNow;
await _libraryRepository.UpdateLastScan(localLibrary);
}
else

4
ErsatzTV.Application/Plex/Commands/SynchronizePlexLibraryByIdHandler.cs

@ -55,7 +55,7 @@ namespace ErsatzTV.Application.Plex.Commands @@ -55,7 +55,7 @@ namespace ErsatzTV.Application.Plex.Commands
private async Task<Unit> Synchronize(RequestParameters parameters)
{
DateTimeOffset lastScan = parameters.Library.LastScan ?? DateTime.MinValue;
var lastScan = new DateTimeOffset(parameters.Library.LastScan ?? DateTime.MinValue, TimeSpan.Zero);
if (parameters.ForceScan || lastScan < DateTimeOffset.Now - TimeSpan.FromHours(6))
{
switch (parameters.Library.MediaKind)
@ -72,7 +72,7 @@ namespace ErsatzTV.Application.Plex.Commands @@ -72,7 +72,7 @@ namespace ErsatzTV.Application.Plex.Commands
break;
}
parameters.Library.LastScan = DateTimeOffset.Now;
parameters.Library.LastScan = DateTime.UtcNow;
await _mediaSourceRepository.Update(parameters.Library);
}
else

4
ErsatzTV.Core.Tests/FFmpeg/FFmpegPlaybackSettingsServiceTests.cs

@ -119,7 +119,7 @@ namespace ErsatzTV.Core.Tests.FFmpeg @@ -119,7 +119,7 @@ namespace ErsatzTV.Core.Tests.FFmpeg
FFmpegProfile ffmpegProfile = TestProfile();
PlayoutItem playoutItem = EmptyPlayoutItem();
playoutItem.Start = now;
playoutItem.Start = now.UtcDateTime;
FFmpegPlaybackSettings actual = _calculator.CalculateSettings(
StreamingMode.TransportStream,
@ -138,7 +138,7 @@ namespace ErsatzTV.Core.Tests.FFmpeg @@ -138,7 +138,7 @@ namespace ErsatzTV.Core.Tests.FFmpeg
FFmpegProfile ffmpegProfile = TestProfile();
PlayoutItem playoutItem = EmptyPlayoutItem();
playoutItem.Start = now;
playoutItem.Start = now.UtcDateTime;
FFmpegPlaybackSettings actual = _calculator.CalculateSettings(
StreamingMode.HttpLiveStreaming,

84
ErsatzTV.Core.Tests/Scheduling/PlayoutBuilderTests.cs

@ -52,8 +52,8 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -52,8 +52,8 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result = await builder.BuildPlayoutItems(playout, start, finish);
result.Items.Count.Should().Be(1);
result.Items.Head().Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items.Head().Finish.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result.Items.Head().StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items.Head().FinishOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
}
[Test]
@ -71,9 +71,9 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -71,9 +71,9 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result = await builder.BuildPlayoutItems(playout, start, finish);
result.Items.Count.Should().Be(2);
result.Items[0].Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result.Items[1].Finish.TimeOfDay.Should().Be(TimeSpan.FromHours(12));
result.Items[0].StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result.Items[1].FinishOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(12));
}
[Test]
@ -92,13 +92,13 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -92,13 +92,13 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result = await builder.BuildPlayoutItems(playout, start, finish);
result.Items.Count.Should().Be(4);
result.Items[0].Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].MediaItemId.Should().Be(1);
result.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].MediaItemId.Should().Be(2);
result.Items[2].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].MediaItemId.Should().Be(1);
result.Items[3].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(3));
result.Items[3].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(3));
result.Items[3].MediaItemId.Should().Be(2);
}
@ -120,7 +120,7 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -120,7 +120,7 @@ namespace ErsatzTV.Core.Tests.Scheduling
result.Items.Count.Should().Be(1);
result.Items.Head().MediaItemId.Should().Be(1);
result.Anchor.NextStart.Should().Be(DateTime.Today.AddHours(6));
result.Anchor.NextStartOffset.Should().Be(DateTime.Today.AddHours(6));
result.ProgramScheduleAnchors.Count.Should().Be(1);
result.ProgramScheduleAnchors.Head().EnumeratorState.Index.Should().Be(1);
@ -131,10 +131,10 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -131,10 +131,10 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result2 = await builder.BuildPlayoutItems(playout, start2, finish2);
result2.Items.Count.Should().Be(2);
result2.Items.Last().Start.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result2.Items.Last().StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result2.Items.Last().MediaItemId.Should().Be(2);
result2.Anchor.NextStart.Should().Be(DateTime.Today.AddHours(12));
result2.Anchor.NextStartOffset.Should().Be(DateTime.Today.AddHours(12));
result2.ProgramScheduleAnchors.Count.Should().Be(1);
result2.ProgramScheduleAnchors.Head().EnumeratorState.Index.Should().Be(0);
}
@ -157,7 +157,7 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -157,7 +157,7 @@ namespace ErsatzTV.Core.Tests.Scheduling
result.Items.Count.Should().Be(1);
result.Items.Head().MediaItemId.Should().Be(1);
result.Anchor.NextStart.Should().Be(DateTime.Today.AddHours(6));
result.Anchor.NextStartOffset.Should().Be(DateTime.Today.AddHours(6));
result.ProgramScheduleAnchors.Count.Should().Be(1);
result.ProgramScheduleAnchors.Head().EnumeratorState.Index.Should().Be(1);
@ -167,12 +167,12 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -167,12 +167,12 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result2 = await builder.BuildPlayoutItems(playout, start2, finish2);
result2.Items.Count.Should().Be(3);
result2.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result2.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result2.Items[1].MediaItemId.Should().Be(2);
result2.Items[2].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(12));
result2.Items[2].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(12));
result2.Items[2].MediaItemId.Should().Be(1);
result2.Anchor.NextStart.Should().Be(DateTime.Today.AddHours(18));
result2.Anchor.NextStartOffset.Should().Be(DateTime.Today.AddHours(18));
result2.ProgramScheduleAnchors.Count.Should().Be(1);
result2.ProgramScheduleAnchors.Head().EnumeratorState.Index.Should().Be(1);
}
@ -197,7 +197,7 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -197,7 +197,7 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result = await builder.BuildPlayoutItems(playout, start, finish);
result.Items.Count.Should().Be(6);
result.Anchor.NextStart.Should().Be(DateTime.Today.AddHours(6));
result.Anchor.NextStartOffset.Should().Be(DateTime.Today.AddHours(6));
result.ProgramScheduleAnchors.Count.Should().Be(1);
result.ProgramScheduleAnchors.Head().EnumeratorState.Index.Should().Be(0);
@ -210,7 +210,7 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -210,7 +210,7 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result2 = await builder.BuildPlayoutItems(playout, start2, finish2, true);
result2.Items.Count.Should().Be(6);
result2.Anchor.NextStart.Should().Be(DateTime.Today.AddHours(6));
result2.Anchor.NextStartOffset.Should().Be(DateTime.Today.AddHours(6));
result2.ProgramScheduleAnchors.Count.Should().Be(1);
result2.ProgramScheduleAnchors.Head().EnumeratorState.Index.Should().Be(0);
@ -318,15 +318,15 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -318,15 +318,15 @@ namespace ErsatzTV.Core.Tests.Scheduling
Playout result = await builder.BuildPlayoutItems(playout, start, finish);
result.Items.Count.Should().Be(5);
result.Items[0].Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].MediaItemId.Should().Be(1);
result.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].MediaItemId.Should().Be(2);
result.Items[2].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].MediaItemId.Should().Be(1);
result.Items[3].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(3));
result.Items[3].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(3));
result.Items[3].MediaItemId.Should().Be(3);
result.Items[4].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(5));
result.Items[4].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(5));
result.Items[4].MediaItemId.Should().Be(2);
}
@ -399,19 +399,19 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -399,19 +399,19 @@ namespace ErsatzTV.Core.Tests.Scheduling
result.Items.Count.Should().Be(6);
result.Items[0].Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].MediaItemId.Should().Be(1);
result.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].MediaItemId.Should().Be(2);
result.Items[2].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].MediaItemId.Should().Be(1);
result.Items[3].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(3));
result.Items[3].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(3));
result.Items[3].MediaItemId.Should().Be(3);
result.Items[4].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(5));
result.Items[4].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(5));
result.Items[4].MediaItemId.Should().Be(4);
result.Items[5].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result.Items[5].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(6));
result.Items[5].MediaItemId.Should().Be(2);
}
@ -485,22 +485,22 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -485,22 +485,22 @@ namespace ErsatzTV.Core.Tests.Scheduling
result.Items.Count.Should().Be(7);
result.Items[0].Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].MediaItemId.Should().Be(1);
result.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].MediaItemId.Should().Be(2);
result.Items[2].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].MediaItemId.Should().Be(3);
result.Items[3].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2.75));
result.Items[3].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2.75));
result.Items[3].MediaItemId.Should().Be(1);
result.Items[4].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(3.75));
result.Items[4].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(3.75));
result.Items[4].MediaItemId.Should().Be(2);
result.Items[5].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(4.75));
result.Items[5].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(4.75));
result.Items[5].MediaItemId.Should().Be(1);
result.Items[6].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(5.75));
result.Items[6].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(5.75));
result.Items[6].MediaItemId.Should().Be(2);
}
@ -575,20 +575,20 @@ namespace ErsatzTV.Core.Tests.Scheduling @@ -575,20 +575,20 @@ namespace ErsatzTV.Core.Tests.Scheduling
result.Items.Count.Should().Be(6);
result.Items[0].Start.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].StartOffset.TimeOfDay.Should().Be(TimeSpan.Zero);
result.Items[0].MediaItemId.Should().Be(1);
result.Items[1].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(1));
result.Items[1].MediaItemId.Should().Be(2);
result.Items[2].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2));
result.Items[2].MediaItemId.Should().Be(3);
result.Items[3].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(2.75));
result.Items[3].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(2.75));
result.Items[3].MediaItemId.Should().Be(1);
result.Items[4].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(3.75));
result.Items[4].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(3.75));
result.Items[4].MediaItemId.Should().Be(2);
result.Items[5].Start.TimeOfDay.Should().Be(TimeSpan.FromHours(4.75));
result.Items[5].StartOffset.TimeOfDay.Should().Be(TimeSpan.FromHours(4.75));
result.Items[5].MediaItemId.Should().Be(4);
}

2
ErsatzTV.Core/Domain/Library/Library.cs

@ -8,7 +8,7 @@ namespace ErsatzTV.Core.Domain @@ -8,7 +8,7 @@ namespace ErsatzTV.Core.Domain
public int Id { get; set; }
public string Name { get; set; }
public LibraryMediaKind MediaKind { get; set; }
public DateTimeOffset? LastScan { get; set; }
public DateTime? LastScan { get; set; }
public int MediaSourceId { get; set; }
public MediaSource MediaSource { get; set; }

6
ErsatzTV.Core/Domain/Metadata/Metadata.cs

@ -9,8 +9,8 @@ namespace ErsatzTV.Core.Domain @@ -9,8 +9,8 @@ namespace ErsatzTV.Core.Domain
public string Title { get; set; }
public string OriginalTitle { get; set; }
public string SortTitle { get; set; }
public DateTimeOffset? ReleaseDate { get; set; }
public DateTimeOffset DateAdded { get; set; }
public DateTimeOffset DateUpdated { get; set; }
public DateTime? ReleaseDate { get; set; }
public DateTime DateAdded { get; set; }
public DateTime DateUpdated { get; set; }
}
}

4
ErsatzTV.Core/Domain/Metadata/MetadataKind.cs

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
{
public enum MetadataKind
{
Fallback,
Sidecar
Fallback = 0,
Sidecar = 1
}
}

4
ErsatzTV.Core/Domain/PlayoutAnchor.cs

@ -8,6 +8,8 @@ namespace ErsatzTV.Core.Domain @@ -8,6 +8,8 @@ namespace ErsatzTV.Core.Domain
public ProgramScheduleItem NextScheduleItem { get; set; }
public DateTimeOffset NextStart { get; set; }
public DateTime NextStart { get; set; }
public DateTimeOffset NextStartOffset => new DateTimeOffset(NextStart, TimeSpan.Zero).ToLocalTime();
}
}

7
ErsatzTV.Core/Domain/PlayoutItem.cs

@ -7,9 +7,12 @@ namespace ErsatzTV.Core.Domain @@ -7,9 +7,12 @@ namespace ErsatzTV.Core.Domain
public int Id { get; set; }
public int MediaItemId { get; set; }
public MediaItem MediaItem { get; set; }
public DateTimeOffset Start { get; set; }
public DateTimeOffset Finish { get; set; }
public DateTime Start { get; set; }
public DateTime Finish { get; set; }
public int PlayoutId { get; set; }
public Playout Playout { get; set; }
public DateTimeOffset StartOffset => new DateTimeOffset(Start, TimeSpan.Zero).ToLocalTime();
public DateTimeOffset FinishOffset => new DateTimeOffset(Finish, TimeSpan.Zero).ToLocalTime();
}
}

8
ErsatzTV.Core/Scheduling/PlayoutBuilder.cs

@ -148,8 +148,8 @@ namespace ErsatzTV.Core.Scheduling @@ -148,8 +148,8 @@ namespace ErsatzTV.Core.Scheduling
var playoutItem = new PlayoutItem
{
MediaItemId = mediaItem.Id,
Start = itemStartTime,
Finish = itemStartTime + mediaItem.Statistics.Duration
Start = itemStartTime.UtcDateTime,
Finish = itemStartTime.UtcDateTime + mediaItem.Statistics.Duration
};
currentTime = itemStartTime + mediaItem.Statistics.Duration;
@ -250,7 +250,7 @@ namespace ErsatzTV.Core.Scheduling @@ -250,7 +250,7 @@ namespace ErsatzTV.Core.Scheduling
{
NextScheduleItem = nextScheduleItem,
NextScheduleItemId = nextScheduleItem.Id,
NextStart = GetStartTimeAfter(nextScheduleItem, currentTime)
NextStart = GetStartTimeAfter(nextScheduleItem, currentTime).UtcDateTime
};
// build program schedule anchors
@ -306,7 +306,7 @@ namespace ErsatzTV.Core.Scheduling @@ -306,7 +306,7 @@ namespace ErsatzTV.Core.Scheduling
}
TimeSpan startTime = item.StartTime.GetValueOrDefault();
DateTime result = start.Date + startTime;
DateTimeOffset result = start.Date + startTime;
// need to wrap to the next day if appropriate
return start.TimeOfDay > startTime ? result.AddDays(1) : result;
case StartType.Dynamic:

4
ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs

@ -63,8 +63,8 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -63,8 +63,8 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
public Task<List<Movie>> GetPagedMovies(int pageNumber, int pageSize) =>
_dbContext.Movies
.Include(s => s.Metadata)
.OrderBy(s => s.Metadata.SortTitle)
.Include(s => s.MovieMetadata)
.OrderBy(s => s.MovieMetadata.FirstOrDefault().SortTitle)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.AsNoTracking()

2
ErsatzTV.Infrastructure/Data/Repositories/PlayoutRepository.cs

@ -44,7 +44,7 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -44,7 +44,7 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
public async Task<Option<PlayoutItem>> GetPlayoutItem(int channelId, DateTimeOffset now)
{
var p1 = new SqliteParameter("channelId", channelId);
var p2 = new SqliteParameter("now", now);
var p2 = new SqliteParameter("now", now.UtcDateTime);
return await _dbContext.PlayoutItems
.FromSqlRaw(
"select i.* from playoutitems i inner join playouts p on i.playoutid = p.id where p.channelid = @channelId and i.start <= @now and i.finish > @now",

1874
ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.Designer.cs generated

File diff suppressed because it is too large Load Diff

23
ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.cs

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
namespace ErsatzTV.Infrastructure.Migrations
{
public partial class Update_MovieMetadata : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
var now = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFF");
migrationBuilder.Sql(
@$"INSERT INTO NewMovieMetadata (Outline, Plot, Tagline, MovieId, MetadataKind, Title, OriginalTitle, SortTitle, ReleaseDate, DateAdded, DateUpdated)
SELECT mm.Outline, mm.Plot, mm.Tagline, m.Id, mm.Source, mm.Title, null, mm.SortTitle, mm.Premiered, '{now}', mm.LastWriteTime
FROM MovieMetadata mm
INNER JOIN Movie m ON mm.MovieId = m.Id");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

26
ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs

@ -105,10 +105,10 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -105,10 +105,10 @@ namespace ErsatzTV.Infrastructure.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTimeOffset>("DateAdded")
b.Property<DateTime>("DateAdded")
.HasColumnType("TEXT");
b.Property<DateTimeOffset>("DateUpdated")
b.Property<DateTime>("DateUpdated")
.HasColumnType("TEXT");
b.Property<int>("EpisodeId")
@ -126,7 +126,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -126,7 +126,7 @@ namespace ErsatzTV.Infrastructure.Migrations
b.Property<string>("Plot")
.HasColumnType("TEXT");
b.Property<DateTimeOffset?>("ReleaseDate")
b.Property<DateTime?>("ReleaseDate")
.HasColumnType("TEXT");
b.Property<string>("SortTitle")
@ -215,7 +215,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -215,7 +215,7 @@ namespace ErsatzTV.Infrastructure.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTimeOffset?>("LastScan")
b.Property<DateTime?>("LastScan")
.HasColumnType("TEXT");
b.Property<int>("MediaKind")
@ -438,10 +438,10 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -438,10 +438,10 @@ namespace ErsatzTV.Infrastructure.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTimeOffset>("DateAdded")
b.Property<DateTime>("DateAdded")
.HasColumnType("TEXT");
b.Property<DateTimeOffset>("DateUpdated")
b.Property<DateTime>("DateUpdated")
.HasColumnType("TEXT");
b.Property<int>("MetadataKind")
@ -459,7 +459,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -459,7 +459,7 @@ namespace ErsatzTV.Infrastructure.Migrations
b.Property<string>("Plot")
.HasColumnType("TEXT");
b.Property<DateTimeOffset?>("ReleaseDate")
b.Property<DateTime?>("ReleaseDate")
.HasColumnType("TEXT");
b.Property<string>("SortTitle")
@ -508,7 +508,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -508,7 +508,7 @@ namespace ErsatzTV.Infrastructure.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTimeOffset>("Finish")
b.Property<DateTime>("Finish")
.HasColumnType("TEXT");
b.Property<int>("MediaItemId")
@ -517,7 +517,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -517,7 +517,7 @@ namespace ErsatzTV.Infrastructure.Migrations
b.Property<int>("PlayoutId")
.HasColumnType("INTEGER");
b.Property<DateTimeOffset>("Start")
b.Property<DateTime>("Start")
.HasColumnType("TEXT");
b.HasKey("Id");
@ -710,10 +710,10 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -710,10 +710,10 @@ namespace ErsatzTV.Infrastructure.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<DateTimeOffset>("DateAdded")
b.Property<DateTime>("DateAdded")
.HasColumnType("TEXT");
b.Property<DateTimeOffset>("DateUpdated")
b.Property<DateTime>("DateUpdated")
.HasColumnType("TEXT");
b.Property<int>("MetadataKind")
@ -728,7 +728,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -728,7 +728,7 @@ namespace ErsatzTV.Infrastructure.Migrations
b.Property<string>("Plot")
.HasColumnType("TEXT");
b.Property<DateTimeOffset?>("ReleaseDate")
b.Property<DateTime?>("ReleaseDate")
.HasColumnType("TEXT");
b.Property<int>("ShowId")
@ -1324,7 +1324,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -1324,7 +1324,7 @@ namespace ErsatzTV.Infrastructure.Migrations
b1.Property<int>("NextScheduleItemId")
.HasColumnType("INTEGER");
b1.Property<DateTimeOffset>("NextStart")
b1.Property<DateTime>("NextStart")
.HasColumnType("TEXT");
b1.HasKey("PlayoutId");

3
ErsatzTV/Services/SchedulerService.cs

@ -72,6 +72,9 @@ namespace ErsatzTV.Services @@ -72,6 +72,9 @@ namespace ErsatzTV.Services
private async Task ScanLocalMediaSources(CancellationToken cancellationToken)
{
// TODO: enable scanning again
return;
using IServiceScope scope = _serviceScopeFactory.CreateScope();
TvContext dbContext = scope.ServiceProvider.GetRequiredService<TvContext>();

Loading…
Cancel
Save