Files
ersatztv/ErsatzTV.Infrastructure/Migrations/20210502174215_Add_JellyfinMediaSource.cs
T
Jason DoveandGitHub 4d86250630 add jellyfin media source (#185)
* wip

* start to add jellyfin tables to db

* code cleanup

* finish adding jellyfin media source

* sync jellyfin libraries

* display list of jellyfin libraries

* toggle jellyfin library sync

* edit jellyfin path replacements

* noop jellyfin scanners

* get jellyfin admin user id on startup

* implement jellyfin disconnect

* add jellyfin libraries to list; start to query jellyfin library items

* code cleanup

* start to project jellyfin movies

* save new jellyfin movies to db

* basic jellyfin movie update

* load jellyfin actor artwork

* load jellyfin movie poster and fan art

* more jellyfin artwork fixes, sync audio streams

* jellyfin playback sort of works

* skip jellyfin movies that are inaccessible

* use ffprobe for jellyfin movie statistics

* code cleanup

* store jellyfin operating system

* more jellyfin movie updates

* update jellyfin movie poster and fan art

* add jellyfin tv types

* sync jellyfin shows

* sync jellyfin seasons

* sync jellyfin episodes

* remove missing jellyfin television items

* delete empty jellyfin seasons and shows

* fix jellyfin updates

* fix indexing jellyfin movie and show languages
2021-05-15 13:14:17 -05:00

93 lines
3.6 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
namespace ErsatzTV.Infrastructure.Migrations
{
public partial class Add_JellyfinMediaSource : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
"JellyfinMediaSource",
table => new
{
Id = table.Column<int>("INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
ServerName = table.Column<string>("TEXT", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_JellyfinMediaSource", x => x.Id);
table.ForeignKey(
"FK_JellyfinMediaSource_MediaSource_Id",
x => x.Id,
"MediaSource",
"Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
"JellyfinConnection",
table => new
{
Id = table.Column<int>("INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Address = table.Column<string>("TEXT", nullable: true),
JellyfinMediaSourceId = table.Column<int>("INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_JellyfinConnection", x => x.Id);
table.ForeignKey(
"FK_JellyfinConnection_JellyfinMediaSource_JellyfinMediaSourceId",
x => x.JellyfinMediaSourceId,
"JellyfinMediaSource",
"Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
"JellyfinPathReplacement",
table => new
{
Id = table.Column<int>("INTEGER", nullable: false)
.Annotation("Sqlite:Autoincrement", true),
JellyfinPath = table.Column<string>("TEXT", nullable: true),
LocalPath = table.Column<string>("TEXT", nullable: true),
JellyfinMediaSourceId = table.Column<int>("INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_JellyfinPathReplacement", x => x.Id);
table.ForeignKey(
"FK_JellyfinPathReplacement_JellyfinMediaSource_JellyfinMediaSourceId",
x => x.JellyfinMediaSourceId,
"JellyfinMediaSource",
"Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
"IX_JellyfinConnection_JellyfinMediaSourceId",
"JellyfinConnection",
"JellyfinMediaSourceId");
migrationBuilder.CreateIndex(
"IX_JellyfinPathReplacement_JellyfinMediaSourceId",
"JellyfinPathReplacement",
"JellyfinMediaSourceId");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
"JellyfinConnection");
migrationBuilder.DropTable(
"JellyfinPathReplacement");
migrationBuilder.DropTable(
"JellyfinMediaSource");
}
}
}