20241009132112_BaseItemRefactor.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. using System;
  2. using Microsoft.EntityFrameworkCore.Migrations;
  3. #nullable disable
  4. namespace Jellyfin.Server.Implementations.Migrations
  5. {
  6. /// <inheritdoc />
  7. public partial class BaseItemRefactor : 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. LockedFields = table.Column<string>(type: "TEXT", nullable: true),
  50. Studios = table.Column<string>(type: "TEXT", nullable: true),
  51. Audio = table.Column<string>(type: "TEXT", nullable: true),
  52. ExternalServiceId = table.Column<string>(type: "TEXT", nullable: true),
  53. Tags = table.Column<string>(type: "TEXT", nullable: true),
  54. IsFolder = table.Column<bool>(type: "INTEGER", nullable: false),
  55. InheritedParentalRatingValue = table.Column<int>(type: "INTEGER", nullable: true),
  56. UnratedType = table.Column<string>(type: "TEXT", nullable: true),
  57. TrailerTypes = table.Column<string>(type: "TEXT", nullable: true),
  58. CriticRating = table.Column<float>(type: "REAL", nullable: true),
  59. CleanName = table.Column<string>(type: "TEXT", nullable: true),
  60. PresentationUniqueKey = table.Column<string>(type: "TEXT", nullable: true),
  61. OriginalTitle = table.Column<string>(type: "TEXT", nullable: true),
  62. PrimaryVersionId = table.Column<string>(type: "TEXT", nullable: true),
  63. DateLastMediaAdded = table.Column<DateTime>(type: "TEXT", nullable: true),
  64. Album = table.Column<string>(type: "TEXT", nullable: true),
  65. LUFS = table.Column<float>(type: "REAL", nullable: true),
  66. NormalizationGain = table.Column<float>(type: "REAL", nullable: true),
  67. IsVirtualItem = table.Column<bool>(type: "INTEGER", nullable: false),
  68. SeriesName = table.Column<string>(type: "TEXT", nullable: true),
  69. UserDataKey = table.Column<string>(type: "TEXT", nullable: true),
  70. SeasonName = table.Column<string>(type: "TEXT", nullable: true),
  71. ExternalSeriesId = table.Column<string>(type: "TEXT", nullable: true),
  72. Tagline = table.Column<string>(type: "TEXT", nullable: true),
  73. Images = table.Column<string>(type: "TEXT", nullable: true),
  74. ProductionLocations = table.Column<string>(type: "TEXT", nullable: true),
  75. ExtraIds = table.Column<string>(type: "TEXT", nullable: true),
  76. TotalBitrate = table.Column<int>(type: "INTEGER", nullable: true),
  77. ExtraType = table.Column<string>(type: "TEXT", nullable: true),
  78. Artists = table.Column<string>(type: "TEXT", nullable: true),
  79. AlbumArtists = table.Column<string>(type: "TEXT", nullable: true),
  80. ExternalId = table.Column<string>(type: "TEXT", nullable: true),
  81. SeriesPresentationUniqueKey = table.Column<string>(type: "TEXT", nullable: true),
  82. ShowId = table.Column<string>(type: "TEXT", nullable: true),
  83. OwnerId = table.Column<string>(type: "TEXT", nullable: true),
  84. Width = table.Column<int>(type: "INTEGER", nullable: true),
  85. Height = table.Column<int>(type: "INTEGER", nullable: true),
  86. Size = table.Column<long>(type: "INTEGER", nullable: true),
  87. ParentId = table.Column<Guid>(type: "TEXT", nullable: true),
  88. TopParentId = table.Column<Guid>(type: "TEXT", nullable: true),
  89. SeasonId = table.Column<Guid>(type: "TEXT", nullable: true),
  90. SeriesId = table.Column<Guid>(type: "TEXT", nullable: true)
  91. },
  92. constraints: table =>
  93. {
  94. table.PrimaryKey("PK_BaseItems", x => x.Id);
  95. });
  96. migrationBuilder.CreateTable(
  97. name: "AncestorIds",
  98. columns: table => new
  99. {
  100. Id = table.Column<Guid>(type: "TEXT", nullable: false),
  101. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  102. AncestorIdText = table.Column<string>(type: "TEXT", nullable: true)
  103. },
  104. constraints: table =>
  105. {
  106. table.PrimaryKey("PK_AncestorIds", x => new { x.ItemId, x.Id });
  107. table.ForeignKey(
  108. name: "FK_AncestorIds_BaseItems_ItemId",
  109. column: x => x.ItemId,
  110. principalTable: "BaseItems",
  111. principalColumn: "Id",
  112. onDelete: ReferentialAction.Cascade);
  113. });
  114. migrationBuilder.CreateTable(
  115. name: "AttachmentStreamInfos",
  116. columns: table => new
  117. {
  118. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  119. Index = table.Column<int>(type: "INTEGER", nullable: false),
  120. Codec = table.Column<string>(type: "TEXT", nullable: false),
  121. CodecTag = table.Column<string>(type: "TEXT", nullable: true),
  122. Comment = table.Column<string>(type: "TEXT", nullable: true),
  123. Filename = table.Column<string>(type: "TEXT", nullable: true),
  124. MimeType = table.Column<string>(type: "TEXT", nullable: true)
  125. },
  126. constraints: table =>
  127. {
  128. table.PrimaryKey("PK_AttachmentStreamInfos", x => new { x.ItemId, x.Index });
  129. table.ForeignKey(
  130. name: "FK_AttachmentStreamInfos_BaseItems_ItemId",
  131. column: x => x.ItemId,
  132. principalTable: "BaseItems",
  133. principalColumn: "Id",
  134. onDelete: ReferentialAction.Cascade);
  135. });
  136. migrationBuilder.CreateTable(
  137. name: "BaseItemProviders",
  138. columns: table => new
  139. {
  140. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  141. ProviderId = table.Column<string>(type: "TEXT", nullable: false),
  142. ProviderValue = table.Column<string>(type: "TEXT", nullable: false)
  143. },
  144. constraints: table =>
  145. {
  146. table.PrimaryKey("PK_BaseItemProviders", x => new { x.ItemId, x.ProviderId });
  147. table.ForeignKey(
  148. name: "FK_BaseItemProviders_BaseItems_ItemId",
  149. column: x => x.ItemId,
  150. principalTable: "BaseItems",
  151. principalColumn: "Id",
  152. onDelete: ReferentialAction.Cascade);
  153. });
  154. migrationBuilder.CreateTable(
  155. name: "Chapters",
  156. columns: table => new
  157. {
  158. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  159. ChapterIndex = table.Column<int>(type: "INTEGER", nullable: false),
  160. StartPositionTicks = table.Column<long>(type: "INTEGER", nullable: false),
  161. Name = table.Column<string>(type: "TEXT", nullable: true),
  162. ImagePath = table.Column<string>(type: "TEXT", nullable: true),
  163. ImageDateModified = table.Column<DateTime>(type: "TEXT", nullable: true)
  164. },
  165. constraints: table =>
  166. {
  167. table.PrimaryKey("PK_Chapters", x => new { x.ItemId, x.ChapterIndex });
  168. table.ForeignKey(
  169. name: "FK_Chapters_BaseItems_ItemId",
  170. column: x => x.ItemId,
  171. principalTable: "BaseItems",
  172. principalColumn: "Id",
  173. onDelete: ReferentialAction.Cascade);
  174. });
  175. migrationBuilder.CreateTable(
  176. name: "ItemValues",
  177. columns: table => new
  178. {
  179. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  180. Type = table.Column<int>(type: "INTEGER", nullable: false),
  181. Value = table.Column<string>(type: "TEXT", nullable: false),
  182. CleanValue = table.Column<string>(type: "TEXT", nullable: false)
  183. },
  184. constraints: table =>
  185. {
  186. table.PrimaryKey("PK_ItemValues", x => new { x.ItemId, x.Type, x.Value });
  187. table.ForeignKey(
  188. name: "FK_ItemValues_BaseItems_ItemId",
  189. column: x => x.ItemId,
  190. principalTable: "BaseItems",
  191. principalColumn: "Id",
  192. onDelete: ReferentialAction.Cascade);
  193. });
  194. migrationBuilder.CreateTable(
  195. name: "MediaStreamInfos",
  196. columns: table => new
  197. {
  198. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  199. StreamIndex = table.Column<int>(type: "INTEGER", nullable: false),
  200. StreamType = table.Column<string>(type: "TEXT", nullable: true),
  201. Codec = table.Column<string>(type: "TEXT", nullable: true),
  202. Language = table.Column<string>(type: "TEXT", nullable: true),
  203. ChannelLayout = table.Column<string>(type: "TEXT", nullable: true),
  204. Profile = table.Column<string>(type: "TEXT", nullable: true),
  205. AspectRatio = table.Column<string>(type: "TEXT", nullable: true),
  206. Path = table.Column<string>(type: "TEXT", nullable: true),
  207. IsInterlaced = table.Column<bool>(type: "INTEGER", nullable: false),
  208. BitRate = table.Column<int>(type: "INTEGER", nullable: false),
  209. Channels = table.Column<int>(type: "INTEGER", nullable: false),
  210. SampleRate = table.Column<int>(type: "INTEGER", nullable: false),
  211. IsDefault = table.Column<bool>(type: "INTEGER", nullable: false),
  212. IsForced = table.Column<bool>(type: "INTEGER", nullable: false),
  213. IsExternal = table.Column<bool>(type: "INTEGER", nullable: false),
  214. Height = table.Column<int>(type: "INTEGER", nullable: false),
  215. Width = table.Column<int>(type: "INTEGER", nullable: false),
  216. AverageFrameRate = table.Column<float>(type: "REAL", nullable: false),
  217. RealFrameRate = table.Column<float>(type: "REAL", nullable: false),
  218. Level = table.Column<float>(type: "REAL", nullable: false),
  219. PixelFormat = table.Column<string>(type: "TEXT", nullable: true),
  220. BitDepth = table.Column<int>(type: "INTEGER", nullable: false),
  221. IsAnamorphic = table.Column<bool>(type: "INTEGER", nullable: false),
  222. RefFrames = table.Column<int>(type: "INTEGER", nullable: false),
  223. CodecTag = table.Column<string>(type: "TEXT", nullable: false),
  224. Comment = table.Column<string>(type: "TEXT", nullable: false),
  225. NalLengthSize = table.Column<string>(type: "TEXT", nullable: false),
  226. IsAvc = table.Column<bool>(type: "INTEGER", nullable: false),
  227. Title = table.Column<string>(type: "TEXT", nullable: false),
  228. TimeBase = table.Column<string>(type: "TEXT", nullable: false),
  229. CodecTimeBase = table.Column<string>(type: "TEXT", nullable: false),
  230. ColorPrimaries = table.Column<string>(type: "TEXT", nullable: false),
  231. ColorSpace = table.Column<string>(type: "TEXT", nullable: false),
  232. ColorTransfer = table.Column<string>(type: "TEXT", nullable: false),
  233. DvVersionMajor = table.Column<int>(type: "INTEGER", nullable: false),
  234. DvVersionMinor = table.Column<int>(type: "INTEGER", nullable: false),
  235. DvProfile = table.Column<int>(type: "INTEGER", nullable: false),
  236. DvLevel = table.Column<int>(type: "INTEGER", nullable: false),
  237. RpuPresentFlag = table.Column<int>(type: "INTEGER", nullable: false),
  238. ElPresentFlag = table.Column<int>(type: "INTEGER", nullable: false),
  239. BlPresentFlag = table.Column<int>(type: "INTEGER", nullable: false),
  240. DvBlSignalCompatibilityId = table.Column<int>(type: "INTEGER", nullable: false),
  241. IsHearingImpaired = table.Column<bool>(type: "INTEGER", nullable: false),
  242. Rotation = table.Column<int>(type: "INTEGER", nullable: false),
  243. KeyFrames = table.Column<string>(type: "TEXT", nullable: true)
  244. },
  245. constraints: table =>
  246. {
  247. table.PrimaryKey("PK_MediaStreamInfos", x => new { x.ItemId, x.StreamIndex });
  248. table.ForeignKey(
  249. name: "FK_MediaStreamInfos_BaseItems_ItemId",
  250. column: x => x.ItemId,
  251. principalTable: "BaseItems",
  252. principalColumn: "Id",
  253. onDelete: ReferentialAction.Cascade);
  254. });
  255. migrationBuilder.CreateTable(
  256. name: "Peoples",
  257. columns: table => new
  258. {
  259. ItemId = table.Column<Guid>(type: "TEXT", nullable: false),
  260. Role = table.Column<string>(type: "TEXT", nullable: false),
  261. ListOrder = table.Column<int>(type: "INTEGER", nullable: false),
  262. Name = table.Column<string>(type: "TEXT", nullable: false),
  263. PersonType = table.Column<string>(type: "TEXT", nullable: true),
  264. SortOrder = table.Column<int>(type: "INTEGER", nullable: true)
  265. },
  266. constraints: table =>
  267. {
  268. table.PrimaryKey("PK_Peoples", x => new { x.ItemId, x.Role, x.ListOrder });
  269. table.ForeignKey(
  270. name: "FK_Peoples_BaseItems_ItemId",
  271. column: x => x.ItemId,
  272. principalTable: "BaseItems",
  273. principalColumn: "Id",
  274. onDelete: ReferentialAction.Cascade);
  275. });
  276. migrationBuilder.CreateTable(
  277. name: "UserData",
  278. columns: table => new
  279. {
  280. Key = table.Column<string>(type: "TEXT", nullable: false),
  281. UserId = table.Column<Guid>(type: "TEXT", nullable: false),
  282. Rating = table.Column<double>(type: "REAL", nullable: true),
  283. PlaybackPositionTicks = table.Column<long>(type: "INTEGER", nullable: false),
  284. PlayCount = table.Column<int>(type: "INTEGER", nullable: false),
  285. IsFavorite = table.Column<bool>(type: "INTEGER", nullable: false),
  286. LastPlayedDate = table.Column<DateTime>(type: "TEXT", nullable: true),
  287. Played = table.Column<bool>(type: "INTEGER", nullable: false),
  288. AudioStreamIndex = table.Column<int>(type: "INTEGER", nullable: true),
  289. SubtitleStreamIndex = table.Column<int>(type: "INTEGER", nullable: true),
  290. Likes = table.Column<bool>(type: "INTEGER", nullable: true),
  291. BaseItemEntityId = table.Column<Guid>(type: "TEXT", nullable: true)
  292. },
  293. constraints: table =>
  294. {
  295. table.PrimaryKey("PK_UserData", x => new { x.Key, x.UserId });
  296. table.ForeignKey(
  297. name: "FK_UserData_BaseItems_BaseItemEntityId",
  298. column: x => x.BaseItemEntityId,
  299. principalTable: "BaseItems",
  300. principalColumn: "Id");
  301. table.ForeignKey(
  302. name: "FK_UserData_Users_UserId",
  303. column: x => x.UserId,
  304. principalTable: "Users",
  305. principalColumn: "Id",
  306. onDelete: ReferentialAction.Cascade);
  307. });
  308. migrationBuilder.CreateIndex(
  309. name: "IX_AncestorIds_Id",
  310. table: "AncestorIds",
  311. column: "Id");
  312. migrationBuilder.CreateIndex(
  313. name: "IX_AncestorIds_ItemId_AncestorIdText",
  314. table: "AncestorIds",
  315. columns: new[] { "ItemId", "AncestorIdText" });
  316. migrationBuilder.CreateIndex(
  317. name: "IX_BaseItemProviders_ProviderId_ProviderValue_ItemId",
  318. table: "BaseItemProviders",
  319. columns: new[] { "ProviderId", "ProviderValue", "ItemId" });
  320. migrationBuilder.CreateIndex(
  321. name: "IX_BaseItems_Id_Type_IsFolder_IsVirtualItem",
  322. table: "BaseItems",
  323. columns: new[] { "Id", "Type", "IsFolder", "IsVirtualItem" });
  324. migrationBuilder.CreateIndex(
  325. name: "IX_BaseItems_IsFolder_TopParentId_IsVirtualItem_PresentationUniqueKey_DateCreated",
  326. table: "BaseItems",
  327. columns: new[] { "IsFolder", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated" });
  328. migrationBuilder.CreateIndex(
  329. name: "IX_BaseItems_MediaType_TopParentId_IsVirtualItem_PresentationUniqueKey",
  330. table: "BaseItems",
  331. columns: new[] { "MediaType", "TopParentId", "IsVirtualItem", "PresentationUniqueKey" });
  332. migrationBuilder.CreateIndex(
  333. name: "IX_BaseItems_ParentId",
  334. table: "BaseItems",
  335. column: "ParentId");
  336. migrationBuilder.CreateIndex(
  337. name: "IX_BaseItems_Path",
  338. table: "BaseItems",
  339. column: "Path");
  340. migrationBuilder.CreateIndex(
  341. name: "IX_BaseItems_PresentationUniqueKey",
  342. table: "BaseItems",
  343. column: "PresentationUniqueKey");
  344. migrationBuilder.CreateIndex(
  345. name: "IX_BaseItems_TopParentId_Id",
  346. table: "BaseItems",
  347. columns: new[] { "TopParentId", "Id" });
  348. migrationBuilder.CreateIndex(
  349. name: "IX_BaseItems_Type_SeriesPresentationUniqueKey_IsFolder_IsVirtualItem",
  350. table: "BaseItems",
  351. columns: new[] { "Type", "SeriesPresentationUniqueKey", "IsFolder", "IsVirtualItem" });
  352. migrationBuilder.CreateIndex(
  353. name: "IX_BaseItems_Type_SeriesPresentationUniqueKey_PresentationUniqueKey_SortName",
  354. table: "BaseItems",
  355. columns: new[] { "Type", "SeriesPresentationUniqueKey", "PresentationUniqueKey", "SortName" });
  356. migrationBuilder.CreateIndex(
  357. name: "IX_BaseItems_Type_TopParentId_Id",
  358. table: "BaseItems",
  359. columns: new[] { "Type", "TopParentId", "Id" });
  360. migrationBuilder.CreateIndex(
  361. name: "IX_BaseItems_Type_TopParentId_IsVirtualItem_PresentationUniqueKey_DateCreated",
  362. table: "BaseItems",
  363. columns: new[] { "Type", "TopParentId", "IsVirtualItem", "PresentationUniqueKey", "DateCreated" });
  364. migrationBuilder.CreateIndex(
  365. name: "IX_BaseItems_Type_TopParentId_PresentationUniqueKey",
  366. table: "BaseItems",
  367. columns: new[] { "Type", "TopParentId", "PresentationUniqueKey" });
  368. migrationBuilder.CreateIndex(
  369. name: "IX_BaseItems_Type_TopParentId_StartDate",
  370. table: "BaseItems",
  371. columns: new[] { "Type", "TopParentId", "StartDate" });
  372. migrationBuilder.CreateIndex(
  373. name: "IX_BaseItems_UserDataKey_Type",
  374. table: "BaseItems",
  375. columns: new[] { "UserDataKey", "Type" });
  376. migrationBuilder.CreateIndex(
  377. name: "IX_ItemValues_ItemId_Type_CleanValue",
  378. table: "ItemValues",
  379. columns: new[] { "ItemId", "Type", "CleanValue" });
  380. migrationBuilder.CreateIndex(
  381. name: "IX_MediaStreamInfos_StreamIndex",
  382. table: "MediaStreamInfos",
  383. column: "StreamIndex");
  384. migrationBuilder.CreateIndex(
  385. name: "IX_MediaStreamInfos_StreamIndex_StreamType",
  386. table: "MediaStreamInfos",
  387. columns: new[] { "StreamIndex", "StreamType" });
  388. migrationBuilder.CreateIndex(
  389. name: "IX_MediaStreamInfos_StreamIndex_StreamType_Language",
  390. table: "MediaStreamInfos",
  391. columns: new[] { "StreamIndex", "StreamType", "Language" });
  392. migrationBuilder.CreateIndex(
  393. name: "IX_MediaStreamInfos_StreamType",
  394. table: "MediaStreamInfos",
  395. column: "StreamType");
  396. migrationBuilder.CreateIndex(
  397. name: "IX_Peoples_ItemId_ListOrder",
  398. table: "Peoples",
  399. columns: new[] { "ItemId", "ListOrder" });
  400. migrationBuilder.CreateIndex(
  401. name: "IX_Peoples_Name",
  402. table: "Peoples",
  403. column: "Name");
  404. migrationBuilder.CreateIndex(
  405. name: "IX_UserData_BaseItemEntityId",
  406. table: "UserData",
  407. column: "BaseItemEntityId");
  408. migrationBuilder.CreateIndex(
  409. name: "IX_UserData_Key_UserId_IsFavorite",
  410. table: "UserData",
  411. columns: new[] { "Key", "UserId", "IsFavorite" });
  412. migrationBuilder.CreateIndex(
  413. name: "IX_UserData_Key_UserId_LastPlayedDate",
  414. table: "UserData",
  415. columns: new[] { "Key", "UserId", "LastPlayedDate" });
  416. migrationBuilder.CreateIndex(
  417. name: "IX_UserData_Key_UserId_PlaybackPositionTicks",
  418. table: "UserData",
  419. columns: new[] { "Key", "UserId", "PlaybackPositionTicks" });
  420. migrationBuilder.CreateIndex(
  421. name: "IX_UserData_Key_UserId_Played",
  422. table: "UserData",
  423. columns: new[] { "Key", "UserId", "Played" });
  424. migrationBuilder.CreateIndex(
  425. name: "IX_UserData_UserId",
  426. table: "UserData",
  427. column: "UserId");
  428. }
  429. /// <inheritdoc />
  430. protected override void Down(MigrationBuilder migrationBuilder)
  431. {
  432. migrationBuilder.DropTable(
  433. name: "AncestorIds");
  434. migrationBuilder.DropTable(
  435. name: "AttachmentStreamInfos");
  436. migrationBuilder.DropTable(
  437. name: "BaseItemProviders");
  438. migrationBuilder.DropTable(
  439. name: "Chapters");
  440. migrationBuilder.DropTable(
  441. name: "ItemValues");
  442. migrationBuilder.DropTable(
  443. name: "MediaStreamInfos");
  444. migrationBuilder.DropTable(
  445. name: "Peoples");
  446. migrationBuilder.DropTable(
  447. name: "UserData");
  448. migrationBuilder.DropTable(
  449. name: "BaseItems");
  450. }
  451. }
  452. }