mirror of https://github.com/ErsatzTV/ErsatzTV.git
26 changed files with 14336 additions and 53 deletions
@ -0,0 +1,5 @@
@@ -0,0 +1,5 @@
|
||||
using ErsatzTV.Core; |
||||
|
||||
namespace ErsatzTV.Application.Plex; |
||||
|
||||
public record DeletePlexMediaSource(int PlexMediaSourceId) : IRequest<Either<BaseError, Unit>>; |
||||
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
using ErsatzTV.Core; |
||||
using ErsatzTV.Core.Domain; |
||||
using ErsatzTV.Core.Interfaces.Repositories; |
||||
using ErsatzTV.Core.Interfaces.Search; |
||||
|
||||
namespace ErsatzTV.Application.Plex; |
||||
|
||||
public class DeletePlexMediaSourceHandler(IMediaSourceRepository mediaSourceRepository, ISearchIndex searchIndex) |
||||
: IRequestHandler<DeletePlexMediaSource, Either<BaseError, Unit>> |
||||
{ |
||||
public async Task<Either<BaseError, Unit>> Handle( |
||||
DeletePlexMediaSource request, |
||||
CancellationToken cancellationToken) |
||||
{ |
||||
Option<PlexMediaSource> maybeMediaSource = |
||||
await mediaSourceRepository.GetPlex(request.PlexMediaSourceId, cancellationToken); |
||||
|
||||
foreach (PlexMediaSource mediaSource in maybeMediaSource) |
||||
{ |
||||
List<int> ids = await mediaSourceRepository.DeletePlex(mediaSource); |
||||
await searchIndex.RemoveItems(ids); |
||||
searchIndex.Commit(); |
||||
|
||||
return Unit.Default; |
||||
} |
||||
|
||||
return BaseError.New("Plex media source does not exist."); |
||||
} |
||||
} |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
using System; |
||||
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
||||
#nullable disable |
||||
|
||||
namespace ErsatzTV.Infrastructure.MySql.Migrations |
||||
{ |
||||
/// <inheritdoc />
|
||||
public partial class Add_PlexMediaSource_MissingSince : Migration |
||||
{ |
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder) |
||||
{ |
||||
migrationBuilder.AddColumn<DateTime>( |
||||
name: "MissingSince", |
||||
table: "PlexMediaSource", |
||||
type: "datetime(6)", |
||||
nullable: true); |
||||
} |
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder) |
||||
{ |
||||
migrationBuilder.DropColumn( |
||||
name: "MissingSince", |
||||
table: "PlexMediaSource"); |
||||
} |
||||
} |
||||
} |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,29 @@
@@ -0,0 +1,29 @@
|
||||
using System; |
||||
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
||||
#nullable disable |
||||
|
||||
namespace ErsatzTV.Infrastructure.Sqlite.Migrations |
||||
{ |
||||
/// <inheritdoc />
|
||||
public partial class Add_PlexMediaSource_MissingSince : Migration |
||||
{ |
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder) |
||||
{ |
||||
migrationBuilder.AddColumn<DateTime>( |
||||
name: "MissingSince", |
||||
table: "PlexMediaSource", |
||||
type: "TEXT", |
||||
nullable: true); |
||||
} |
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder) |
||||
{ |
||||
migrationBuilder.DropColumn( |
||||
name: "MissingSince", |
||||
table: "PlexMediaSource"); |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
<div @onkeydown="@OnKeyDown"> |
||||
<MudDialog> |
||||
<DialogContent> |
||||
<MudContainer> |
||||
<MudHighlighter Class="mud-primary-text" |
||||
Style="background-color: transparent; font-weight: bold" |
||||
Text="@($"Do you really want to remove {Name}? All synchronized content from this server will be removed.")"/> |
||||
</MudContainer> |
||||
</DialogContent> |
||||
<DialogActions> |
||||
<MudButton OnClick="Cancel">Cancel</MudButton> |
||||
<MudButton Color="Color.Error" Variant="Variant.Filled" OnClick="Submit">Remove</MudButton> |
||||
</DialogActions> |
||||
</MudDialog> |
||||
</div> |
||||
|
||||
@code { |
||||
|
||||
[Parameter] |
||||
public string Name { get; set; } |
||||
|
||||
[CascadingParameter] |
||||
IMudDialogInstance MudDialog { get; set; } |
||||
|
||||
private void Submit() => MudDialog.Close(DialogResult.Ok(true)); |
||||
|
||||
private void Cancel() => MudDialog.Cancel(); |
||||
|
||||
private void OnKeyDown(KeyboardEventArgs e) |
||||
{ |
||||
if (e.Code is "Enter" or "NumpadEnter") |
||||
{ |
||||
Submit(); |
||||
} |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue