podverse-orm 5.1.0-alpha.9 → 5.1.3-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/dist/config/index.d.ts +5 -0
  2. package/dist/config/index.d.ts.map +1 -1
  3. package/dist/config/index.js +5 -0
  4. package/dist/db/index.d.ts.map +1 -1
  5. package/dist/db/index.js +0 -2
  6. package/dist/entities/account/account.d.ts +0 -2
  7. package/dist/entities/account/account.d.ts.map +1 -1
  8. package/dist/entities/account/account.js +2 -7
  9. package/dist/entities/channel/channel.d.ts +2 -1
  10. package/dist/entities/channel/channel.d.ts.map +1 -1
  11. package/dist/entities/channel/channel.js +8 -4
  12. package/dist/entities/channel/channelDescription.js +1 -1
  13. package/dist/entities/clip.d.ts +2 -0
  14. package/dist/entities/clip.d.ts.map +1 -1
  15. package/dist/entities/clip.js +10 -2
  16. package/dist/entities/item/item.d.ts +1 -0
  17. package/dist/entities/item/item.d.ts.map +1 -1
  18. package/dist/entities/item/item.js +6 -2
  19. package/dist/entities/item/itemChapter.d.ts +1 -0
  20. package/dist/entities/item/itemChapter.d.ts.map +1 -1
  21. package/dist/entities/item/itemChapter.js +6 -2
  22. package/dist/entities/item/itemDescription.js +1 -1
  23. package/dist/entities/item/itemEnclosure.js +1 -1
  24. package/dist/entities/item/itemSoundbite.js +2 -2
  25. package/dist/entities/playlist/playlist.d.ts +5 -0
  26. package/dist/entities/playlist/playlist.d.ts.map +1 -1
  27. package/dist/entities/playlist/playlist.js +19 -2
  28. package/dist/entities/playlist/playlistResource.d.ts +0 -3
  29. package/dist/entities/playlist/playlistResource.d.ts.map +1 -1
  30. package/dist/entities/playlist/playlistResource.js +0 -10
  31. package/dist/entities/queue/queue.d.ts +2 -0
  32. package/dist/entities/queue/queue.d.ts.map +1 -1
  33. package/dist/entities/queue/queue.js +10 -2
  34. package/dist/entities/queue/queueResource.d.ts +0 -3
  35. package/dist/entities/queue/queueResource.d.ts.map +1 -1
  36. package/dist/entities/queue/queueResource.js +0 -10
  37. package/dist/factories/loggerService.d.ts +3 -0
  38. package/dist/factories/loggerService.d.ts.map +1 -0
  39. package/dist/factories/loggerService.js +9 -0
  40. package/dist/index.d.ts +12 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +11 -1
  43. package/dist/lib/feedFlagHelpers.d.ts +9 -0
  44. package/dist/lib/feedFlagHelpers.d.ts.map +1 -0
  45. package/dist/lib/feedFlagHelpers.js +12 -0
  46. package/dist/lib/nanoid.d.ts +2 -0
  47. package/dist/lib/nanoid.d.ts.map +1 -0
  48. package/dist/lib/nanoid.js +11 -0
  49. package/dist/lib/password.d.ts +2 -0
  50. package/dist/lib/password.d.ts.map +1 -0
  51. package/dist/lib/password.js +24 -0
  52. package/dist/services/account/account.d.ts +1 -1
  53. package/dist/services/account/account.d.ts.map +1 -1
  54. package/dist/services/account/account.js +5 -4
  55. package/dist/services/account/accountFollowingChannel.d.ts +4 -0
  56. package/dist/services/account/accountFollowingChannel.d.ts.map +1 -1
  57. package/dist/services/account/accountFollowingChannel.js +9 -0
  58. package/dist/services/account/accountFollowingPlaylist.d.ts +1 -0
  59. package/dist/services/account/accountFollowingPlaylist.d.ts.map +1 -1
  60. package/dist/services/account/accountFollowingPlaylist.js +9 -0
  61. package/dist/services/base/baseManyService.d.ts +4 -0
  62. package/dist/services/base/baseManyService.d.ts.map +1 -1
  63. package/dist/services/base/baseManyService.js +10 -3
  64. package/dist/services/base/baseOneService.d.ts.map +1 -1
  65. package/dist/services/base/baseOneService.js +3 -3
  66. package/dist/services/category.d.ts.map +1 -1
  67. package/dist/services/category.js +10 -4
  68. package/dist/services/channel/channel.d.ts +8 -3
  69. package/dist/services/channel/channel.d.ts.map +1 -1
  70. package/dist/services/channel/channel.js +40 -5
  71. package/dist/services/channel/channelPodroll.d.ts +7 -0
  72. package/dist/services/channel/channelPodroll.d.ts.map +1 -1
  73. package/dist/services/channel/channelPodroll.js +74 -0
  74. package/dist/services/clip.d.ts +3 -3
  75. package/dist/services/clip.d.ts.map +1 -1
  76. package/dist/services/clip.js +20 -3
  77. package/dist/services/feed/feed.js +1 -1
  78. package/dist/services/item/item.d.ts +13 -3
  79. package/dist/services/item/item.d.ts.map +1 -1
  80. package/dist/services/item/item.js +147 -38
  81. package/dist/services/item/itemChapter.d.ts +6 -0
  82. package/dist/services/item/itemChapter.d.ts.map +1 -1
  83. package/dist/services/item/itemChapter.js +44 -3
  84. package/dist/services/item/itemSoundbite.d.ts +5 -2
  85. package/dist/services/item/itemSoundbite.d.ts.map +1 -1
  86. package/dist/services/item/itemSoundbite.js +26 -2
  87. package/dist/services/item/itemTranscript.d.ts +2 -1
  88. package/dist/services/item/itemTranscript.d.ts.map +1 -1
  89. package/dist/services/item/itemTranscript.js +5 -0
  90. package/dist/services/playlist/playlist.d.ts +9 -5
  91. package/dist/services/playlist/playlist.d.ts.map +1 -1
  92. package/dist/services/playlist/playlist.js +55 -8
  93. package/dist/services/playlist/playlistResource.d.ts +3 -12
  94. package/dist/services/playlist/playlistResource.d.ts.map +1 -1
  95. package/dist/services/playlist/playlistResource.js +50 -61
  96. package/dist/services/queue/queue.d.ts +2 -3
  97. package/dist/services/queue/queue.d.ts.map +1 -1
  98. package/dist/services/queue/queue.js +36 -10
  99. package/dist/services/queue/queueResource.d.ts +19 -23
  100. package/dist/services/queue/queueResource.d.ts.map +1 -1
  101. package/dist/services/queue/queueResource.js +181 -102
  102. package/dist/services/stats/baseStatsAggregated.d.ts +23 -2
  103. package/dist/services/stats/baseStatsAggregated.d.ts.map +1 -1
  104. package/dist/services/stats/baseStatsAggregated.js +27 -5
  105. package/dist/services/stats/statsAggregatedAccount.d.ts.map +1 -1
  106. package/dist/services/stats/statsAggregatedAccount.js +1 -2
  107. package/dist/services/stats/statsAggregatedChannel.d.ts +6 -0
  108. package/dist/services/stats/statsAggregatedChannel.d.ts.map +1 -1
  109. package/dist/services/stats/statsAggregatedChannel.js +29 -2
  110. package/dist/services/stats/statsAggregatedClip.d.ts +3 -0
  111. package/dist/services/stats/statsAggregatedClip.d.ts.map +1 -1
  112. package/dist/services/stats/statsAggregatedClip.js +22 -2
  113. package/dist/services/stats/statsAggregatedItem.d.ts +3 -0
  114. package/dist/services/stats/statsAggregatedItem.d.ts.map +1 -1
  115. package/dist/services/stats/statsAggregatedItem.js +16 -2
  116. package/dist/services/stats/statsAggregatedPlaylist.d.ts +7 -0
  117. package/dist/services/stats/statsAggregatedPlaylist.d.ts.map +1 -1
  118. package/dist/services/stats/statsAggregatedPlaylist.js +70 -2
  119. package/dist/services/stats/statsTrackAccountGuid.d.ts.map +1 -1
  120. package/package.json +16 -13
  121. package/dist/entities/account/accountAdminRoles.d.ts +0 -8
  122. package/dist/entities/account/accountAdminRoles.d.ts.map +0 -1
  123. package/dist/entities/account/accountAdminRoles.js +0 -37
@@ -1,4 +1,4 @@
1
- import { EntityManager } from 'typeorm';
1
+ import { EntityManager, FindManyOptions } from 'typeorm';
2
2
  import { Item } from '@orm/entities/item/item';
3
3
  import { ItemTranscript } from '@orm/entities/item/itemTranscript';
4
4
  import { BaseManyService } from '@orm/services/base/baseManyService';
@@ -8,6 +8,7 @@ type ItemTranscriptDto = {
8
8
  };
9
9
  export declare class ItemTranscriptService extends BaseManyService<ItemTranscript, 'item'> {
10
10
  constructor(transactionalEntityManager?: EntityManager);
11
+ getMany(options?: FindManyOptions<ItemTranscript>): Promise<ItemTranscript[]>;
11
12
  update(item: Item, dto: ItemTranscriptDto): Promise<ItemTranscript>;
12
13
  updateMany(item: Item, dtos: ItemTranscriptDto[]): Promise<ItemTranscript[]>;
13
14
  deleteAll(item: Item): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"itemTranscript.d.ts","sourceRoot":"","sources":["../../../src/services/item/itemTranscript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,qBAAa,qBAAsB,SAAQ,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC;gBACpE,0BAA0B,CAAC,EAAE,aAAa;IAIhD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKnE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAK5E,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C"}
1
+ {"version":3,"file":"itemTranscript.d.ts","sourceRoot":"","sources":["../../../src/services/item/itemTranscript.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,KAAK,iBAAiB,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,CAAA;AAED,qBAAa,qBAAsB,SAAQ,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC;gBACpE,0BAA0B,CAAC,EAAE,aAAa;IAIhD,OAAO,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAI7E,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAKnE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAK5E,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3C"}
@@ -16,6 +16,11 @@ class ItemTranscriptService extends baseManyService_1.BaseManyService {
16
16
  constructor(transactionalEntityManager) {
17
17
  super(itemTranscript_1.ItemTranscript, 'item', transactionalEntityManager);
18
18
  }
19
+ getMany(options) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ return this.repositoryRead.find(options);
22
+ });
23
+ }
19
24
  update(item, dto) {
20
25
  const _super = Object.create(null, {
21
26
  _update: { get: () => super._update }
@@ -5,18 +5,22 @@ import { BaseManyService } from '@orm/services/base/baseManyService';
5
5
  export type PlaylistDto = {
6
6
  title?: string;
7
7
  description?: string;
8
- medium: MediumEnum;
9
- sharable_status: SharableStatusEnum;
10
- is_default_favorites: boolean;
8
+ medium_id: MediumEnum;
9
+ sharable_status_id: SharableStatusEnum;
10
+ is_default_favorites?: boolean;
11
11
  };
12
12
  export declare class PlaylistService extends BaseManyService<Playlist, 'account'> {
13
13
  private accountService;
14
14
  constructor(transactionalEntityManager?: EntityManager);
15
15
  create(account_id: number, dto: PlaylistDto): Promise<Playlist>;
16
16
  update(account_id: number, playlist_id_text: string, dto: PlaylistDto): Promise<Playlist>;
17
+ updateLastUpdatedAndItemCount(playlist_id_text: string): Promise<Playlist>;
17
18
  delete(account_id: number, playlist_id_text: string): Promise<void>;
18
19
  getByIdText(playlist_id_text: string, options?: FindOneOptions<Playlist>): Promise<Playlist | null>;
19
- getMany(options?: FindManyOptions<Playlist>): Promise<Playlist[]>;
20
- getManyByAccount(account_id: number): Promise<Playlist[]>;
20
+ getManyPublic(options?: FindManyOptions<Playlist>): Promise<Playlist[]>;
21
+ getManyPrivate(account_id: number, options?: FindManyOptions<Playlist>): Promise<[Playlist[], number]>;
22
+ getOnePublic(playlist_id_text: string, options?: FindOneOptions<Playlist>): Promise<Playlist | null>;
23
+ getOnePrivate(account_id_text: string, playlist_id_text: string, options?: FindOneOptions<Playlist>): Promise<Playlist | null>;
24
+ getAllFavoritesPrivate(account_id: number): Promise<Playlist[]>;
21
25
  }
22
26
  //# sourceMappingURL=playlist.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playlist.d.ts","sourceRoot":"","sources":["../../../src/services/playlist/playlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,kBAAkB,CAAC;IACpC,oBAAoB,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF,qBAAa,eAAgB,SAAQ,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC;IACvE,OAAO,CAAC,cAAc,CAAiB;gBAE3B,0BAA0B,CAAC,EAAE,aAAa;IAKhD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU/D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAezF,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAOnG,OAAO,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjE,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAQhE"}
1
+ {"version":3,"file":"playlist.d.ts","sourceRoot":"","sources":["../../../src/services/playlist/playlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAO,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAIrE,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IACtB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC;IACvE,OAAO,CAAC,cAAc,CAAiB;gBAE3B,0BAA0B,CAAC,EAAE,aAAa;IAKhD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW/D,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAezF,6BAA6B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAa1E,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE,WAAW,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAOnG,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAUvE,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAE;IAYvG,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAYpG,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAY9H,sBAAsB,CAAC,UAAU,EAAE,MAAM;CAsBhD"}
@@ -10,9 +10,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.PlaylistService = void 0;
13
+ const podverse_helpers_1 = require("podverse-helpers");
14
+ const typeorm_1 = require("typeorm");
13
15
  const playlist_1 = require("@orm/entities/playlist/playlist");
14
16
  const baseManyService_1 = require("@orm/services/base/baseManyService");
15
17
  const account_1 = require("@orm/services/account/account");
18
+ const playlistResource_1 = require("./playlistResource");
16
19
  class PlaylistService extends baseManyService_1.BaseManyService {
17
20
  constructor(transactionalEntityManager) {
18
21
  super(playlist_1.Playlist, 'account', transactionalEntityManager);
@@ -42,6 +45,19 @@ class PlaylistService extends baseManyService_1.BaseManyService {
42
45
  return this._update(account, whereKeys, dto, undefined, playlist);
43
46
  });
44
47
  }
48
+ updateLastUpdatedAndItemCount(playlist_id_text) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const playlist = yield this.repositoryRead.findOne({ where: { id_text: playlist_id_text } });
51
+ if (!playlist) {
52
+ throw new Error("Playlist not found.");
53
+ }
54
+ const playlistResourceService = new playlistResource_1.PlaylistResourceService();
55
+ const itemCount = yield playlistResourceService.getAllByPlaylistIdTextCount(playlist_id_text);
56
+ playlist.item_count = itemCount;
57
+ playlist.last_updated = new Date();
58
+ return this.repositoryReadWrite.save(playlist);
59
+ });
60
+ }
45
61
  delete(account_id, playlist_id_text) {
46
62
  return __awaiter(this, void 0, void 0, function* () {
47
63
  const account = yield this.accountService.get(account_id);
@@ -56,18 +72,49 @@ class PlaylistService extends baseManyService_1.BaseManyService {
56
72
  return this.repositoryRead.findOne(Object.assign({ where: { id_text: playlist_id_text } }, options));
57
73
  });
58
74
  }
59
- getMany(options) {
75
+ getManyPublic(options) {
60
76
  return __awaiter(this, void 0, void 0, function* () {
61
- return this.repositoryRead.find(options);
77
+ return this.repositoryRead.find(Object.assign({ where: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.where), { sharable_status_id: podverse_helpers_1.SharableStatusEnum.Public }) }, options));
62
78
  });
63
79
  }
64
- getManyByAccount(account_id) {
80
+ getManyPrivate(account_id, options) {
65
81
  return __awaiter(this, void 0, void 0, function* () {
66
- const account = yield this.accountService.get(account_id);
67
- if (!account) {
68
- throw new Error("Account not found.");
69
- }
70
- return this._getAll(account);
82
+ return this.repositoryRead.findAndCount(Object.assign(Object.assign({}, options), { where: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.where), { account: {
83
+ id: account_id
84
+ } }) }));
85
+ });
86
+ }
87
+ getOnePublic(playlist_id_text, options) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ return this.repositoryRead.findOne(Object.assign({ where: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.where), { id_text: playlist_id_text, sharable_status_id: (0, typeorm_1.Not)(podverse_helpers_1.SharableStatusEnum.Private) }), relations: ['account', 'account.account_profile'] }, options));
90
+ });
91
+ }
92
+ getOnePrivate(account_id_text, playlist_id_text, options) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ return this.repositoryRead.findOne(Object.assign({ where: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.where), { id_text: playlist_id_text, account: { id_text: account_id_text } }), relations: ['account', 'account.account_profile'] }, options));
95
+ });
96
+ }
97
+ getAllFavoritesPrivate(account_id) {
98
+ return __awaiter(this, void 0, void 0, function* () {
99
+ const options = {
100
+ select: {
101
+ id: true,
102
+ id_text: true,
103
+ medium: true,
104
+ playlist_resources: {
105
+ clip_id: true,
106
+ item_id: true,
107
+ item_soundbite_id: true,
108
+ add_by_rss_hash_id: true
109
+ }
110
+ },
111
+ where: {
112
+ is_default_favorites: true,
113
+ account: { id: account_id }
114
+ },
115
+ relations: ['medium', 'playlist_resources']
116
+ };
117
+ return this.repositoryRead.find(options);
71
118
  });
72
119
  }
73
120
  }
@@ -1,14 +1,15 @@
1
- import { EntityManager } from 'typeorm';
1
+ import { EntityManager, FindManyOptions } from 'typeorm';
2
2
  import { PlaylistResource } from '@orm/entities/playlist/playlistResource';
3
3
  import { BaseManyService } from '@orm/services/base/baseManyService';
4
4
  export declare class PlaylistResourceService extends BaseManyService<PlaylistResource, 'playlist'> {
5
5
  private playlistService;
6
6
  private clipService;
7
7
  private itemService;
8
- private itemChapterService;
9
8
  private itemSoundbiteService;
10
9
  constructor(transactionalEntityManager?: EntityManager);
10
+ getManyByPlaylistIdText(playlist_id_text: string, options?: Partial<FindManyOptions<PlaylistResource>>): Promise<PlaylistResource[]>;
11
11
  getAllByPlaylistIdText(playlist_id_text: string): Promise<PlaylistResource[]>;
12
+ getAllByPlaylistIdTextCount(playlist_id_text: string): Promise<number>;
12
13
  getFirstAndLastItemsByPlaylistIdText(playlist_id_text: string): Promise<{
13
14
  firstItem: PlaylistResource | null;
14
15
  lastItem: PlaylistResource | null;
@@ -27,10 +28,6 @@ export declare class PlaylistResourceService extends BaseManyService<PlaylistRes
27
28
  addItemToPlaylistLast(playlist_id_text: string, item_id_text: string): Promise<PlaylistResource>;
28
29
  addItemToPlaylistBetween(playlist_id_text: string, item_id_text: string, position1: number, position2: number): Promise<PlaylistResource>;
29
30
  removeItemFromPlaylist(playlist_id_text: string, item_id_text: string): Promise<void>;
30
- addItemChapterToPlaylistFirst(playlist_id_text: string, item_chapter_id_text: string): Promise<PlaylistResource>;
31
- addItemChapterToPlaylistLast(playlist_id_text: string, item_chapter_id_text: string): Promise<PlaylistResource>;
32
- addItemChapterToPlaylistBetween(playlist_id_text: string, item_chapter_id_text: string, position1: number, position2: number): Promise<PlaylistResource>;
33
- removeItemChapterFromPlaylist(playlist_id_text: string, item_chapter_id_text: string): Promise<void>;
34
31
  addItemSoundbiteToPlaylistFirst(playlist_id_text: string, item_soundbite_id_text: string): Promise<PlaylistResource>;
35
32
  addItemSoundbiteToPlaylistLast(playlist_id_text: string, item_soundbite_id_text: string): Promise<PlaylistResource>;
36
33
  addItemSoundbiteToPlaylistBetween(playlist_id_text: string, item_soundbite_id_text: string, position1: number, position2: number): Promise<PlaylistResource>;
@@ -41,11 +38,5 @@ export declare class PlaylistResourceService extends BaseManyService<PlaylistRes
41
38
  addItemAddByRSSToPlaylistLast(playlist_id_text: string, add_by_rss_resource_data: object): Promise<PlaylistResource>;
42
39
  addItemAddByRSSToPlaylistBetween(playlist_id_text: string, add_by_rss_resource_data: object, position1: number, position2: number): Promise<PlaylistResource>;
43
40
  removeItemAddByRSSFromPlaylist(playlist_id_text: string, add_by_rss_hash_id: string): Promise<void>;
44
- getResourcesByParams(params: {
45
- clip_id?: number;
46
- item_id?: number;
47
- item_chapter_id?: number;
48
- item_soundbite_id?: number;
49
- }): Promise<PlaylistResource[]>;
50
41
  }
51
42
  //# sourceMappingURL=playlistResource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"playlistResource.d.ts","sourceRoot":"","sources":["../../../src/services/playlist/playlistResource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playlistResource.d.ts","sourceRoot":"","sources":["../../../src/services/playlist/playlistResource.ts"],"names":[],"mappings":"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"}
@@ -18,8 +18,8 @@ const playlist_1 = require("./playlist");
18
18
  const baseManyService_1 = require("@orm/services/base/baseManyService");
19
19
  const clip_1 = require("../clip");
20
20
  const item_1 = require("../item/item");
21
- const itemChapter_1 = require("../item/itemChapter");
22
21
  const itemSoundbite_1 = require("../item/itemSoundbite");
22
+ const queueResource_1 = require("../queue/queueResource");
23
23
  const PLAYLIST_LIST_POSITION_INCREMENT = 0.00000001;
24
24
  class PlaylistResourceService extends baseManyService_1.BaseManyService {
25
25
  constructor(transactionalEntityManager) {
@@ -27,9 +27,22 @@ class PlaylistResourceService extends baseManyService_1.BaseManyService {
27
27
  this.playlistService = new playlist_1.PlaylistService(transactionalEntityManager);
28
28
  this.clipService = new clip_1.ClipService(transactionalEntityManager);
29
29
  this.itemService = new item_1.ItemService();
30
- this.itemChapterService = new itemChapter_1.ItemChapterService(transactionalEntityManager);
31
30
  this.itemSoundbiteService = new itemSoundbite_1.ItemSoundbiteService(transactionalEntityManager);
32
31
  }
32
+ getManyByPlaylistIdText(playlist_id_text_1) {
33
+ return __awaiter(this, arguments, void 0, function* (playlist_id_text, options = {}) {
34
+ const playlist = yield this.playlistService.getByIdText(playlist_id_text);
35
+ if (!playlist) {
36
+ throw new Error("Playlist not found.");
37
+ }
38
+ const defaultOptions = {
39
+ where: { playlist: { id: playlist.id } },
40
+ order: { list_position: 'ASC' },
41
+ relations: queueResource_1.listResourceRelations
42
+ };
43
+ return this.repositoryRead.find(Object.assign(Object.assign(Object.assign({}, defaultOptions), options), { where: Object.assign(Object.assign({}, defaultOptions.where), (options.where || {})) }));
44
+ });
45
+ }
33
46
  getAllByPlaylistIdText(playlist_id_text) {
34
47
  return __awaiter(this, void 0, void 0, function* () {
35
48
  const playlist = yield this.playlistService.getByIdText(playlist_id_text);
@@ -39,11 +52,20 @@ class PlaylistResourceService extends baseManyService_1.BaseManyService {
39
52
  const options = {
40
53
  where: { playlist: { id: playlist.id } },
41
54
  order: { list_position: 'ASC' },
42
- relations: ['clip', 'item', 'item_chapter', 'item_soundbite']
55
+ relations: queueResource_1.listResourceRelations
43
56
  };
44
57
  return this.repositoryRead.find(options);
45
58
  });
46
59
  }
60
+ getAllByPlaylistIdTextCount(playlist_id_text) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const playlist = yield this.playlistService.getByIdText(playlist_id_text);
63
+ if (!playlist) {
64
+ throw new Error("Playlist not found.");
65
+ }
66
+ return this.repositoryRead.count({ where: { playlist: { id: playlist.id } } });
67
+ });
68
+ }
47
69
  getFirstAndLastItemsByPlaylistIdText(playlist_id_text) {
48
70
  return __awaiter(this, void 0, void 0, function* () {
49
71
  const playlist = yield this.playlistService.getByIdText(playlist_id_text);
@@ -74,10 +96,12 @@ class PlaylistResourceService extends baseManyService_1.BaseManyService {
74
96
  const { firstItem, lastItem } = yield this.getFirstAndLastItemsByPlaylistIdText(playlist_id_text);
75
97
  const list_position = calculatePosition(firstItem, lastItem);
76
98
  const finalDto = {
77
- [resourceKey]: resource,
99
+ [resourceKey]: resource.id,
78
100
  list_position
79
101
  };
80
- return this._update(playlist, ['playlist', resourceKey], finalDto);
102
+ const results = yield this._update(playlist, ['playlist', resourceKey], finalDto);
103
+ yield this.playlistService.updateLastUpdatedAndItemCount(playlist.id_text);
104
+ return results;
81
105
  });
82
106
  }
83
107
  addResourceToPlaylistHelper(playlist_id_text, resource_id_text, resourceService, resourceKey, calculatePosition) {
@@ -128,87 +152,69 @@ class PlaylistResourceService extends baseManyService_1.BaseManyService {
128
152
  if (!resource) {
129
153
  throw new Error(`${resourceKey} not found.`);
130
154
  }
131
- return this._delete(playlist, { [`${resourceKey}_id`]: resource.id });
155
+ const results = yield this._delete(playlist, { [resourceKey]: resource.id });
156
+ yield this.playlistService.updateLastUpdatedAndItemCount(playlist.id_text);
157
+ return results;
132
158
  });
133
159
  }
134
160
  addClipToPlaylistFirst(playlist_id_text, clip_id_text) {
135
161
  return __awaiter(this, void 0, void 0, function* () {
136
- return this.addResourceToPlaylistFirst(playlist_id_text, clip_id_text, this.clipService, 'clip');
162
+ return this.addResourceToPlaylistFirst(playlist_id_text, clip_id_text, this.clipService, 'clip_id');
137
163
  });
138
164
  }
139
165
  addClipToPlaylistLast(playlist_id_text, clip_id_text) {
140
166
  return __awaiter(this, void 0, void 0, function* () {
141
- return this.addResourceToPlaylistLast(playlist_id_text, clip_id_text, this.clipService, 'clip');
167
+ return this.addResourceToPlaylistLast(playlist_id_text, clip_id_text, this.clipService, 'clip_id');
142
168
  });
143
169
  }
144
170
  addClipToPlaylistBetween(playlist_id_text, clip_id_text, position1, position2) {
145
171
  return __awaiter(this, void 0, void 0, function* () {
146
- return this.addResourceToPlaylistBetween(playlist_id_text, clip_id_text, this.clipService, 'clip', position1, position2);
172
+ return this.addResourceToPlaylistBetween(playlist_id_text, clip_id_text, this.clipService, 'clip_id', position1, position2);
147
173
  });
148
174
  }
149
175
  removeClipFromPlaylist(playlist_id_text, clip_id_text) {
150
176
  return __awaiter(this, void 0, void 0, function* () {
151
- return this.removeResourceFromPlaylist(playlist_id_text, clip_id_text, this.clipService, 'clip');
177
+ return this.removeResourceFromPlaylist(playlist_id_text, clip_id_text, this.clipService, 'clip_id');
152
178
  });
153
179
  }
154
180
  addItemToPlaylistFirst(playlist_id_text, item_id_text) {
155
181
  return __awaiter(this, void 0, void 0, function* () {
156
- return this.addResourceToPlaylistFirst(playlist_id_text, item_id_text, this.itemService, 'item');
182
+ return this.addResourceToPlaylistFirst(playlist_id_text, item_id_text, this.itemService, 'item_id');
157
183
  });
158
184
  }
159
185
  addItemToPlaylistLast(playlist_id_text, item_id_text) {
160
186
  return __awaiter(this, void 0, void 0, function* () {
161
- return this.addResourceToPlaylistLast(playlist_id_text, item_id_text, this.itemService, 'item');
187
+ return this.addResourceToPlaylistLast(playlist_id_text, item_id_text, this.itemService, 'item_id');
162
188
  });
163
189
  }
164
190
  addItemToPlaylistBetween(playlist_id_text, item_id_text, position1, position2) {
165
191
  return __awaiter(this, void 0, void 0, function* () {
166
- return this.addResourceToPlaylistBetween(playlist_id_text, item_id_text, this.itemService, 'item', position1, position2);
192
+ return this.addResourceToPlaylistBetween(playlist_id_text, item_id_text, this.itemService, 'item_id', position1, position2);
167
193
  });
168
194
  }
169
195
  removeItemFromPlaylist(playlist_id_text, item_id_text) {
170
196
  return __awaiter(this, void 0, void 0, function* () {
171
- return this.removeResourceFromPlaylist(playlist_id_text, item_id_text, this.itemService, 'item');
172
- });
173
- }
174
- addItemChapterToPlaylistFirst(playlist_id_text, item_chapter_id_text) {
175
- return __awaiter(this, void 0, void 0, function* () {
176
- return this.addResourceToPlaylistFirst(playlist_id_text, item_chapter_id_text, this.itemChapterService, 'item_chapter');
177
- });
178
- }
179
- addItemChapterToPlaylistLast(playlist_id_text, item_chapter_id_text) {
180
- return __awaiter(this, void 0, void 0, function* () {
181
- return this.addResourceToPlaylistLast(playlist_id_text, item_chapter_id_text, this.itemChapterService, 'item_chapter');
182
- });
183
- }
184
- addItemChapterToPlaylistBetween(playlist_id_text, item_chapter_id_text, position1, position2) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- return this.addResourceToPlaylistBetween(playlist_id_text, item_chapter_id_text, this.itemChapterService, 'item_chapter', position1, position2);
187
- });
188
- }
189
- removeItemChapterFromPlaylist(playlist_id_text, item_chapter_id_text) {
190
- return __awaiter(this, void 0, void 0, function* () {
191
- return this.removeResourceFromPlaylist(playlist_id_text, item_chapter_id_text, this.itemChapterService, 'item_chapter');
197
+ return this.removeResourceFromPlaylist(playlist_id_text, item_id_text, this.itemService, 'item_id');
192
198
  });
193
199
  }
194
200
  addItemSoundbiteToPlaylistFirst(playlist_id_text, item_soundbite_id_text) {
195
201
  return __awaiter(this, void 0, void 0, function* () {
196
- return this.addResourceToPlaylistFirst(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite');
202
+ return this.addResourceToPlaylistFirst(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite_id');
197
203
  });
198
204
  }
199
205
  addItemSoundbiteToPlaylistLast(playlist_id_text, item_soundbite_id_text) {
200
206
  return __awaiter(this, void 0, void 0, function* () {
201
- return this.addResourceToPlaylistLast(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite');
207
+ return this.addResourceToPlaylistLast(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite_id');
202
208
  });
203
209
  }
204
210
  addItemSoundbiteToPlaylistBetween(playlist_id_text, item_soundbite_id_text, position1, position2) {
205
211
  return __awaiter(this, void 0, void 0, function* () {
206
- return this.addResourceToPlaylistBetween(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite', position1, position2);
212
+ return this.addResourceToPlaylistBetween(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite_id', position1, position2);
207
213
  });
208
214
  }
209
215
  removeItemSoundbiteFromPlaylist(playlist_id_text, item_soundbite_id_text) {
210
216
  return __awaiter(this, void 0, void 0, function* () {
211
- return this.removeResourceFromPlaylist(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite');
217
+ return this.removeResourceFromPlaylist(playlist_id_text, item_soundbite_id_text, this.itemSoundbiteService, 'item_soundbite_id');
212
218
  });
213
219
  }
214
220
  addItemAddByRSSToPlaylist(playlist_id_text, add_by_rss_resource_data, calculatePosition) {
@@ -225,7 +231,9 @@ class PlaylistResourceService extends baseManyService_1.BaseManyService {
225
231
  list_position,
226
232
  add_by_rss_hash_id
227
233
  };
228
- return this._update(playlist, ['playlist', 'add_by_rss_hash_id'], finalDto);
234
+ const results = yield this._update(playlist, ['playlist', 'add_by_rss_hash_id'], finalDto);
235
+ yield this.playlistService.updateLastUpdatedAndItemCount(playlist.id_text);
236
+ return results;
229
237
  });
230
238
  }
231
239
  addItemAddByRSSToPlaylistHelper(playlist_id_text, add_by_rss_resource_data, calculatePosition) {
@@ -272,28 +280,9 @@ class PlaylistResourceService extends baseManyService_1.BaseManyService {
272
280
  if (!playlist) {
273
281
  throw new Error("Playlist not found.");
274
282
  }
275
- return this._delete(playlist, { add_by_rss_hash_id });
276
- });
277
- }
278
- getResourcesByParams(params) {
279
- return __awaiter(this, void 0, void 0, function* () {
280
- const whereClause = {};
281
- if (params.clip_id) {
282
- whereClause.clip = { id: params.clip_id };
283
- }
284
- if (params.item_id) {
285
- whereClause.item = { id: params.item_id };
286
- }
287
- if (params.item_chapter_id) {
288
- whereClause.item_chapter = { id: params.item_chapter_id };
289
- }
290
- if (params.item_soundbite_id) {
291
- whereClause.item_soundbite = { id: params.item_soundbite_id };
292
- }
293
- return this.repositoryRead.find({
294
- where: whereClause,
295
- relations: ['clip', 'item', 'item_chapter', 'item_soundbite', 'playlist']
296
- });
283
+ const results = yield this._delete(playlist, { add_by_rss_hash_id });
284
+ yield this.playlistService.updateLastUpdatedAndItemCount(playlist.id_text);
285
+ return results;
297
286
  });
298
287
  }
299
288
  }
@@ -1,16 +1,15 @@
1
- import { MediumEnum } from 'podverse-helpers';
2
1
  import { EntityManager, FindManyOptions, FindOneOptions } from 'typeorm';
3
2
  import { Queue } from '@orm/entities/queue/queue';
4
3
  import { BaseManyService } from '@orm/services/base/baseManyService';
5
4
  export type QueueDto = {
6
- medium: MediumEnum;
5
+ medium_id: number;
7
6
  };
8
7
  export declare class QueueService extends BaseManyService<Queue, 'account'> {
9
8
  private accountService;
10
9
  constructor(transactionalEntityManager?: EntityManager);
11
10
  create(account_id: number, dto: QueueDto): Promise<Queue>;
12
- delete(account_id: number, queue_id_text: string): Promise<void>;
13
11
  getByIdText(queue_id_text: string, config?: FindOneOptions<Queue>): Promise<Queue | null>;
14
12
  getAllPrivate(account_id: number, config?: FindManyOptions<Queue>): Promise<Queue[]>;
13
+ updateIsActiveQueue(account_id: number, queue_id_text: string, is_active_queue: boolean): Promise<void>;
15
14
  }
16
15
  //# sourceMappingURL=queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/services/queue/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,qBAAa,YAAa,SAAQ,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC;IACjE,OAAO,CAAC,cAAc,CAAiB;gBAE3B,0BAA0B,CAAC,EAAE,aAAa;IAKhD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAUzD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAShE,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IASzF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAQ3F"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/services/queue/queue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qBAAa,YAAa,SAAQ,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC;IACjE,OAAO,CAAC,cAAc,CAAiB;gBAE3B,0BAA0B,CAAC,EAAE,aAAa;IAKhD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAUzD,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IASzF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA4BpF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAuB9G"}
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.QueueService = void 0;
13
+ const podverse_helpers_1 = require("podverse-helpers");
13
14
  const queue_1 = require("@orm/entities/queue/queue");
14
15
  const baseManyService_1 = require("@orm/services/base/baseManyService");
15
16
  const account_1 = require("@orm/services/account/account");
@@ -28,15 +29,6 @@ class QueueService extends baseManyService_1.BaseManyService {
28
29
  return this._update(account, whereKeys, dto);
29
30
  });
30
31
  }
31
- delete(account_id, queue_id_text) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- const account = yield this.accountService.get(account_id);
34
- if (!account) {
35
- throw new Error("Account not found.");
36
- }
37
- return this._delete(account, { id_text: queue_id_text });
38
- });
39
- }
40
32
  getByIdText(queue_id_text, config) {
41
33
  return __awaiter(this, void 0, void 0, function* () {
42
34
  return this.repositoryRead.findOne(Object.assign({ where: {
@@ -50,7 +42,41 @@ class QueueService extends baseManyService_1.BaseManyService {
50
42
  if (!account) {
51
43
  throw new Error("Account not found.");
52
44
  }
53
- return this._getAll(account, config);
45
+ let results = yield this._getAll(account, config);
46
+ const existingMediums = new Set(results.map(q => Number(q.medium_id)));
47
+ const missingMediums = [];
48
+ for (const mediumKey of Object.keys(podverse_helpers_1.supportedQueueMediums)) {
49
+ const medium_id = Number(mediumKey);
50
+ if (podverse_helpers_1.supportedQueueMediums[medium_id] && !existingMediums.has(medium_id)) {
51
+ missingMediums.push(medium_id);
52
+ }
53
+ }
54
+ if (missingMediums.length > 0) {
55
+ for (const medium_id of missingMediums) {
56
+ yield this.create(account_id, { medium_id });
57
+ }
58
+ results = yield this._getAll(account, config);
59
+ }
60
+ return results;
61
+ });
62
+ }
63
+ updateIsActiveQueue(account_id, queue_id_text, is_active_queue) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ const queues = yield this.getAllPrivate(account_id);
66
+ const currentActiveQueue = queues.find(q => q.is_active_queue);
67
+ const targetQueue = queues.find(q => q.id_text === queue_id_text);
68
+ if (!targetQueue) {
69
+ throw new Error(`Queue with id_text ${queue_id_text} not found for account ${account_id}`);
70
+ }
71
+ if (is_active_queue && targetQueue.is_active_queue) {
72
+ return;
73
+ }
74
+ if (currentActiveQueue && currentActiveQueue.id_text !== queue_id_text) {
75
+ yield this.repositoryReadWrite.update({ id: currentActiveQueue.id }, { is_active_queue: false });
76
+ }
77
+ if (targetQueue.is_active_queue !== is_active_queue) {
78
+ yield this.repositoryReadWrite.update({ id: targetQueue.id }, { is_active_queue });
79
+ }
54
80
  });
55
81
  }
56
82
  }
@@ -1,14 +1,20 @@
1
- import { EntityManager } from 'typeorm';
1
+ import { QueueExtraParams } from 'podverse-helpers';
2
+ import { EntityManager, FindManyOptions } from 'typeorm';
2
3
  import { QueueResource } from '@orm/entities/queue/queueResource';
3
4
  import { BaseManyService } from '@orm/services/base/baseManyService';
5
+ export declare const listResourceRelations: string[];
4
6
  export declare class QueueResourceService extends BaseManyService<QueueResource, 'queue'> {
5
7
  private queueService;
6
8
  private clipService;
7
9
  private itemService;
8
- private itemChapterService;
9
10
  private itemSoundbiteService;
11
+ private static queueLocks;
12
+ private getQueueLock;
10
13
  constructor(transactionalEntityManager?: EntityManager);
11
- getAllByQueueId(queue_id_text: string): Promise<QueueResource[]>;
14
+ getAllByAccountAbridged(account_id: number): Promise<any[]>;
15
+ getNowPlayingByQueueIdText(queue_id_text: string): Promise<QueueResource | null>;
16
+ getAllUpcomingByQueueIdText(queue_id_text: string): Promise<QueueResource[]>;
17
+ getHistoryResourcesByQueueIdText(queue_id_text: string, options?: FindManyOptions<QueueResource>): Promise<[QueueResource[], number]>;
12
18
  getItemsByQueueIdTextAndPosition(queue_id_text: string, position: string): Promise<QueueResource[]>;
13
19
  getFirstAndLastQueuedItemsByQueueIdText(queue_id_text: string): Promise<{
14
20
  firstQueued: QueueResource | null;
@@ -20,32 +26,28 @@ export declare class QueueResourceService extends BaseManyService<QueueResource,
20
26
  addResourceToQueueNext(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource): Promise<QueueResource>;
21
27
  addResourceToQueueLast(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource): Promise<QueueResource>;
22
28
  addResourceToQueueBetween(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource, position1: number, position2: number): Promise<QueueResource>;
23
- addResourceToNowPlaying(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource): Promise<QueueResource>;
24
- addResourceToHistory(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource): Promise<QueueResource>;
29
+ addResourceToNowPlaying(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource, params?: QueueExtraParams): Promise<QueueResource>;
30
+ private _addResourceToNowPlayingTransactional;
31
+ private moveQueueResourceToHistoryByIdTransactional;
32
+ addResourceToHistory(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource, params: QueueExtraParams): Promise<QueueResource>;
25
33
  removeResourceFromQueue(queue_id_text: string, resource_id_text: string, resourceService: any, resourceKey: keyof QueueResource): Promise<void>;
26
34
  addClipToQueueNext(queue_id_text: string, clip_id_text: string): Promise<QueueResource>;
27
35
  addClipToQueueLast(queue_id_text: string, clip_id_text: string): Promise<QueueResource>;
28
36
  addClipToQueueBetween(queue_id_text: string, clip_id_text: string, position1: number, position2: number): Promise<QueueResource>;
29
- addClipToNowPlaying(queue_id_text: string, clip_id_text: string): Promise<QueueResource>;
30
- addClipToHistory(queue_id_text: string, clip_id_text: string): Promise<QueueResource>;
37
+ addClipToNowPlaying(queue_id_text: string, clip_id_text: string, params?: QueueExtraParams): Promise<QueueResource>;
38
+ addClipToHistory(queue_id_text: string, clip_id_text: string, params: QueueExtraParams): Promise<QueueResource>;
31
39
  removeClipFromQueue(queue_id_text: string, clip_id_text: string): Promise<void>;
32
40
  addItemToQueueNext(queue_id_text: string, item_id_text: string): Promise<QueueResource>;
33
41
  addItemToQueueLast(queue_id_text: string, item_id_text: string): Promise<QueueResource>;
34
42
  addItemToQueueBetween(queue_id_text: string, item_id_text: string, position1: number, position2: number): Promise<QueueResource>;
35
- addItemToNowPlaying(queue_id_text: string, item_id_text: string): Promise<QueueResource>;
36
- addItemToHistory(queue_id_text: string, item_id_text: string): Promise<QueueResource>;
43
+ addItemToNowPlaying(queue_id_text: string, item_id_text: string, params?: QueueExtraParams): Promise<QueueResource>;
44
+ addItemToHistory(queue_id_text: string, item_id_text: string, params: QueueExtraParams): Promise<QueueResource>;
37
45
  removeItemFromQueue(queue_id_text: string, item_id_text: string): Promise<void>;
38
- addItemChapterToQueueNext(queue_id_text: string, item_chapter_id_text: string): Promise<QueueResource>;
39
- addItemChapterToQueueLast(queue_id_text: string, item_chapter_id_text: string): Promise<QueueResource>;
40
- addItemChapterToQueueBetween(queue_id_text: string, item_chapter_id_text: string, position1: number, position2: number): Promise<QueueResource>;
41
- addItemChapterToNowPlaying(queue_id_text: string, item_chapter_id_text: string): Promise<QueueResource>;
42
- addItemChapterToHistory(queue_id_text: string, item_chapter_id_text: string): Promise<QueueResource>;
43
- removeItemChapterFromQueue(queue_id_text: string, item_chapter_id_text: string): Promise<void>;
44
46
  addItemSoundbiteToQueueNext(queue_id_text: string, item_soundbite_id_text: string): Promise<QueueResource>;
45
47
  addItemSoundbiteToQueueLast(queue_id_text: string, item_soundbite_id_text: string): Promise<QueueResource>;
46
48
  addItemSoundbiteToQueueBetween(queue_id_text: string, item_soundbite_id_text: string, position1: number, position2: number): Promise<QueueResource>;
47
- addItemSoundbiteToNowPlaying(queue_id_text: string, item_soundbite_id_text: string): Promise<QueueResource>;
48
- addItemSoundbiteToHistory(queue_id_text: string, item_soundbite_id_text: string): Promise<QueueResource>;
49
+ addItemSoundbiteToNowPlaying(queue_id_text: string, item_soundbite_id_text: string, params?: QueueExtraParams): Promise<QueueResource>;
50
+ addItemSoundbiteToHistory(queue_id_text: string, item_soundbite_id_text: string, params: QueueExtraParams): Promise<QueueResource>;
49
51
  removeItemSoundbiteFromQueue(queue_id_text: string, item_soundbite_id_text: string): Promise<void>;
50
52
  private addItemAddByRSSToQueue;
51
53
  private addItemAddByRSSToQueueHelper;
@@ -55,11 +57,5 @@ export declare class QueueResourceService extends BaseManyService<QueueResource,
55
57
  addItemAddByRSSToNowPlaying(queue_id_text: string, add_by_rss_resource_data: object): Promise<QueueResource>;
56
58
  addItemAddByRSSToHistory(queue_id_text: string, add_by_rss_resource_data: object): Promise<QueueResource>;
57
59
  removeItemAddByRSSFromQueue(queue_id_text: string, add_by_rss_hash_id: string): Promise<void>;
58
- getResourcesByParams(params: {
59
- clip_id?: number;
60
- item_id?: number;
61
- item_chapter_id?: number;
62
- item_soundbite_id?: number;
63
- }): Promise<QueueResource[]>;
64
60
  }
65
61
  //# sourceMappingURL=queueResource.d.ts.map