feat(api): add collections REST endpoints
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 4m5s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 5m9s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped

Refs #35
This commit is contained in:
2026-06-27 21:43:11 +02:00
parent 8f7d240fc8
commit fb3f2856da
21 changed files with 1250 additions and 69 deletions
@@ -0,0 +1,30 @@
using ErsatzTV.Application.MediaCollections;
namespace ErsatzTV.Controllers.Api.Requests;
public record AddItemsToCollectionRequest(
List<int> MovieIds,
List<int> ShowIds,
List<int> SeasonIds,
List<int> EpisodeIds,
List<int> ArtistIds,
List<int> MusicVideoIds,
List<int> OtherVideoIds,
List<int> SongIds,
List<int> ImageIds,
List<int> RemoteStreamIds)
{
public AddItemsToCollection ToCommand(int collectionId) =>
new(
collectionId,
MovieIds ?? [],
ShowIds ?? [],
SeasonIds ?? [],
EpisodeIds ?? [],
ArtistIds ?? [],
MusicVideoIds ?? [],
OtherVideoIds ?? [],
SongIds ?? [],
ImageIds ?? [],
RemoteStreamIds ?? []);
}
@@ -0,0 +1,8 @@
using ErsatzTV.Application.MediaCollections;
namespace ErsatzTV.Controllers.Api.Requests;
public record CreateCollectionRequest(string Name)
{
public CreateCollection ToCommand() => new(Name);
}
@@ -0,0 +1,8 @@
using ErsatzTV.Application.MediaCollections;
namespace ErsatzTV.Controllers.Api.Requests;
public record CreateSmartCollectionRequest(string Name, string Query)
{
public CreateSmartCollection ToCommand() => new(Query, Name);
}
@@ -0,0 +1,12 @@
using ErsatzTV.Application.MediaCollections;
namespace ErsatzTV.Controllers.Api.Requests;
public record UpdateCollectionRequest(string Name, bool? UseCustomPlaybackOrder)
{
public UpdateCollection ToCommand(int id) =>
new(id, Name)
{
UseCustomPlaybackOrder = Optional(UseCustomPlaybackOrder)
};
}
@@ -0,0 +1,8 @@
using ErsatzTV.Application.MediaCollections;
namespace ErsatzTV.Controllers.Api.Requests;
public record UpdateSmartCollectionRequest(string Name, string Query)
{
public UpdateSmartCollection ToCommand(int id) => new(id, Name, Query);
}