Browse Source

add new option, migrations, and update filler preset editor

pull/2208/head
Jason Dove 2 weeks ago
parent
commit
0435d7de4d
No known key found for this signature in database
  1. 3
      ErsatzTV.Application/Filler/Commands/CreateFillerPreset.cs
  2. 3
      ErsatzTV.Application/Filler/Commands/CreateFillerPresetHandler.cs
  3. 3
      ErsatzTV.Application/Filler/Commands/UpdateFillerPreset.cs
  4. 1
      ErsatzTV.Application/Filler/Commands/UpdateFillerPresetHandler.cs
  5. 3
      ErsatzTV.Application/Filler/FillerPresetViewModel.cs
  6. 3
      ErsatzTV.Application/Filler/Mapper.cs
  7. 1
      ErsatzTV.Core/Domain/Filler/FillerPreset.cs
  8. 6148
      ErsatzTV.Infrastructure.MySql/Migrations/20250730002946_Add_FillerPresetUseChaptersAsMediaItems.Designer.cs
  9. 29
      ErsatzTV.Infrastructure.MySql/Migrations/20250730002946_Add_FillerPresetUseChaptersAsMediaItems.cs
  10. 3
      ErsatzTV.Infrastructure.MySql/Migrations/TvContextModelSnapshot.cs
  11. 5985
      ErsatzTV.Infrastructure.Sqlite/Migrations/20250730003013_Add_FillerPresetUseChaptersAsMediaItems.Designer.cs
  12. 29
      ErsatzTV.Infrastructure.Sqlite/Migrations/20250730003013_Add_FillerPresetUseChaptersAsMediaItems.cs
  13. 3
      ErsatzTV.Infrastructure.Sqlite/Migrations/TvContextModelSnapshot.cs
  14. 9
      ErsatzTV/Pages/FillerPresetEditor.razor
  15. 8
      ErsatzTV/ViewModels/FillerPresetEditViewModel.cs

3
ErsatzTV.Application/Filler/Commands/CreateFillerPreset.cs

@ -18,5 +18,6 @@ public record CreateFillerPreset( @@ -18,5 +18,6 @@ public record CreateFillerPreset(
int? MultiCollectionId,
int? SmartCollectionId,
int? PlaylistId,
string Expression
string Expression,
bool UseChaptersAsMediaItems
) : IRequest<Either<BaseError, Unit>>;

3
ErsatzTV.Application/Filler/Commands/CreateFillerPresetHandler.cs

@ -38,7 +38,8 @@ public class CreateFillerPresetHandler : IRequestHandler<CreateFillerPreset, Eit @@ -38,7 +38,8 @@ public class CreateFillerPresetHandler : IRequestHandler<CreateFillerPreset, Eit
MultiCollectionId = request.MultiCollectionId,
SmartCollectionId = request.SmartCollectionId,
PlaylistId = request.PlaylistId,
Expression = request.FillerKind is FillerKind.MidRoll ? request.Expression : null
Expression = request.FillerKind is FillerKind.MidRoll ? request.Expression : null,
UseChaptersAsMediaItems = request.UseChaptersAsMediaItems
};
await dbContext.FillerPresets.AddAsync(fillerPreset, cancellationToken);

3
ErsatzTV.Application/Filler/Commands/UpdateFillerPreset.cs

@ -19,5 +19,6 @@ public record UpdateFillerPreset( @@ -19,5 +19,6 @@ public record UpdateFillerPreset(
int? MultiCollectionId,
int? SmartCollectionId,
int? PlaylistId,
string Expression
string Expression,
bool UseChaptersAsMediaItems
) : IRequest<Either<BaseError, Unit>>;

1
ErsatzTV.Application/Filler/Commands/UpdateFillerPresetHandler.cs

@ -39,6 +39,7 @@ public class UpdateFillerPresetHandler : IRequestHandler<UpdateFillerPreset, Eit @@ -39,6 +39,7 @@ public class UpdateFillerPresetHandler : IRequestHandler<UpdateFillerPreset, Eit
existing.SmartCollectionId = request.SmartCollectionId;
existing.PlaylistId = request.PlaylistId;
existing.Expression = request.FillerKind is FillerKind.MidRoll ? request.Expression : null;
existing.UseChaptersAsMediaItems = request.UseChaptersAsMediaItems;
await dbContext.SaveChangesAsync();

3
ErsatzTV.Application/Filler/FillerPresetViewModel.cs

@ -19,4 +19,5 @@ public record FillerPresetViewModel( @@ -19,4 +19,5 @@ public record FillerPresetViewModel(
int? MultiCollectionId,
int? SmartCollectionId,
PlaylistViewModel Playlist,
string Expression);
string Expression,
bool UseChaptersAsMediaItems);

3
ErsatzTV.Application/Filler/Mapper.cs

@ -22,5 +22,6 @@ internal static class Mapper @@ -22,5 +22,6 @@ internal static class Mapper
fillerPreset.Playlist is not null
? MediaCollections.Mapper.ProjectToViewModel(fillerPreset.Playlist)
: null,
fillerPreset.Expression);
fillerPreset.Expression,
fillerPreset.UseChaptersAsMediaItems);
}

1
ErsatzTV.Core/Domain/Filler/FillerPreset.cs

@ -22,4 +22,5 @@ public class FillerPreset @@ -22,4 +22,5 @@ public class FillerPreset
public int? PlaylistId { get; set; }
public Playlist Playlist { get; set; }
public string Expression { get; set; }
public bool UseChaptersAsMediaItems { get; set; }
}

6148
ErsatzTV.Infrastructure.MySql/Migrations/20250730002946_Add_FillerPresetUseChaptersAsMediaItems.Designer.cs generated

File diff suppressed because it is too large Load Diff

29
ErsatzTV.Infrastructure.MySql/Migrations/20250730002946_Add_FillerPresetUseChaptersAsMediaItems.cs

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ErsatzTV.Infrastructure.MySql.Migrations
{
/// <inheritdoc />
public partial class Add_FillerPresetUseChaptersAsMediaItems : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "UseChaptersAsMediaItems",
table: "FillerPreset",
type: "tinyint(1)",
nullable: false,
defaultValue: false);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "UseChaptersAsMediaItems",
table: "FillerPreset");
}
}
}

3
ErsatzTV.Infrastructure.MySql/Migrations/TvContextModelSnapshot.cs

@ -746,6 +746,9 @@ namespace ErsatzTV.Infrastructure.MySql.Migrations @@ -746,6 +746,9 @@ namespace ErsatzTV.Infrastructure.MySql.Migrations
b.Property<int?>("SmartCollectionId")
.HasColumnType("int");
b.Property<bool>("UseChaptersAsMediaItems")
.HasColumnType("tinyint(1)");
b.HasKey("Id");
b.HasIndex("CollectionId");

5985
ErsatzTV.Infrastructure.Sqlite/Migrations/20250730003013_Add_FillerPresetUseChaptersAsMediaItems.Designer.cs generated

File diff suppressed because it is too large Load Diff

29
ErsatzTV.Infrastructure.Sqlite/Migrations/20250730003013_Add_FillerPresetUseChaptersAsMediaItems.cs

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace ErsatzTV.Infrastructure.Sqlite.Migrations
{
/// <inheritdoc />
public partial class Add_FillerPresetUseChaptersAsMediaItems : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "UseChaptersAsMediaItems",
table: "FillerPreset",
type: "INTEGER",
nullable: false,
defaultValue: false);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "UseChaptersAsMediaItems",
table: "FillerPreset");
}
}
}

3
ErsatzTV.Infrastructure.Sqlite/Migrations/TvContextModelSnapshot.cs

@ -713,6 +713,9 @@ namespace ErsatzTV.Infrastructure.Sqlite.Migrations @@ -713,6 +713,9 @@ namespace ErsatzTV.Infrastructure.Sqlite.Migrations
b.Property<int?>("SmartCollectionId")
.HasColumnType("INTEGER");
b.Property<bool>("UseChaptersAsMediaItems")
.HasColumnType("INTEGER");
b.HasKey("Id");
b.HasIndex("CollectionId");

9
ErsatzTV/Pages/FillerPresetEditor.razor

@ -209,6 +209,14 @@ @@ -209,6 +209,14 @@
</MudSelect>
</MudStack>
}
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudText>Use Chapters As Media Items</MudText>
</div>
<MudCheckBox @bind-Value="@_model.UseChaptersAsMediaItems" For="@(() => _model.UseChaptersAsMediaItems)" Dense="true">
<MudText Typo="Typo.caption" Style="font-weight: normal">Schedule individual chapters instead of entire files</MudText>
</MudCheckBox>
</MudStack>
<MudStack Row="true" Breakpoint="Breakpoint.SmAndDown" Class="form-field-stack gap-md-8 mb-5">
<div class="d-flex">
<MudText>Expression</MudText>
@ -313,6 +321,7 @@ @@ -313,6 +321,7 @@
? _televisionShows.Append(_televisionSeasons).Append(_artists).ToList().Find(vm => vm.MediaItemId == fillerPreset.MediaItemId.Value)
: null;
_model.Expression = fillerPreset.Expression;
_model.UseChaptersAsMediaItems = fillerPreset.UseChaptersAsMediaItems;
_model.Playlist = fillerPreset.Playlist;
});
}

8
ErsatzTV/ViewModels/FillerPresetEditViewModel.cs

@ -93,6 +93,8 @@ public class FillerPresetEditViewModel @@ -93,6 +93,8 @@ public class FillerPresetEditViewModel
public string Expression { get; set; }
public bool UseChaptersAsMediaItems { get; set; }
public IRequest<Either<BaseError, Unit>> ToEdit() =>
new UpdateFillerPreset(
Id,
@ -109,7 +111,8 @@ public class FillerPresetEditViewModel @@ -109,7 +111,8 @@ public class FillerPresetEditViewModel
MultiCollection?.Id,
SmartCollection?.Id,
Playlist?.Id,
Expression);
Expression,
UseChaptersAsMediaItems);
public IRequest<Either<BaseError, Unit>> ToUpdate() =>
new CreateFillerPreset(
@ -126,7 +129,8 @@ public class FillerPresetEditViewModel @@ -126,7 +129,8 @@ public class FillerPresetEditViewModel
MultiCollection?.Id,
SmartCollection?.Id,
Playlist?.Id,
Expression);
Expression,
UseChaptersAsMediaItems);
private static TimeSpan FixDuration(TimeSpan duration) =>
duration > TimeSpan.FromDays(1) ? duration.Subtract(TimeSpan.FromDays(1)) : duration;

Loading…
Cancel
Save