using System; using Microsoft.EntityFrameworkCore.Migrations; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; #nullable disable namespace Jellyfin.Database.Providers.PgSql.Migrations { /// public partial class InitMigration : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "ActivityLogs", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), Name = table.Column(type: "character varying(512)", maxLength: 512, nullable: false), Overview = table.Column(type: "character varying(512)", maxLength: 512, nullable: true), ShortOverview = table.Column(type: "character varying(512)", maxLength: 512, nullable: true), Type = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), UserId = table.Column(type: "uuid", nullable: false), ItemId = table.Column(type: "character varying(256)", maxLength: 256, nullable: true), DateCreated = table.Column(type: "timestamp with time zone", nullable: false), LogSeverity = table.Column(type: "integer", nullable: false), RowVersion = table.Column(type: "bigint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ActivityLogs", x => x.Id); }); migrationBuilder.CreateTable( name: "ApiKeys", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), DateCreated = table.Column(type: "timestamp with time zone", nullable: false), DateLastActivity = table.Column(type: "timestamp with time zone", nullable: false), Name = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), AccessToken = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ApiKeys", x => x.Id); }); migrationBuilder.CreateTable( name: "BaseItems", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Type = table.Column(type: "text", nullable: false), Data = table.Column(type: "text", nullable: true), Path = table.Column(type: "text", nullable: true), StartDate = table.Column(type: "timestamp with time zone", nullable: false), EndDate = table.Column(type: "timestamp with time zone", nullable: false), ChannelId = table.Column(type: "text", nullable: true), IsMovie = table.Column(type: "boolean", nullable: false), CommunityRating = table.Column(type: "real", nullable: true), CustomRating = table.Column(type: "text", nullable: true), IndexNumber = table.Column(type: "integer", nullable: true), IsLocked = table.Column(type: "boolean", nullable: false), Name = table.Column(type: "text", nullable: true), OfficialRating = table.Column(type: "text", nullable: true), MediaType = table.Column(type: "text", nullable: true), Overview = table.Column(type: "text", nullable: true), ParentIndexNumber = table.Column(type: "integer", nullable: true), PremiereDate = table.Column(type: "timestamp with time zone", nullable: true), ProductionYear = table.Column(type: "integer", nullable: true), Genres = table.Column(type: "text", nullable: true), SortName = table.Column(type: "text", nullable: true), ForcedSortName = table.Column(type: "text", nullable: true), RunTimeTicks = table.Column(type: "bigint", nullable: true), DateCreated = table.Column(type: "timestamp with time zone", nullable: true), DateModified = table.Column(type: "timestamp with time zone", nullable: true), IsSeries = table.Column(type: "boolean", nullable: false), EpisodeTitle = table.Column(type: "text", nullable: true), IsRepeat = table.Column(type: "boolean", nullable: false), PreferredMetadataLanguage = table.Column(type: "text", nullable: true), PreferredMetadataCountryCode = table.Column(type: "text", nullable: true), DateLastRefreshed = table.Column(type: "timestamp with time zone", nullable: true), DateLastSaved = table.Column(type: "timestamp with time zone", nullable: true), IsInMixedFolder = table.Column(type: "boolean", nullable: false), Studios = table.Column(type: "text", nullable: true), ExternalServiceId = table.Column(type: "text", nullable: true), Tags = table.Column(type: "text", nullable: true), IsFolder = table.Column(type: "boolean", nullable: false), InheritedParentalRatingValue = table.Column(type: "integer", nullable: true), UnratedType = table.Column(type: "text", nullable: true), CriticRating = table.Column(type: "real", nullable: true), CleanName = table.Column(type: "text", nullable: true), PresentationUniqueKey = table.Column(type: "text", nullable: true), OriginalTitle = table.Column(type: "text", nullable: true), PrimaryVersionId = table.Column(type: "text", nullable: true), DateLastMediaAdded = table.Column(type: "timestamp with time zone", nullable: true), Album = table.Column(type: "text", nullable: true), LUFS = table.Column(type: "real", nullable: true), NormalizationGain = table.Column(type: "real", nullable: true), IsVirtualItem = table.Column(type: "boolean", nullable: false), SeriesName = table.Column(type: "text", nullable: true), SeasonName = table.Column(type: "text", nullable: true), ExternalSeriesId = table.Column(type: "text", nullable: true), Tagline = table.Column(type: "text", nullable: true), ProductionLocations = table.Column(type: "text", nullable: true), ExtraIds = table.Column(type: "text", nullable: true), TotalBitrate = table.Column(type: "integer", nullable: true), ExtraType = table.Column(type: "integer", nullable: true), Artists = table.Column(type: "text", nullable: true), AlbumArtists = table.Column(type: "text", nullable: true), ExternalId = table.Column(type: "text", nullable: true), SeriesPresentationUniqueKey = table.Column(type: "text", nullable: true), ShowId = table.Column(type: "text", nullable: true), OwnerId = table.Column(type: "text", nullable: true), Width = table.Column(type: "integer", nullable: true), Height = table.Column(type: "integer", nullable: true), Size = table.Column(type: "bigint", nullable: true), Audio = table.Column(type: "integer", nullable: true), ParentId = table.Column(type: "uuid", nullable: true), TopParentId = table.Column(type: "uuid", nullable: true), SeasonId = table.Column(type: "uuid", nullable: true), SeriesId = table.Column(type: "uuid", nullable: true) }, constraints: table => { table.PrimaryKey("PK_BaseItems", x => x.Id); }); migrationBuilder.CreateTable( name: "CustomItemDisplayPreferences", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: false), ItemId = table.Column(type: "uuid", nullable: false), Client = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), Key = table.Column(type: "text", nullable: false), Value = table.Column(type: "text", nullable: true) }, constraints: table => { table.PrimaryKey("PK_CustomItemDisplayPreferences", x => x.Id); }); migrationBuilder.CreateTable( name: "DeviceOptions", columns: table => new { Id = table.Column(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), DeviceId = table.Column(type: "text", nullable: false), CustomName = table.Column(type: "text", nullable: true) }, constraints: table => { table.PrimaryKey("PK_DeviceOptions", x => x.Id); }); migrationBuilder.CreateTable( name: "ItemValues", columns: table => new { ItemValueId = table.Column(type: "uuid", nullable: false), Type = table.Column(type: "integer", nullable: false), Value = table.Column(type: "text", nullable: false), CleanValue = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ItemValues", x => x.ItemValueId); }); migrationBuilder.CreateTable( name: "MediaSegments", columns: table => new { Id = table.Column(type: "uuid", nullable: false), ItemId = table.Column(type: "uuid", nullable: false), Type = table.Column(type: "integer", nullable: false), EndTicks = table.Column(type: "bigint", nullable: false), StartTicks = table.Column(type: "bigint", nullable: false), SegmentProviderId = table.Column(type: "text", nullable: false) }, constraints: table => { table.PrimaryKey("PK_MediaSegments", x => x.Id); }); migrationBuilder.CreateTable( name: "Peoples", columns: table => new { Id = table.Column(type: "uuid", nullable: false), Name = table.Column(type: "text", nullable: false), PersonType = table.Column(type: "text", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Peoples", x => x.Id); }); migrationBuilder.CreateTable( name: "TrickplayInfos", columns: table => new { ItemId = table.Column(type: "uuid", nullable: false), Width = table.Column(type: "integer", nullable: false), Height = table.Column(type: "integer", nullable: false), TileWidth = table.Column(type: "integer", nullable: false), TileHeight = table.Column(type: "integer", nullable: false), ThumbnailCount = table.Column(type: "integer", nullable: false), Interval = table.Column(type: "integer", nullable: false), Bandwidth = table.Column(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(type: "uuid", nullable: false), Username = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), Password = table.Column(type: "character varying(65535)", maxLength: 65535, nullable: true), MustUpdatePassword = table.Column(type: "boolean", nullable: false), AudioLanguagePreference = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), AuthenticationProviderId = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), PasswordResetProviderId = table.Column(type: "character varying(255)", maxLength: 255, nullable: false), InvalidLoginAttemptCount = table.Column(type: "integer", nullable: false), LastActivityDate = table.Column(type: "timestamp with time zone", nullable: true), LastLoginDate = table.Column(type: "timestamp with time zone", nullable: true), LoginAttemptsBeforeLockout = table.Column(type: "integer", nullable: true), MaxActiveSessions = table.Column(type: "integer", nullable: false), SubtitleMode = table.Column(type: "integer", nullable: false), PlayDefaultAudioTrack = table.Column(type: "boolean", nullable: false), SubtitleLanguagePreference = table.Column(type: "character varying(255)", maxLength: 255, nullable: true), DisplayMissingEpisodes = table.Column(type: "boolean", nullable: false), DisplayCollectionsView = table.Column(type: "boolean", nullable: false), EnableLocalPassword = table.Column(type: "boolean", nullable: false), HidePlayedInLatest = table.Column(type: "boolean", nullable: false), RememberAudioSelections = table.Column(type: "boolean", nullable: false), RememberSubtitleSelections = table.Column(type: "boolean", nullable: false), EnableNextEpisodeAutoPlay = table.Column(type: "boolean", nullable: false), EnableAutoLogin = table.Column(type: "boolean", nullable: false), EnableUserPreferenceAccess = table.Column(type: "boolean", nullable: false), MaxParentalAgeRating = table.Column(type: "integer", nullable: true), RemoteClientBitrateLimit = table.Column(type: "integer", nullable: true), InternalId = table.Column(type: "bigint", nullable: false), SyncPlayAccess = table.Column(type: "integer", nullable: false), CastReceiverId = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), RowVersion = table.Column(type: "bigint", nullable: false) }, constraints: table => { table.PrimaryKey("PK_Users", x => x.Id); }); migrationBuilder.CreateTable( name: "AncestorIds", columns: table => new { ParentItemId = table.Column(type: "uuid", nullable: false), ItemId = table.Column(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(type: "uuid", nullable: false), Index = table.Column(type: "integer", nullable: false), Codec = table.Column(type: "text", nullable: false), CodecTag = table.Column(type: "text", nullable: true), Comment = table.Column(type: "text", nullable: true), Filename = table.Column(type: "text", nullable: true), MimeType = table.Column(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(type: "uuid", nullable: false), Path = table.Column(type: "text", nullable: false), DateModified = table.Column(type: "timestamp with time zone", nullable: false), ImageType = table.Column(type: "integer", nullable: false), Width = table.Column(type: "integer", nullable: false), Height = table.Column(type: "integer", nullable: false), Blurhash = table.Column(type: "bytea", nullable: true), ItemId = table.Column(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(type: "integer", nullable: false), ItemId = table.Column(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(type: "uuid", nullable: false), ProviderId = table.Column(type: "text", nullable: false), ProviderValue = table.Column(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(type: "integer", nullable: false), ItemId = table.Column(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(type: "uuid", nullable: false), ChapterIndex = table.Column(type: "integer", nullable: false), StartPositionTicks = table.Column(type: "bigint", nullable: false), Name = table.Column(type: "text", nullable: true), ImagePath = table.Column(type: "text", nullable: true), ImageDateModified = table.Column(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(type: "uuid", nullable: false), StreamIndex = table.Column(type: "integer", nullable: false), StreamType = table.Column(type: "integer", nullable: false), Codec = table.Column(type: "text", nullable: true), Language = table.Column(type: "text", nullable: true), ChannelLayout = table.Column(type: "text", nullable: true), Profile = table.Column(type: "text", nullable: true), AspectRatio = table.Column(type: "text", nullable: true), Path = table.Column(type: "text", nullable: true), IsInterlaced = table.Column(type: "boolean", nullable: true), BitRate = table.Column(type: "integer", nullable: true), Channels = table.Column(type: "integer", nullable: true), SampleRate = table.Column(type: "integer", nullable: true), IsDefault = table.Column(type: "boolean", nullable: false), IsForced = table.Column(type: "boolean", nullable: false), IsExternal = table.Column(type: "boolean", nullable: false), Height = table.Column(type: "integer", nullable: true), Width = table.Column(type: "integer", nullable: true), AverageFrameRate = table.Column(type: "real", nullable: true), RealFrameRate = table.Column(type: "real", nullable: true), Level = table.Column(type: "real", nullable: true), PixelFormat = table.Column(type: "text", nullable: true), BitDepth = table.Column(type: "integer", nullable: true), IsAnamorphic = table.Column(type: "boolean", nullable: true), RefFrames = table.Column(type: "integer", nullable: true), CodecTag = table.Column(type: "text", nullable: true), Comment = table.Column(type: "text", nullable: true), NalLengthSize = table.Column(type: "text", nullable: true), IsAvc = table.Column(type: "boolean", nullable: true), Title = table.Column(type: "text", nullable: true), TimeBase = table.Column(type: "text", nullable: true), CodecTimeBase = table.Column(type: "text", nullable: true), ColorPrimaries = table.Column(type: "text", nullable: true), ColorSpace = table.Column(type: "text", nullable: true), ColorTransfer = table.Column(type: "text", nullable: true), DvVersionMajor = table.Column(type: "integer", nullable: true), DvVersionMinor = table.Column(type: "integer", nullable: true), DvProfile = table.Column(type: "integer", nullable: true), DvLevel = table.Column(type: "integer", nullable: true), RpuPresentFlag = table.Column(type: "integer", nullable: true), ElPresentFlag = table.Column(type: "integer", nullable: true), BlPresentFlag = table.Column(type: "integer", nullable: true), DvBlSignalCompatibilityId = table.Column(type: "integer", nullable: true), IsHearingImpaired = table.Column(type: "boolean", nullable: true), Rotation = table.Column(type: "integer", nullable: true), KeyFrames = table.Column(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(type: "uuid", nullable: false), ItemValueId = table.Column(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(type: "uuid", nullable: false), PeopleId = table.Column(type: "uuid", nullable: false), SortOrder = table.Column(type: "integer", nullable: true), ListOrder = table.Column(type: "integer", nullable: true), Role = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: false), DayOfWeek = table.Column(type: "integer", nullable: false), StartHour = table.Column(type: "double precision", nullable: false), EndHour = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: false), AccessToken = table.Column(type: "text", nullable: false), AppName = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), AppVersion = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), DeviceName = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), DeviceId = table.Column(type: "character varying(256)", maxLength: 256, nullable: false), IsActive = table.Column(type: "boolean", nullable: false), DateCreated = table.Column(type: "timestamp with time zone", nullable: false), DateModified = table.Column(type: "timestamp with time zone", nullable: false), DateLastActivity = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: false), ItemId = table.Column(type: "uuid", nullable: false), Client = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), ShowSidebar = table.Column(type: "boolean", nullable: false), ShowBackdrop = table.Column(type: "boolean", nullable: false), ScrollDirection = table.Column(type: "integer", nullable: false), IndexBy = table.Column(type: "integer", nullable: true), SkipForwardLength = table.Column(type: "integer", nullable: false), SkipBackwardLength = table.Column(type: "integer", nullable: false), ChromecastVersion = table.Column(type: "integer", nullable: false), EnableNextVideoInfoOverlay = table.Column(type: "boolean", nullable: false), DashboardTheme = table.Column(type: "character varying(32)", maxLength: 32, nullable: true), TvHome = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: true), Path = table.Column(type: "character varying(512)", maxLength: 512, nullable: false), LastModified = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: false), ItemId = table.Column(type: "uuid", nullable: false), Client = table.Column(type: "character varying(32)", maxLength: 32, nullable: false), ViewType = table.Column(type: "integer", nullable: false), RememberIndexing = table.Column(type: "boolean", nullable: false), IndexBy = table.Column(type: "integer", nullable: true), RememberSorting = table.Column(type: "boolean", nullable: false), SortBy = table.Column(type: "character varying(64)", maxLength: 64, nullable: false), SortOrder = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: true), Kind = table.Column(type: "integer", nullable: false), Value = table.Column(type: "boolean", nullable: false), RowVersion = table.Column(type: "bigint", nullable: false), Permission_Permissions_Guid = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), UserId = table.Column(type: "uuid", nullable: true), Kind = table.Column(type: "integer", nullable: false), Value = table.Column(type: "character varying(65535)", maxLength: 65535, nullable: false), RowVersion = table.Column(type: "bigint", nullable: false), Preference_Preferences_Guid = table.Column(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(type: "text", nullable: false), ItemId = table.Column(type: "uuid", nullable: false), UserId = table.Column(type: "uuid", nullable: false), Rating = table.Column(type: "double precision", nullable: true), PlaybackPositionTicks = table.Column(type: "bigint", nullable: false), PlayCount = table.Column(type: "integer", nullable: false), IsFavorite = table.Column(type: "boolean", nullable: false), LastPlayedDate = table.Column(type: "timestamp with time zone", nullable: true), Played = table.Column(type: "boolean", nullable: false), AudioStreamIndex = table.Column(type: "integer", nullable: true), SubtitleStreamIndex = table.Column(type: "integer", nullable: true), Likes = table.Column(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(type: "integer", nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), DisplayPreferencesId = table.Column(type: "integer", nullable: false), Order = table.Column(type: "integer", nullable: false), Type = table.Column(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"); // this was edited manually because "UserId" is a reserved name in pgsql migrationBuilder.CreateIndex( name: "IX_Permissions_UserId_Kind", table: "Permissions", columns: new[] { "UserId", "Kind" }, unique: true, filter: "\"Permissions\".\"UserId\" IS NOT NULL"); // this was edited manually because "UserId" is a reserved name in pgsql migrationBuilder.CreateIndex( name: "IX_Preferences_UserId_Kind", table: "Preferences", columns: new[] { "UserId", "Kind" }, unique: true, filter: "\"Preferences\".\"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); } /// 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"); } } }