20241010160703_LibraryDbMigration.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619
  1. using System;
  2. using Microsoft.EntityFrameworkCore.Migrations;
  3. #nullable disable
  4. namespace Jellyfin.Server.Implementations.Migrations
  5. {
  6. /// <inheritdoc />
  7. public partial class LibraryDbMigration : Migration
  8. {
  9. /// <inheritdoc />
  10. protected override void Up(MigrationBuilder migrationBuilder)
  11. {
  12. migrationBuilder.CreateTable(
  13. name: "BaseItems",
  14. columns: table => new
  15. {
  16. Id = table.Column<Guid>(type: "TEXT", nullable: false),
  17. Type = table.Column<string>(type: "TEXT", nullable: false),
  18. Data = table.Column<string>(type: "TEXT", nullable: true),
  19. Path = table.Column<string>(type: "TEXT", nullable: true),
  20. StartDate = table.Column<DateTime>(type: "TEXT", nullable: false),
  21. EndDate = table.Column<DateTime>(type: "TEXT", nullable: false),
  22. ChannelId = table.Column<string>(type: "TEXT", nullable: true),
  23. IsMovie = table.Column<bool>(type: "INTEGER", nullable: false),
  24. CommunityRating = table.Column<float>(type: "REAL", nullable: true),
  25. CustomRating = table.Column<string>(type: "TEXT", nullable: true),
  26. IndexNumber = table.Column<int>(type: "INTEGER", nullable: true),
  27. IsLocked = table.Column<bool>(type: "INTEGER", nullable: false),
  28. Name = table.Column<string>(type: "TEXT", nullable: true),
  29. OfficialRating = table.Column<string>(type: "TEXT", nullable: true),
  30. MediaType = table.Column<string>(type: "TEXT", nullable: true),
  31. Overview = table.Column<string>(type: "TEXT", nullable: true),
  32. ParentIndexNumber = table.Column<int>(type: "INTEGER", nullable: true),
  33. PremiereDate = table.Column<DateTime>(type: "TEXT", nullable: true),
  34. ProductionYear = table.Column<int>(type: "INTEGER", nullable: true),
  35. Genres = table.Column<string>(type: "TEXT", nullable: true),
  36. SortName = table.Column<string>(type: "TEXT", nullable: true),
  37. ForcedSortName = table.Column<string>(type: "TEXT", nullable: true),
  38. RunTimeTicks = table.Column<long>(type: "INTEGER", nullable: true),
  39. DateCreated = table.Column<DateTime>(type: "TEXT", nullable: true),
  40. DateModified = table.Column<DateTime>(type: "TEXT", nullable: true),
  41. IsSeries = table.Column<bool>(type: "INTEGER", nullable: false),
  42. EpisodeTitle = table.Column<string>(type: "TEXT", nullable: true),
  43. IsRepeat = table.Column<bool>(type: "INTEGER", nullable: false),
  44. PreferredMetadataLanguage = table.Column<string>(type: "TEXT", nullable: true),
  45. PreferredMetadataCountryCode = table.Column<string>(type: "TEXT", nullable: true),
  46. DateLastRefreshed = table.Column<DateTime>(type: "TEXT", nullable: true),
  47. DateLastSaved = table.Column<DateTime>(type: "TEXT", nullable: true),
  48. IsInMixedFolder = table.Column<bool>(type: "INTEGER", nullable: false),
  49. Studios = table.Column<string>(type: "TEXT", nullable: true),
  50. ExternalServiceId = table.Column<string>(type: "TEXT", nullable: true),
  51. Tags = table.Column<string>(type: "TEXT", nullable: true),
  52. IsFolder = table.Column<bool>(type: "INTEGER", nullable: false),
  53. InheritedParentalRatingValue = table.Column<int>(type: "INTEGER", nullable: true),
  54. UnratedType = table.Column<string>(type: "TEXT", nullable: true),
  55. CriticRating = table.Column<float>(type: "REAL", nullable: true),
  56. CleanName = table.Column<string>(type: "TEXT", nullable: true),
  57. PresentationUniqueKey = table.Column<string>(type: "TEXT", nullable: true),
  58. OriginalTitle = table.Column<string>(type: "TEXT", nullable: true),
  59. PrimaryVersionId = table.Column<string>(type: "TEXT", nullable: true),
  60. DateLastMediaAdded = table.Column<DateTime>(type: "TEXT", nullable: true),
  61. Album = table.Column<string>(type: "TEXT", nullable: true),
  62. LUFS = table.Column<float>(type: "REAL", nullable: true),
  63. NormalizationGain = table.Column<float>(type: "REAL", nullable: true),
  64. IsVirtualItem = table.Column<bool>(type: "INTEGER", nullable: false),
  65. SeriesName = table.Column<string>(type: "TEXT", nullable: true),
  66. UserDataKey = table.Column<string>(type: "TEXT", nullable: true),
  67. SeasonName = table.Column<string>(type: "TEXT", nullable: true),
  68. ExternalSeriesId = table.Column<string>(type: "TEXT", nullable: true),
  69. Tagline = table.Column<string>(type: "TEXT", nullable: true),
  70. ProductionLocations = table.Column<string>(type: "TEXT", nullable: true),
  71. ExtraIds = table.Column<string>(type: "TEXT", nullable: true),
  72. TotalBitrate = table.Column<int>(type: "INTEGER", nullable: true),
  73. ExtraType = table.Column<int>(type: "INTEGER", nullable: true),
  74. Artists = table.Column<string>(type: "TEXT", nullable: true),
  75. AlbumArtists = table.Column<string>(type: "TEXT", nullable: true),
  76. ExternalId = table.Column<string>(type: "TEXT", nullable: true),
  77. SeriesPresentationUniqueKey = table.Column<string>(type: "TEXT", nullable: true),
  78. ShowId = table.Column<string>(type: "TEXT", nullable: true),
  79. OwnerId = table.Column<string>(type: "TEXT", nullable: true),
  80. Width = table.Column<int>(type: "INTEGER", nullable: true),
  81. Height = table.Column<int>(type: "INTEGER", nullable: true),
  82. Size = table.Column<long>(type: "INTEGER", nullable: true),
  83. Audio = table.Column<int>(type: "INTEGER", nullable: true),
  84. ParentId = table.Column<Guid>(type: "TEXT", nullable: true),
  85. TopParentId = table.Column<Guid>(type: "TEXT", nullable: true),
  86. SeasonId = table.Column<Guid>(type: "TEXT", nullable: true),
  87. SeriesId = table.Column<Guid>(type: "TEXT", nullable: true)
  88. },
  89. constraints: table =>
  90. {
  91. table.PrimaryKey("PK_BaseItems", x => x.Id);
  92. });
  93. migrationBuilder.CreateTable(
  94. name: "ItemValues",
  95. columns: table => new
  96. {
  97. ItemValueId = table.Column<Guid>(type: "TEXT", nullable: false),
  98. Type = table.Column<int>(type: "INTEGER", nullable: false),
  99. Value = table.Column<string>(type: "TEXT", nullable: false),
  100. CleanValue = table.Column<string>(type: "TEXT", nullable: false)
  101. },
  102. constraints: table =>
  103. {
  104. table.PrimaryKey("PK_ItemValues", x => x.ItemValueId);
  105. });
  106. migrationBuilder.CreateTable(
  107. name: "AncestorIds",
  108. columns: table => new
  109. {
  110. ParentItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  111. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  112. BaseItemEntityId = table.Column<Guid>(type: "TEXT", nullable: true)
  113. },
  114. constraints: table =>
  115. {
  116. table.PrimaryKey("PK_AncestorIds", x => new { x.ItemId, x.ParentItemId });
  117. table.ForeignKey(
  118. name: "FK_AncestorIds_BaseItems_BaseItemEntityId",
  119. column: x => x.BaseItemEntityId,
  120. principalTable: "BaseItems",
  121. principalColumn: "Id");
  122. table.ForeignKey(
  123. name: "FK_AncestorIds_BaseItems_ItemId",
  124. column: x => x.ItemId,
  125. principalTable: "BaseItems",
  126. principalColumn: "Id",
  127. onDelete: ReferentialAction.Cascade);
  128. table.ForeignKey(
  129. name: "FK_AncestorIds_BaseItems_ParentItemId",
  130. column: x => x.ParentItemId,
  131. principalTable: "BaseItems",
  132. principalColumn: "Id",
  133. onDelete: ReferentialAction.Cascade);
  134. });
  135. migrationBuilder.CreateTable(
  136. name: "AttachmentStreamInfos",
  137. columns: table => new
  138. {
  139. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  140. Index = table.Column<int>(type: "INTEGER", nullable: false),
  141. Codec = table.Column<string>(type: "TEXT", nullable: false),
  142. CodecTag = table.Column<string>(type: "TEXT", nullable: true),
  143. Comment = table.Column<string>(type: "TEXT", nullable: true),
  144. Filename = table.Column<string>(type: "TEXT", nullable: true),
  145. MimeType = table.Column<string>(type: "TEXT", nullable: true)
  146. },
  147. constraints: table =>
  148. {
  149. table.PrimaryKey("PK_AttachmentStreamInfos", x => new { x.ItemId, x.Index });
  150. table.ForeignKey(
  151. name: "FK_AttachmentStreamInfos_BaseItems_ItemId",
  152. column: x => x.ItemId,
  153. principalTable: "BaseItems",
  154. principalColumn: "Id",
  155. onDelete: ReferentialAction.Cascade);
  156. });
  157. migrationBuilder.CreateTable(
  158. name: "BaseItemImageInfos",
  159. columns: table => new
  160. {
  161. Id = table.Column<Guid>(type: "TEXT", nullable: false),
  162. Path = table.Column<string>(type: "TEXT", nullable: false),
  163. DateModified = table.Column<DateTime>(type: "TEXT", nullable: false),
  164. ImageType = table.Column<int>(type: "INTEGER", nullable: false),
  165. Width = table.Column<int>(type: "INTEGER", nullable: false),
  166. Height = table.Column<int>(type: "INTEGER", nullable: false),
  167. Blurhash = table.Column<byte[]>(type: "BLOB", nullable: true),
  168. ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
  169. },
  170. constraints: table =>
  171. {
  172. table.PrimaryKey("PK_BaseItemImageInfos", x => x.Id);
  173. table.ForeignKey(
  174. name: "FK_BaseItemImageInfos_BaseItems_ItemId",
  175. column: x => x.ItemId,
  176. principalTable: "BaseItems",
  177. principalColumn: "Id",
  178. onDelete: ReferentialAction.Cascade);
  179. });
  180. migrationBuilder.CreateTable(
  181. name: "BaseItemMetadataFields",
  182. columns: table => new
  183. {
  184. Id = table.Column<int>(type: "INTEGER", nullable: false),
  185. ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
  186. },
  187. constraints: table =>
  188. {
  189. table.PrimaryKey("PK_BaseItemMetadataFields", x => new { x.Id, x.ItemId });
  190. table.ForeignKey(
  191. name: "FK_BaseItemMetadataFields_BaseItems_ItemId",
  192. column: x => x.ItemId,
  193. principalTable: "BaseItems",
  194. principalColumn: "Id",
  195. onDelete: ReferentialAction.Cascade);
  196. });
  197. migrationBuilder.CreateTable(
  198. name: "BaseItemProviders",
  199. columns: table => new
  200. {
  201. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  202. ProviderId = table.Column<string>(type: "TEXT", nullable: false),
  203. ProviderValue = table.Column<string>(type: "TEXT", nullable: false)
  204. },
  205. constraints: table =>
  206. {
  207. table.PrimaryKey("PK_BaseItemProviders", x => new { x.ItemId, x.ProviderId });
  208. table.ForeignKey(
  209. name: "FK_BaseItemProviders_BaseItems_ItemId",
  210. column: x => x.ItemId,
  211. principalTable: "BaseItems",
  212. principalColumn: "Id",
  213. onDelete: ReferentialAction.Cascade);
  214. });
  215. migrationBuilder.CreateTable(
  216. name: "BaseItemTrailerTypes",
  217. columns: table => new
  218. {
  219. Id = table.Column<int>(type: "INTEGER", nullable: false),
  220. ItemId = table.Column<Guid>(type: "TEXT", nullable: false)
  221. },
  222. constraints: table =>
  223. {
  224. table.PrimaryKey("PK_BaseItemTrailerTypes", x => new { x.Id, x.ItemId });
  225. table.ForeignKey(
  226. name: "FK_BaseItemTrailerTypes_BaseItems_ItemId",
  227. column: x => x.ItemId,
  228. principalTable: "BaseItems",
  229. principalColumn: "Id",
  230. onDelete: ReferentialAction.Cascade);
  231. });
  232. migrationBuilder.CreateTable(
  233. name: "Chapters",
  234. columns: table => new
  235. {
  236. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  237. ChapterIndex = table.Column<int>(type: "INTEGER", nullable: false),
  238. StartPositionTicks = table.Column<long>(type: "INTEGER", nullable: false),
  239. Name = table.Column<string>(type: "TEXT", nullable: true),
  240. ImagePath = table.Column<string>(type: "TEXT", nullable: true),
  241. ImageDateModified = table.Column<DateTime>(type: "TEXT", nullable: true)
  242. },
  243. constraints: table =>
  244. {
  245. table.PrimaryKey("PK_Chapters", x => new { x.ItemId, x.ChapterIndex });
  246. table.ForeignKey(
  247. name: "FK_Chapters_BaseItems_ItemId",
  248. column: x => x.ItemId,
  249. principalTable: "BaseItems",
  250. principalColumn: "Id",
  251. onDelete: ReferentialAction.Cascade);
  252. });
  253. migrationBuilder.CreateTable(
  254. name: "MediaStreamInfos",
  255. columns: table => new
  256. {
  257. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  258. StreamIndex = table.Column<int>(type: "INTEGER", nullable: false),
  259. StreamType = table.Column<int>(type: "INTEGER", nullable: true),
  260. Codec = table.Column<string>(type: "TEXT", nullable: true),
  261. Language = table.Column<string>(type: "TEXT", nullable: true),
  262. ChannelLayout = table.Column<string>(type: "TEXT", nullable: true),
  263. Profile = table.Column<string>(type: "TEXT", nullable: true),
  264. AspectRatio = table.Column<string>(type: "TEXT", nullable: true),
  265. Path = table.Column<string>(type: "TEXT", nullable: true),
  266. IsInterlaced = table.Column<bool>(type: "INTEGER", nullable: false),
  267. BitRate = table.Column<int>(type: "INTEGER", nullable: false),
  268. Channels = table.Column<int>(type: "INTEGER", nullable: false),
  269. SampleRate = table.Column<int>(type: "INTEGER", nullable: false),
  270. IsDefault = table.Column<bool>(type: "INTEGER", nullable: false),
  271. IsForced = table.Column<bool>(type: "INTEGER", nullable: false),
  272. IsExternal = table.Column<bool>(type: "INTEGER", nullable: false),
  273. Height = table.Column<int>(type: "INTEGER", nullable: false),
  274. Width = table.Column<int>(type: "INTEGER", nullable: false),
  275. AverageFrameRate = table.Column<float>(type: "REAL", nullable: false),
  276. RealFrameRate = table.Column<float>(type: "REAL", nullable: false),
  277. Level = table.Column<float>(type: "REAL", nullable: false),
  278. PixelFormat = table.Column<string>(type: "TEXT", nullable: true),
  279. BitDepth = table.Column<int>(type: "INTEGER", nullable: false),
  280. IsAnamorphic = table.Column<bool>(type: "INTEGER", nullable: false),
  281. RefFrames = table.Column<int>(type: "INTEGER", nullable: false),
  282. CodecTag = table.Column<string>(type: "TEXT", nullable: false),
  283. Comment = table.Column<string>(type: "TEXT", nullable: false),
  284. NalLengthSize = table.Column<string>(type: "TEXT", nullable: false),
  285. IsAvc = table.Column<bool>(type: "INTEGER", nullable: false),
  286. Title = table.Column<string>(type: "TEXT", nullable: false),
  287. TimeBase = table.Column<string>(type: "TEXT", nullable: false),
  288. CodecTimeBase = table.Column<string>(type: "TEXT", nullable: false),
  289. ColorPrimaries = table.Column<string>(type: "TEXT", nullable: false),
  290. ColorSpace = table.Column<string>(type: "TEXT", nullable: false),
  291. ColorTransfer = table.Column<string>(type: "TEXT", nullable: false),
  292. DvVersionMajor = table.Column<int>(type: "INTEGER", nullable: false),
  293. DvVersionMinor = table.Column<int>(type: "INTEGER", nullable: false),
  294. DvProfile = table.Column<int>(type: "INTEGER", nullable: false),
  295. DvLevel = table.Column<int>(type: "INTEGER", nullable: false),
  296. RpuPresentFlag = table.Column<int>(type: "INTEGER", nullable: false),
  297. ElPresentFlag = table.Column<int>(type: "INTEGER", nullable: false),
  298. BlPresentFlag = table.Column<int>(type: "INTEGER", nullable: false),
  299. DvBlSignalCompatibilityId = table.Column<int>(type: "INTEGER", nullable: false),
  300. IsHearingImpaired = table.Column<bool>(type: "INTEGER", nullable: false),
  301. Rotation = table.Column<int>(type: "INTEGER", nullable: false),
  302. KeyFrames = table.Column<string>(type: "TEXT", nullable: true)
  303. },
  304. constraints: table =>
  305. {
  306. table.PrimaryKey("PK_MediaStreamInfos", x => new { x.ItemId, x.StreamIndex });
  307. table.ForeignKey(
  308. name: "FK_MediaStreamInfos_BaseItems_ItemId",
  309. column: x => x.ItemId,
  310. principalTable: "BaseItems",
  311. principalColumn: "Id",
  312. onDelete: ReferentialAction.Cascade);
  313. });
  314. migrationBuilder.CreateTable(
  315. name: "Peoples",
  316. columns: table => new
  317. {
  318. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  319. Role = table.Column<string>(type: "TEXT", nullable: false),
  320. ListOrder = table.Column<int>(type: "INTEGER", nullable: false),
  321. Name = table.Column<string>(type: "TEXT", nullable: false),
  322. PersonType = table.Column<string>(type: "TEXT", nullable: true),
  323. SortOrder = table.Column<int>(type: "INTEGER", nullable: true)
  324. },
  325. constraints: table =>
  326. {
  327. table.PrimaryKey("PK_Peoples", x => new { x.ItemId, x.Role, x.ListOrder });
  328. table.ForeignKey(
  329. name: "FK_Peoples_BaseItems_ItemId",
  330. column: x => x.ItemId,
  331. principalTable: "BaseItems",
  332. principalColumn: "Id",
  333. onDelete: ReferentialAction.Cascade);
  334. });
  335. migrationBuilder.CreateTable(
  336. name: "UserData",
  337. columns: table => new
  338. {
  339. Key = table.Column<string>(type: "TEXT", nullable: false),
  340. UserId = table.Column<Guid>(type: "TEXT", nullable: false),
  341. Rating = table.Column<double>(type: "REAL", nullable: true),
  342. PlaybackPositionTicks = table.Column<long>(type: "INTEGER", nullable: false),
  343. PlayCount = table.Column<int>(type: "INTEGER", nullable: false),
  344. IsFavorite = table.Column<bool>(type: "INTEGER", nullable: false),
  345. LastPlayedDate = table.Column<DateTime>(type: "TEXT", nullable: true),
  346. Played = table.Column<bool>(type: "INTEGER", nullable: false),
  347. AudioStreamIndex = table.Column<int>(type: "INTEGER", nullable: true),
  348. SubtitleStreamIndex = table.Column<int>(type: "INTEGER", nullable: true),
  349. Likes = table.Column<bool>(type: "INTEGER", nullable: true),
  350. BaseItemEntityId = table.Column<Guid>(type: "TEXT", nullable: true)
  351. },
  352. constraints: table =>
  353. {
  354. table.PrimaryKey("PK_UserData", x => new { x.Key, x.UserId });
  355. table.ForeignKey(
  356. name: "FK_UserData_BaseItems_BaseItemEntityId",
  357. column: x => x.BaseItemEntityId,
  358. principalTable: "BaseItems",
  359. principalColumn: "Id");
  360. table.ForeignKey(
  361. name: "FK_UserData_Users_UserId",
  362. column: x => x.UserId,
  363. principalTable: "Users",
  364. principalColumn: "Id",
  365. onDelete: ReferentialAction.Cascade);
  366. });
  367. migrationBuilder.CreateTable(
  368. name: "ItemValuesMap",
  369. columns: table => new
  370. {
  371. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  372. ItemValueId = table.Column<Guid>(type: "TEXT", nullable: false)
  373. },
  374. constraints: table =>
  375. {
  376. table.PrimaryKey("PK_ItemValuesMap", x => new { x.ItemValueId, x.ItemId });
  377. table.ForeignKey(
  378. name: "FK_ItemValuesMap_BaseItems_ItemId",
  379. column: x => x.ItemId,
  380. principalTable: "BaseItems",
  381. principalColumn: "Id",
  382. onDelete: ReferentialAction.Cascade);
  383. table.ForeignKey(
  384. name: "FK_ItemValuesMap_ItemValues_ItemValueId",
  385. column: x => x.ItemValueId,
  386. principalTable: "ItemValues",
  387. principalColumn: "ItemValueId",
  388. onDelete: ReferentialAction.Cascade);
  389. });
  390. migrationBuilder.CreateIndex(
  391. name: "IX_AncestorIds_BaseItemEntityId",
  392. table: "AncestorIds",
  393. column: "BaseItemEntityId");
  394. migrationBuilder.CreateIndex(
  395. name: "IX_AncestorIds_ParentItemId",
  396. table: "AncestorIds",
  397. column: "ParentItemId");
  398. migrationBuilder.CreateIndex(
  399. name: "IX_BaseItemImageInfos_ItemId",
  400. table: "BaseItemImageInfos",
  401. column: "ItemId");
  402. migrationBuilder.CreateIndex(
  403. name: "IX_BaseItemMetadataFields_ItemId",
  404. table: "BaseItemMetadataFields",
  405. column: "ItemId");
  406. migrationBuilder.CreateIndex(
  407. name: "IX_BaseItemProviders_ProviderId_ProviderValue_ItemId",
  408. table: "BaseItemProviders",
  409. columns: new[] { "ProviderId", "ProviderValue", "ItemId" });
  410. migrationBuilder.CreateIndex(
  411. name: "IX_BaseItems_Id_Type_IsFolder_IsVirtualItem",
  412. table: "BaseItems",
  413. columns: new[] { "Id", "Type", "IsFolder", "IsVirtualItem" });
  414. migrationBuilder.CreateIndex(
  415. name: "IX_BaseItems_IsFolder_TopParentId_IsVirtualItem_PresentationUniqueKey_DateCreated",
  416. table: "BaseItems",
  417. columns: new[] { "IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated" });
  418. migrationBuilder.CreateIndex(
  419. name: "IX_BaseItems_MediaType_TopParentId_IsVirtualItem_PresentationUniqueKey",
  420. table: "BaseItems",
  421. columns: new[] { "MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey" });
  422. migrationBuilder.CreateIndex(
  423. name: "IX_BaseItems_ParentId",
  424. table: "BaseItems",
  425. column: "ParentId");
  426. migrationBuilder.CreateIndex(
  427. name: "IX_BaseItems_Path",
  428. table: "BaseItems",
  429. column: "Path");
  430. migrationBuilder.CreateIndex(
  431. name: "IX_BaseItems_PresentationUniqueKey",
  432. table: "BaseItems",
  433. column: "PresentationUniqueKey");
  434. migrationBuilder.CreateIndex(
  435. name: "IX_BaseItems_TopParentId_Id",
  436. table: "BaseItems",
  437. columns: new[] { "TopParentId", "Id" });
  438. migrationBuilder.CreateIndex(
  439. name: "IX_BaseItems_Type_SeriesPresentationUniqueKey_IsFolder_IsVirtualItem",
  440. table: "BaseItems",
  441. columns: new[] { "Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem" });
  442. migrationBuilder.CreateIndex(
  443. name: "IX_BaseItems_Type_SeriesPresentationUniqueKey_PresentationUniqueKey_SortName",
  444. table: "BaseItems",
  445. columns: new[] { "Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName" });
  446. migrationBuilder.CreateIndex(
  447. name: "IX_BaseItems_Type_TopParentId_Id",
  448. table: "BaseItems",
  449. columns: new[] { "Type", "TopParentId", "Id" });
  450. migrationBuilder.CreateIndex(
  451. name: "IX_BaseItems_Type_TopParentId_IsVirtualItem_PresentationUniqueKey_DateCreated",
  452. table: "BaseItems",
  453. columns: new[] { "Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated" });
  454. migrationBuilder.CreateIndex(
  455. name: "IX_BaseItems_Type_TopParentId_PresentationUniqueKey",
  456. table: "BaseItems",
  457. columns: new[] { "Type", "TopParentId", "PresentationUniqueKey" });
  458. migrationBuilder.CreateIndex(
  459. name: "IX_BaseItems_Type_TopParentId_StartDate",
  460. table: "BaseItems",
  461. columns: new[] { "Type", "TopParentId", "StartDate" });
  462. migrationBuilder.CreateIndex(
  463. name: "IX_BaseItems_UserDataKey_Type",
  464. table: "BaseItems",
  465. columns: new[] { "UserDataKey", "Type" });
  466. migrationBuilder.CreateIndex(
  467. name: "IX_BaseItemTrailerTypes_ItemId",
  468. table: "BaseItemTrailerTypes",
  469. column: "ItemId");
  470. migrationBuilder.CreateIndex(
  471. name: "IX_ItemValues_Type_CleanValue",
  472. table: "ItemValues",
  473. columns: new[] { "Type", "CleanValue" });
  474. migrationBuilder.CreateIndex(
  475. name: "IX_ItemValuesMap_ItemId",
  476. table: "ItemValuesMap",
  477. column: "ItemId");
  478. migrationBuilder.CreateIndex(
  479. name: "IX_MediaStreamInfos_StreamIndex",
  480. table: "MediaStreamInfos",
  481. column: "StreamIndex");
  482. migrationBuilder.CreateIndex(
  483. name: "IX_MediaStreamInfos_StreamIndex_StreamType",
  484. table: "MediaStreamInfos",
  485. columns: new[] { "StreamIndex", "StreamType" });
  486. migrationBuilder.CreateIndex(
  487. name: "IX_MediaStreamInfos_StreamIndex_StreamType_Language",
  488. table: "MediaStreamInfos",
  489. columns: new[] { "StreamIndex", "StreamType", "Language" });
  490. migrationBuilder.CreateIndex(
  491. name: "IX_MediaStreamInfos_StreamType",
  492. table: "MediaStreamInfos",
  493. column: "StreamType");
  494. migrationBuilder.CreateIndex(
  495. name: "IX_Peoples_ItemId_ListOrder",
  496. table: "Peoples",
  497. columns: new[] { "ItemId", "ListOrder" });
  498. migrationBuilder.CreateIndex(
  499. name: "IX_Peoples_Name",
  500. table: "Peoples",
  501. column: "Name");
  502. migrationBuilder.CreateIndex(
  503. name: "IX_UserData_BaseItemEntityId",
  504. table: "UserData",
  505. column: "BaseItemEntityId");
  506. migrationBuilder.CreateIndex(
  507. name: "IX_UserData_Key_UserId_IsFavorite",
  508. table: "UserData",
  509. columns: new[] { "Key", "UserId", "IsFavorite" });
  510. migrationBuilder.CreateIndex(
  511. name: "IX_UserData_Key_UserId_LastPlayedDate",
  512. table: "UserData",
  513. columns: new[] { "Key", "UserId", "LastPlayedDate" });
  514. migrationBuilder.CreateIndex(
  515. name: "IX_UserData_Key_UserId_PlaybackPositionTicks",
  516. table: "UserData",
  517. columns: new[] { "Key", "UserId", "PlaybackPositionTicks" });
  518. migrationBuilder.CreateIndex(
  519. name: "IX_UserData_Key_UserId_Played",
  520. table: "UserData",
  521. columns: new[] { "Key", "UserId", "Played" });
  522. migrationBuilder.CreateIndex(
  523. name: "IX_UserData_UserId",
  524. table: "UserData",
  525. column: "UserId");
  526. }
  527. /// <inheritdoc />
  528. protected override void Down(MigrationBuilder migrationBuilder)
  529. {
  530. migrationBuilder.DropTable(
  531. name: "AncestorIds");
  532. migrationBuilder.DropTable(
  533. name: "AttachmentStreamInfos");
  534. migrationBuilder.DropTable(
  535. name: "BaseItemImageInfos");
  536. migrationBuilder.DropTable(
  537. name: "BaseItemMetadataFields");
  538. migrationBuilder.DropTable(
  539. name: "BaseItemProviders");
  540. migrationBuilder.DropTable(
  541. name: "BaseItemTrailerTypes");
  542. migrationBuilder.DropTable(
  543. name: "Chapters");
  544. migrationBuilder.DropTable(
  545. name: "ItemValuesMap");
  546. migrationBuilder.DropTable(
  547. name: "MediaStreamInfos");
  548. migrationBuilder.DropTable(
  549. name: "Peoples");
  550. migrationBuilder.DropTable(
  551. name: "UserData");
  552. migrationBuilder.DropTable(
  553. name: "ItemValues");
  554. migrationBuilder.DropTable(
  555. name: "BaseItems");
  556. }
  557. }
  558. }