|
@@ -0,0 +1,1104 @@
|
|
|
+using System;
|
|
|
+using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
|
|
|
+
|
|
|
+#nullable disable
|
|
|
+
|
|
|
+namespace Jellyfin.Database.Providers.PgSql.Migrations
|
|
|
+{
|
|
|
+ /// <inheritdoc />
|
|
|
+ public partial class InitMigration : Migration
|
|
|
+ {
|
|
|
+ /// <inheritdoc />
|
|
|
+ protected override void Up(MigrationBuilder migrationBuilder)
|
|
|
+ {
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "ActivityLogs",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ Name = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: false),
|
|
|
+ Overview = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: true),
|
|
|
+ ShortOverview = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: true),
|
|
|
+ Type = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemId = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: true),
|
|
|
+ DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ LogSeverity = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ RowVersion = table.Column<long>(type: "bigint", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_ActivityLogs", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "ApiKeys",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ DateLastActivity = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ Name = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
|
|
|
+ AccessToken = table.Column<string>(type: "text", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_ApiKeys", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "BaseItems",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Type = table.Column<string>(type: "text", nullable: false),
|
|
|
+ Data = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Path = table.Column<string>(type: "text", nullable: true),
|
|
|
+ StartDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ EndDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ ChannelId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ IsMovie = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ CommunityRating = table.Column<float>(type: "real", nullable: true),
|
|
|
+ CustomRating = table.Column<string>(type: "text", nullable: true),
|
|
|
+ IndexNumber = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ IsLocked = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ Name = table.Column<string>(type: "text", nullable: true),
|
|
|
+ OfficialRating = table.Column<string>(type: "text", nullable: true),
|
|
|
+ MediaType = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Overview = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ParentIndexNumber = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ PremiereDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ ProductionYear = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Genres = table.Column<string>(type: "text", nullable: true),
|
|
|
+ SortName = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ForcedSortName = table.Column<string>(type: "text", nullable: true),
|
|
|
+ RunTimeTicks = table.Column<long>(type: "bigint", nullable: true),
|
|
|
+ DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ DateModified = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ IsSeries = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ EpisodeTitle = table.Column<string>(type: "text", nullable: true),
|
|
|
+ IsRepeat = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ PreferredMetadataLanguage = table.Column<string>(type: "text", nullable: true),
|
|
|
+ PreferredMetadataCountryCode = table.Column<string>(type: "text", nullable: true),
|
|
|
+ DateLastRefreshed = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ DateLastSaved = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ IsInMixedFolder = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ Studios = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ExternalServiceId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Tags = table.Column<string>(type: "text", nullable: true),
|
|
|
+ IsFolder = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ InheritedParentalRatingValue = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ UnratedType = table.Column<string>(type: "text", nullable: true),
|
|
|
+ CriticRating = table.Column<float>(type: "real", nullable: true),
|
|
|
+ CleanName = table.Column<string>(type: "text", nullable: true),
|
|
|
+ PresentationUniqueKey = table.Column<string>(type: "text", nullable: true),
|
|
|
+ OriginalTitle = table.Column<string>(type: "text", nullable: true),
|
|
|
+ PrimaryVersionId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ DateLastMediaAdded = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ Album = table.Column<string>(type: "text", nullable: true),
|
|
|
+ LUFS = table.Column<float>(type: "real", nullable: true),
|
|
|
+ NormalizationGain = table.Column<float>(type: "real", nullable: true),
|
|
|
+ IsVirtualItem = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ SeriesName = table.Column<string>(type: "text", nullable: true),
|
|
|
+ SeasonName = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ExternalSeriesId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Tagline = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ProductionLocations = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ExtraIds = table.Column<string>(type: "text", nullable: true),
|
|
|
+ TotalBitrate = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ ExtraType = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Artists = table.Column<string>(type: "text", nullable: true),
|
|
|
+ AlbumArtists = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ExternalId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ SeriesPresentationUniqueKey = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ShowId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ OwnerId = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Width = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Height = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Size = table.Column<long>(type: "bigint", nullable: true),
|
|
|
+ Audio = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ ParentId = table.Column<Guid>(type: "uuid", nullable: true),
|
|
|
+ TopParentId = table.Column<Guid>(type: "uuid", nullable: true),
|
|
|
+ SeasonId = table.Column<Guid>(type: "uuid", nullable: true),
|
|
|
+ SeriesId = table.Column<Guid>(type: "uuid", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_BaseItems", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "CustomItemDisplayPreferences",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Client = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false),
|
|
|
+ Key = table.Column<string>(type: "text", nullable: false),
|
|
|
+ Value = table.Column<string>(type: "text", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_CustomItemDisplayPreferences", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "DeviceOptions",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ DeviceId = table.Column<string>(type: "text", nullable: false),
|
|
|
+ CustomName = table.Column<string>(type: "text", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_DeviceOptions", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "ItemValues",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemValueId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Type = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Value = table.Column<string>(type: "text", nullable: false),
|
|
|
+ CleanValue = table.Column<string>(type: "text", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_ItemValues", x => x.ItemValueId);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "MediaSegments",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Type = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ EndTicks = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ StartTicks = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ SegmentProviderId = table.Column<string>(type: "text", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_MediaSegments", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "Peoples",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Name = table.Column<string>(type: "text", nullable: false),
|
|
|
+ PersonType = table.Column<string>(type: "text", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_Peoples", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "TrickplayInfos",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Width = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Height = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ TileWidth = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ TileHeight = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ ThumbnailCount = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Interval = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Bandwidth = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_TrickplayInfos", x => new { x.ItemId, x.Width });
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "Users",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Username = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false, collation: "NOCASE"),
|
|
|
+ Password = table.Column<string>(type: "character varying(65535)", maxLength: 65535, nullable: true),
|
|
|
+ MustUpdatePassword = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ AudioLanguagePreference = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true),
|
|
|
+ AuthenticationProviderId = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
|
|
+ PasswordResetProviderId = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false),
|
|
|
+ InvalidLoginAttemptCount = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ LastActivityDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ LastLoginDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ LoginAttemptsBeforeLockout = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ MaxActiveSessions = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ SubtitleMode = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ PlayDefaultAudioTrack = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ SubtitleLanguagePreference = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: true),
|
|
|
+ DisplayMissingEpisodes = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ DisplayCollectionsView = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ EnableLocalPassword = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ HidePlayedInLatest = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ RememberAudioSelections = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ RememberSubtitleSelections = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ EnableNextEpisodeAutoPlay = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ EnableAutoLogin = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ EnableUserPreferenceAccess = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ MaxParentalAgeRating = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ RemoteClientBitrateLimit = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ InternalId = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ SyncPlayAccess = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ CastReceiverId = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: true),
|
|
|
+ RowVersion = table.Column<long>(type: "bigint", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_Users", x => x.Id);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "AncestorIds",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ParentItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_AncestorIds", x => new { x.ItemId, x.ParentItemId });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_AncestorIds_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_AncestorIds_BaseItems_ParentItemId",
|
|
|
+ column: x => x.ParentItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "AttachmentStreamInfos",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Index = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Codec = table.Column<string>(type: "text", nullable: false),
|
|
|
+ CodecTag = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Comment = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Filename = table.Column<string>(type: "text", nullable: true),
|
|
|
+ MimeType = table.Column<string>(type: "text", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_AttachmentStreamInfos", x => new { x.ItemId, x.Index });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_AttachmentStreamInfos_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "BaseItemImageInfos",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Path = table.Column<string>(type: "text", nullable: false),
|
|
|
+ DateModified = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ ImageType = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Width = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Height = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Blurhash = table.Column<byte[]>(type: "bytea", nullable: true),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_BaseItemImageInfos", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_BaseItemImageInfos_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "BaseItemMetadataFields",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_BaseItemMetadataFields", x => new { x.Id, x.ItemId });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_BaseItemMetadataFields_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "BaseItemProviders",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ProviderId = table.Column<string>(type: "text", nullable: false),
|
|
|
+ ProviderValue = table.Column<string>(type: "text", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_BaseItemProviders", x => new { x.ItemId, x.ProviderId });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_BaseItemProviders_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "BaseItemTrailerTypes",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_BaseItemTrailerTypes", x => new { x.Id, x.ItemId });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_BaseItemTrailerTypes_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "Chapters",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ChapterIndex = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ StartPositionTicks = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ Name = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ImagePath = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ImageDateModified = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_Chapters", x => new { x.ItemId, x.ChapterIndex });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_Chapters_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "MediaStreamInfos",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ StreamIndex = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ StreamType = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Codec = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Language = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ChannelLayout = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Profile = table.Column<string>(type: "text", nullable: true),
|
|
|
+ AspectRatio = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Path = table.Column<string>(type: "text", nullable: true),
|
|
|
+ IsInterlaced = table.Column<bool>(type: "boolean", nullable: true),
|
|
|
+ BitRate = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Channels = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ SampleRate = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ IsDefault = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ IsForced = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ IsExternal = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ Height = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Width = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ AverageFrameRate = table.Column<float>(type: "real", nullable: true),
|
|
|
+ RealFrameRate = table.Column<float>(type: "real", nullable: true),
|
|
|
+ Level = table.Column<float>(type: "real", nullable: true),
|
|
|
+ PixelFormat = table.Column<string>(type: "text", nullable: true),
|
|
|
+ BitDepth = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ IsAnamorphic = table.Column<bool>(type: "boolean", nullable: true),
|
|
|
+ RefFrames = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ CodecTag = table.Column<string>(type: "text", nullable: true),
|
|
|
+ Comment = table.Column<string>(type: "text", nullable: true),
|
|
|
+ NalLengthSize = table.Column<string>(type: "text", nullable: true),
|
|
|
+ IsAvc = table.Column<bool>(type: "boolean", nullable: true),
|
|
|
+ Title = table.Column<string>(type: "text", nullable: true),
|
|
|
+ TimeBase = table.Column<string>(type: "text", nullable: true),
|
|
|
+ CodecTimeBase = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ColorPrimaries = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ColorSpace = table.Column<string>(type: "text", nullable: true),
|
|
|
+ ColorTransfer = table.Column<string>(type: "text", nullable: true),
|
|
|
+ DvVersionMajor = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ DvVersionMinor = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ DvProfile = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ DvLevel = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ RpuPresentFlag = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ ElPresentFlag = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ BlPresentFlag = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ DvBlSignalCompatibilityId = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ IsHearingImpaired = table.Column<bool>(type: "boolean", nullable: true),
|
|
|
+ Rotation = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ KeyFrames = table.Column<string>(type: "text", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_MediaStreamInfos", x => new { x.ItemId, x.StreamIndex });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_MediaStreamInfos_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "ItemValuesMap",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemValueId = table.Column<Guid>(type: "uuid", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_ItemValuesMap", x => new { x.ItemValueId, x.ItemId });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_ItemValuesMap_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_ItemValuesMap_ItemValues_ItemValueId",
|
|
|
+ column: x => x.ItemValueId,
|
|
|
+ principalTable: "ItemValues",
|
|
|
+ principalColumn: "ItemValueId",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "PeopleBaseItemMap",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ PeopleId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ SortOrder = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ ListOrder = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Role = table.Column<string>(type: "text", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_PeopleBaseItemMap", x => new { x.ItemId, x.PeopleId });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_PeopleBaseItemMap_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_PeopleBaseItemMap_Peoples_PeopleId",
|
|
|
+ column: x => x.PeopleId,
|
|
|
+ principalTable: "Peoples",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "AccessSchedules",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ DayOfWeek = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ StartHour = table.Column<double>(type: "double precision", nullable: false),
|
|
|
+ EndHour = table.Column<double>(type: "double precision", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_AccessSchedules", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_AccessSchedules_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "Devices",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ AccessToken = table.Column<string>(type: "text", nullable: false),
|
|
|
+ AppName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
|
|
|
+ AppVersion = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false),
|
|
|
+ DeviceName = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
|
|
|
+ DeviceId = table.Column<string>(type: "character varying(256)", maxLength: 256, nullable: false),
|
|
|
+ IsActive = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ DateCreated = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ DateModified = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
|
|
|
+ DateLastActivity = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_Devices", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_Devices_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "DisplayPreferences",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Client = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false),
|
|
|
+ ShowSidebar = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ ShowBackdrop = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ ScrollDirection = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ IndexBy = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ SkipForwardLength = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ SkipBackwardLength = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ ChromecastVersion = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ EnableNextVideoInfoOverlay = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ DashboardTheme = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: true),
|
|
|
+ TvHome = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_DisplayPreferences", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_DisplayPreferences_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "ImageInfos",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: true),
|
|
|
+ Path = table.Column<string>(type: "character varying(512)", maxLength: 512, nullable: false),
|
|
|
+ LastModified = table.Column<DateTime>(type: "timestamp with time zone", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_ImageInfos", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_ImageInfos_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "ItemDisplayPreferences",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Client = table.Column<string>(type: "character varying(32)", maxLength: 32, nullable: false),
|
|
|
+ ViewType = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ RememberIndexing = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ IndexBy = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ RememberSorting = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ SortBy = table.Column<string>(type: "character varying(64)", maxLength: 64, nullable: false),
|
|
|
+ SortOrder = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_ItemDisplayPreferences", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_ItemDisplayPreferences_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "Permissions",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: true),
|
|
|
+ Kind = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Value = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ RowVersion = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ Permission_Permissions_Guid = table.Column<Guid>(type: "uuid", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_Permissions", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_Permissions_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "Preferences",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: true),
|
|
|
+ Kind = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Value = table.Column<string>(type: "character varying(65535)", maxLength: 65535, nullable: false),
|
|
|
+ RowVersion = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ Preference_Preferences_Guid = table.Column<Guid>(type: "uuid", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_Preferences", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_Preferences_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "UserData",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ CustomDataKey = table.Column<string>(type: "text", nullable: false),
|
|
|
+ ItemId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ UserId = table.Column<Guid>(type: "uuid", nullable: false),
|
|
|
+ Rating = table.Column<double>(type: "double precision", nullable: true),
|
|
|
+ PlaybackPositionTicks = table.Column<long>(type: "bigint", nullable: false),
|
|
|
+ PlayCount = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ IsFavorite = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ LastPlayedDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: true),
|
|
|
+ Played = table.Column<bool>(type: "boolean", nullable: false),
|
|
|
+ AudioStreamIndex = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ SubtitleStreamIndex = table.Column<int>(type: "integer", nullable: true),
|
|
|
+ Likes = table.Column<bool>(type: "boolean", nullable: true)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_UserData", x => new { x.ItemId, x.UserId, x.CustomDataKey });
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_UserData_BaseItems_ItemId",
|
|
|
+ column: x => x.ItemId,
|
|
|
+ principalTable: "BaseItems",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_UserData_Users_UserId",
|
|
|
+ column: x => x.UserId,
|
|
|
+ principalTable: "Users",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateTable(
|
|
|
+ name: "HomeSection",
|
|
|
+ columns: table => new
|
|
|
+ {
|
|
|
+ Id = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
|
+ DisplayPreferencesId = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Order = table.Column<int>(type: "integer", nullable: false),
|
|
|
+ Type = table.Column<int>(type: "integer", nullable: false)
|
|
|
+ },
|
|
|
+ constraints: table =>
|
|
|
+ {
|
|
|
+ table.PrimaryKey("PK_HomeSection", x => x.Id);
|
|
|
+ table.ForeignKey(
|
|
|
+ name: "FK_HomeSection_DisplayPreferences_DisplayPreferencesId",
|
|
|
+ column: x => x.DisplayPreferencesId,
|
|
|
+ principalTable: "DisplayPreferences",
|
|
|
+ principalColumn: "Id",
|
|
|
+ onDelete: ReferentialAction.Cascade);
|
|
|
+ });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_AccessSchedules_UserId",
|
|
|
+ table: "AccessSchedules",
|
|
|
+ column: "UserId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_ActivityLogs_DateCreated",
|
|
|
+ table: "ActivityLogs",
|
|
|
+ column: "DateCreated");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_AncestorIds_ParentItemId",
|
|
|
+ table: "AncestorIds",
|
|
|
+ column: "ParentItemId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_ApiKeys_AccessToken",
|
|
|
+ table: "ApiKeys",
|
|
|
+ column: "AccessToken",
|
|
|
+ unique: true);
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItemImageInfos_ItemId",
|
|
|
+ table: "BaseItemImageInfos",
|
|
|
+ column: "ItemId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItemMetadataFields_ItemId",
|
|
|
+ table: "BaseItemMetadataFields",
|
|
|
+ column: "ItemId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItemProviders_ProviderId_ProviderValue_ItemId",
|
|
|
+ table: "BaseItemProviders",
|
|
|
+ columns: new[] { "ProviderId", "ProviderValue", "ItemId" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Id_Type_IsFolder_IsVirtualItem",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Id", "Type", "IsFolder", "IsVirtualItem" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_IsFolder_TopParentId_IsVirtualItem_PresentationUn~",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_MediaType_TopParentId_IsVirtualItem_PresentationU~",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_ParentId",
|
|
|
+ table: "BaseItems",
|
|
|
+ column: "ParentId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Path",
|
|
|
+ table: "BaseItems",
|
|
|
+ column: "Path");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_PresentationUniqueKey",
|
|
|
+ table: "BaseItems",
|
|
|
+ column: "PresentationUniqueKey");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_TopParentId_Id",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "TopParentId", "Id" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Type_SeriesPresentationUniqueKey_IsFolder_IsVirtu~",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Type_SeriesPresentationUniqueKey_PresentationUniq~",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Type_TopParentId_Id",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Type", "TopParentId", "Id" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Type_TopParentId_IsVirtualItem_PresentationUnique~",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Type_TopParentId_PresentationUniqueKey",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Type", "TopParentId", "PresentationUniqueKey" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItems_Type_TopParentId_StartDate",
|
|
|
+ table: "BaseItems",
|
|
|
+ columns: new[] { "Type", "TopParentId", "StartDate" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_BaseItemTrailerTypes_ItemId",
|
|
|
+ table: "BaseItemTrailerTypes",
|
|
|
+ column: "ItemId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_CustomItemDisplayPreferences_UserId_ItemId_Client_Key",
|
|
|
+ table: "CustomItemDisplayPreferences",
|
|
|
+ columns: new[] { "UserId", "ItemId", "Client", "Key" },
|
|
|
+ unique: true);
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_DeviceOptions_DeviceId",
|
|
|
+ table: "DeviceOptions",
|
|
|
+ column: "DeviceId",
|
|
|
+ unique: true);
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Devices_AccessToken_DateLastActivity",
|
|
|
+ table: "Devices",
|
|
|
+ columns: new[] { "AccessToken", "DateLastActivity" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Devices_DeviceId",
|
|
|
+ table: "Devices",
|
|
|
+ column: "DeviceId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Devices_DeviceId_DateLastActivity",
|
|
|
+ table: "Devices",
|
|
|
+ columns: new[] { "DeviceId", "DateLastActivity" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Devices_UserId_DeviceId",
|
|
|
+ table: "Devices",
|
|
|
+ columns: new[] { "UserId", "DeviceId" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_DisplayPreferences_UserId_ItemId_Client",
|
|
|
+ table: "DisplayPreferences",
|
|
|
+ columns: new[] { "UserId", "ItemId", "Client" },
|
|
|
+ unique: true);
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_HomeSection_DisplayPreferencesId",
|
|
|
+ table: "HomeSection",
|
|
|
+ column: "DisplayPreferencesId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_ImageInfos_UserId",
|
|
|
+ table: "ImageInfos",
|
|
|
+ column: "UserId",
|
|
|
+ unique: true);
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_ItemDisplayPreferences_UserId",
|
|
|
+ table: "ItemDisplayPreferences",
|
|
|
+ column: "UserId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_ItemValues_Type_CleanValue",
|
|
|
+ table: "ItemValues",
|
|
|
+ columns: new[] { "Type", "CleanValue" },
|
|
|
+ unique: true);
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_ItemValuesMap_ItemId",
|
|
|
+ table: "ItemValuesMap",
|
|
|
+ column: "ItemId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_MediaStreamInfos_StreamIndex",
|
|
|
+ table: "MediaStreamInfos",
|
|
|
+ column: "StreamIndex");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_MediaStreamInfos_StreamIndex_StreamType",
|
|
|
+ table: "MediaStreamInfos",
|
|
|
+ columns: new[] { "StreamIndex", "StreamType" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_MediaStreamInfos_StreamIndex_StreamType_Language",
|
|
|
+ table: "MediaStreamInfos",
|
|
|
+ columns: new[] { "StreamIndex", "StreamType", "Language" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_MediaStreamInfos_StreamType",
|
|
|
+ table: "MediaStreamInfos",
|
|
|
+ column: "StreamType");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_PeopleBaseItemMap_ItemId_ListOrder",
|
|
|
+ table: "PeopleBaseItemMap",
|
|
|
+ columns: new[] { "ItemId", "ListOrder" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_PeopleBaseItemMap_ItemId_SortOrder",
|
|
|
+ table: "PeopleBaseItemMap",
|
|
|
+ columns: new[] { "ItemId", "SortOrder" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_PeopleBaseItemMap_PeopleId",
|
|
|
+ table: "PeopleBaseItemMap",
|
|
|
+ column: "PeopleId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Peoples_Name",
|
|
|
+ table: "Peoples",
|
|
|
+ column: "Name");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Permissions_UserId_Kind",
|
|
|
+ table: "Permissions",
|
|
|
+ columns: new[] { "UserId", "Kind" },
|
|
|
+ unique: true,
|
|
|
+ filter: "[UserId] IS NOT NULL");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Preferences_UserId_Kind",
|
|
|
+ table: "Preferences",
|
|
|
+ columns: new[] { "UserId", "Kind" },
|
|
|
+ unique: true,
|
|
|
+ filter: "[UserId] IS NOT NULL");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_UserData_ItemId_UserId_IsFavorite",
|
|
|
+ table: "UserData",
|
|
|
+ columns: new[] { "ItemId", "UserId", "IsFavorite" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_UserData_ItemId_UserId_LastPlayedDate",
|
|
|
+ table: "UserData",
|
|
|
+ columns: new[] { "ItemId", "UserId", "LastPlayedDate" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_UserData_ItemId_UserId_PlaybackPositionTicks",
|
|
|
+ table: "UserData",
|
|
|
+ columns: new[] { "ItemId", "UserId", "PlaybackPositionTicks" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_UserData_ItemId_UserId_Played",
|
|
|
+ table: "UserData",
|
|
|
+ columns: new[] { "ItemId", "UserId", "Played" });
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_UserData_UserId",
|
|
|
+ table: "UserData",
|
|
|
+ column: "UserId");
|
|
|
+
|
|
|
+ migrationBuilder.CreateIndex(
|
|
|
+ name: "IX_Users_Username",
|
|
|
+ table: "Users",
|
|
|
+ column: "Username",
|
|
|
+ unique: true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <inheritdoc />
|
|
|
+ protected override void Down(MigrationBuilder migrationBuilder)
|
|
|
+ {
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "AccessSchedules");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "ActivityLogs");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "AncestorIds");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "ApiKeys");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "AttachmentStreamInfos");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "BaseItemImageInfos");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "BaseItemMetadataFields");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "BaseItemProviders");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "BaseItemTrailerTypes");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "Chapters");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "CustomItemDisplayPreferences");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "DeviceOptions");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "Devices");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "HomeSection");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "ImageInfos");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "ItemDisplayPreferences");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "ItemValuesMap");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "MediaSegments");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "MediaStreamInfos");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "PeopleBaseItemMap");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "Permissions");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "Preferences");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "TrickplayInfos");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "UserData");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "DisplayPreferences");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "ItemValues");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "Peoples");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "BaseItems");
|
|
|
+
|
|
|
+ migrationBuilder.DropTable(
|
|
|
+ name: "Users");
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|