@earbug/db-models 0.0.15 → 0.0.17

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 (51) hide show
  1. package/.github/workflows/publish.yaml +54 -0
  2. package/.nvmrc +1 -1
  3. package/dist/AppUser.d.ts +24 -0
  4. package/dist/CanonArtist.d.ts +43 -1
  5. package/dist/CanonArtist.js +18 -2
  6. package/dist/GuestUser.d.ts +42 -0
  7. package/dist/GuestUser.js +91 -0
  8. package/dist/JukeboxQueueEntry.d.ts +19 -5
  9. package/dist/JukeboxQueueEntry.js +36 -18
  10. package/dist/JukeboxSession.d.ts +36 -0
  11. package/dist/MerchItem.d.ts +50 -0
  12. package/dist/MerchItem.js +120 -0
  13. package/dist/MerchOrchestration.d.ts +42 -0
  14. package/dist/MerchOrchestration.js +104 -0
  15. package/dist/MerchPlatform.d.ts +45 -0
  16. package/dist/MerchPlatform.js +75 -0
  17. package/dist/MerchType.d.ts +43 -0
  18. package/dist/MerchType.js +71 -0
  19. package/dist/NewsArticle.js +5 -5
  20. package/dist/NewsPlatform.js +2 -2
  21. package/dist/PlatformTrack.d.ts +12 -0
  22. package/dist/PlatformUserPlaylist.d.ts +24 -0
  23. package/dist/RadioShow.d.ts +24 -0
  24. package/dist/RadioShow.js +6 -0
  25. package/dist/RadioShowGenres.d.ts +3 -1
  26. package/dist/RadioShowGenres.js +24 -0
  27. package/dist/UserComments.d.ts +55 -0
  28. package/dist/UserComments.js +151 -0
  29. package/dist/UserLikes.d.ts +45 -0
  30. package/dist/UserLikes.js +151 -0
  31. package/dist/init-models.d.ts +23 -2
  32. package/dist/init-models.js +66 -2
  33. package/models/AppUser.ts +26 -0
  34. package/models/CanonArtist.ts +64 -3
  35. package/models/GuestUser.ts +108 -0
  36. package/models/JukeboxQueueEntry.ts +57 -23
  37. package/models/JukeboxSession.ts +39 -0
  38. package/models/MerchItem.ts +146 -0
  39. package/models/MerchOrchestration.ts +122 -0
  40. package/models/MerchPlatform.ts +95 -0
  41. package/models/MerchType.ts +89 -0
  42. package/models/NewsArticle.ts +5 -6
  43. package/models/NewsPlatform.ts +2 -3
  44. package/models/PlatformTrack.ts +13 -0
  45. package/models/PlatformUserPlaylist.ts +26 -0
  46. package/models/RadioShow.ts +32 -0
  47. package/models/RadioShowGenres.ts +27 -1
  48. package/models/UserComments.ts +184 -0
  49. package/models/UserLikes.ts +173 -0
  50. package/models/init-models.ts +85 -0
  51. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Notification = exports.NewsSite = exports.NewsPlatform = exports.NewsArticle = exports.MetricsEvent = exports.MetricsDaily = exports.KnexMigrationsLock = exports.KnexMigrations = exports.JukeboxUserType = exports.JukeboxUser = exports.JukeboxType = exports.JukeboxTerminationCondition = exports.JukeboxStatus = exports.JukeboxSession = exports.JukeboxQueueMode = exports.JukeboxQueueEntry = exports.JukeboxInvite = exports.JukeboxCanonGenreRelation = exports.JukeboxAccessType = exports.ExternalReference = exports.ConfigParam = exports.CanonTrack = exports.CanonToPlatformTrackRelation = exports.CanonToPlatformGenreRelation = exports.CanonToPlatformArtistRelation = exports.CanonToPlatformAlbumRelation = exports.CanonMemberExternalReferenceRelation = exports.CanonMember = exports.CanonLabelExternalReferenceRelation = exports.CanonLabel = exports.CanonGenreExternalReferenceRelation = exports.CanonGenre = exports.CanonArtistTrackRelation = exports.CanonArtistMemberRelation = exports.CanonArtistImageHarvested = exports.CanonArtistGenreRelation = exports.CanonArtistExternalReferenceRelation = exports.CanonArtistAlbumRelation = exports.CanonArtist = exports.CanonAlbumTrackRelation = exports.CanonAlbumLabelRelation = exports.CanonAlbumImageHarvested = exports.CanonAlbumGenreRelation = exports.CanonAlbumExternalReferenceRelation = exports.CanonAlbum = exports.AppUserPlatformRelation = exports.AppUserFollowRelation = exports.AppUserDevice = exports.AppUser = exports.AccessControlPreference = void 0;
4
- exports.UserContacts = exports.UnmatchedArtist = exports.UnmatchedAlbum = exports.TrackDeletionReason = exports.State = exports.RadioShowPublishRequests = exports.RadioShowPlacement = exports.RadioShowMedia = exports.RadioShowGenres = exports.RadioShow = exports.PlaybackStatusType = exports.PlaybackStatus = exports.PlatformUserPlaylistTrack = exports.PlatformUserPlaylist = exports.PlatformUserAlbumTrack = exports.PlatformUserAlbum = exports.PlatformTrackGenreRelation = exports.PlatformTrack = exports.PlatformGenre = exports.PlatformArtistTrackRelation = exports.PlatformArtistGenreRelation = exports.PlatformArtistAlbumRelation = exports.PlatformArtist = exports.PlatformAlbumTrackRelation = exports.PlatformAlbumGenreRelation = exports.PlatformAlbum = exports.Platform = exports.PauseStatusType = exports.NotificationType = void 0;
3
+ exports.MetricsDaily = exports.MerchType = exports.MerchPlatform = exports.MerchOrchestration = exports.MerchItem = exports.KnexMigrationsLock = exports.KnexMigrations = exports.JukeboxUserType = exports.JukeboxUser = exports.JukeboxType = exports.JukeboxTerminationCondition = exports.JukeboxStatus = exports.JukeboxSession = exports.JukeboxQueueMode = exports.JukeboxQueueEntry = exports.JukeboxInvite = exports.JukeboxCanonGenreRelation = exports.JukeboxAccessType = exports.GuestUser = exports.ExternalReference = exports.ConfigParam = exports.CanonTrack = exports.CanonToPlatformTrackRelation = exports.CanonToPlatformGenreRelation = exports.CanonToPlatformArtistRelation = exports.CanonToPlatformAlbumRelation = exports.CanonMemberExternalReferenceRelation = exports.CanonMember = exports.CanonLabelExternalReferenceRelation = exports.CanonLabel = exports.CanonGenreExternalReferenceRelation = exports.CanonGenre = exports.CanonArtistTrackRelation = exports.CanonArtistMemberRelation = exports.CanonArtistImageHarvested = exports.CanonArtistGenreRelation = exports.CanonArtistExternalReferenceRelation = exports.CanonArtistAlbumRelation = exports.CanonArtist = exports.CanonAlbumTrackRelation = exports.CanonAlbumLabelRelation = exports.CanonAlbumImageHarvested = exports.CanonAlbumGenreRelation = exports.CanonAlbumExternalReferenceRelation = exports.CanonAlbum = exports.AppUserPlatformRelation = exports.AppUserFollowRelation = exports.AppUserDevice = exports.AppUser = exports.AccessControlPreference = void 0;
4
+ exports.UserLikes = exports.UserContacts = exports.UserComments = exports.UnmatchedArtist = exports.UnmatchedAlbum = exports.TrackDeletionReason = exports.State = exports.RadioShowPublishRequests = exports.RadioShowPlacement = exports.RadioShowMedia = exports.RadioShowGenres = exports.RadioShow = exports.PlaybackStatusType = exports.PlaybackStatus = exports.PlatformUserPlaylistTrack = exports.PlatformUserPlaylist = exports.PlatformUserAlbumTrack = exports.PlatformUserAlbum = exports.PlatformTrackGenreRelation = exports.PlatformTrack = exports.PlatformGenre = exports.PlatformArtistTrackRelation = exports.PlatformArtistGenreRelation = exports.PlatformArtistAlbumRelation = exports.PlatformArtist = exports.PlatformAlbumTrackRelation = exports.PlatformAlbumGenreRelation = exports.PlatformAlbum = exports.Platform = exports.PauseStatusType = exports.NotificationType = exports.Notification = exports.NewsSite = exports.NewsPlatform = exports.NewsArticle = exports.MetricsEvent = void 0;
5
5
  exports.initModels = initModels;
6
6
  const AccessControlPreference_1 = require("./AccessControlPreference");
7
7
  Object.defineProperty(exports, "AccessControlPreference", { enumerable: true, get: function () { return AccessControlPreference_1.AccessControlPreference; } });
@@ -65,6 +65,8 @@ const ConfigParam_1 = require("./ConfigParam");
65
65
  Object.defineProperty(exports, "ConfigParam", { enumerable: true, get: function () { return ConfigParam_1.ConfigParam; } });
66
66
  const ExternalReference_1 = require("./ExternalReference");
67
67
  Object.defineProperty(exports, "ExternalReference", { enumerable: true, get: function () { return ExternalReference_1.ExternalReference; } });
68
+ const GuestUser_1 = require("./GuestUser");
69
+ Object.defineProperty(exports, "GuestUser", { enumerable: true, get: function () { return GuestUser_1.GuestUser; } });
68
70
  const JukeboxAccessType_1 = require("./JukeboxAccessType");
69
71
  Object.defineProperty(exports, "JukeboxAccessType", { enumerable: true, get: function () { return JukeboxAccessType_1.JukeboxAccessType; } });
70
72
  const JukeboxCanonGenreRelation_1 = require("./JukeboxCanonGenreRelation");
@@ -91,6 +93,14 @@ const KnexMigrations_1 = require("./KnexMigrations");
91
93
  Object.defineProperty(exports, "KnexMigrations", { enumerable: true, get: function () { return KnexMigrations_1.KnexMigrations; } });
92
94
  const KnexMigrationsLock_1 = require("./KnexMigrationsLock");
93
95
  Object.defineProperty(exports, "KnexMigrationsLock", { enumerable: true, get: function () { return KnexMigrationsLock_1.KnexMigrationsLock; } });
96
+ const MerchItem_1 = require("./MerchItem");
97
+ Object.defineProperty(exports, "MerchItem", { enumerable: true, get: function () { return MerchItem_1.MerchItem; } });
98
+ const MerchOrchestration_1 = require("./MerchOrchestration");
99
+ Object.defineProperty(exports, "MerchOrchestration", { enumerable: true, get: function () { return MerchOrchestration_1.MerchOrchestration; } });
100
+ const MerchPlatform_1 = require("./MerchPlatform");
101
+ Object.defineProperty(exports, "MerchPlatform", { enumerable: true, get: function () { return MerchPlatform_1.MerchPlatform; } });
102
+ const MerchType_1 = require("./MerchType");
103
+ Object.defineProperty(exports, "MerchType", { enumerable: true, get: function () { return MerchType_1.MerchType; } });
94
104
  const MetricsDaily_1 = require("./MetricsDaily");
95
105
  Object.defineProperty(exports, "MetricsDaily", { enumerable: true, get: function () { return MetricsDaily_1.MetricsDaily; } });
96
106
  const MetricsEvent_1 = require("./MetricsEvent");
@@ -159,8 +169,12 @@ const UnmatchedAlbum_1 = require("./UnmatchedAlbum");
159
169
  Object.defineProperty(exports, "UnmatchedAlbum", { enumerable: true, get: function () { return UnmatchedAlbum_1.UnmatchedAlbum; } });
160
170
  const UnmatchedArtist_1 = require("./UnmatchedArtist");
161
171
  Object.defineProperty(exports, "UnmatchedArtist", { enumerable: true, get: function () { return UnmatchedArtist_1.UnmatchedArtist; } });
172
+ const UserComments_1 = require("./UserComments");
173
+ Object.defineProperty(exports, "UserComments", { enumerable: true, get: function () { return UserComments_1.UserComments; } });
162
174
  const UserContacts_1 = require("./UserContacts");
163
175
  Object.defineProperty(exports, "UserContacts", { enumerable: true, get: function () { return UserContacts_1.UserContacts; } });
176
+ const UserLikes_1 = require("./UserLikes");
177
+ Object.defineProperty(exports, "UserLikes", { enumerable: true, get: function () { return UserLikes_1.UserLikes; } });
164
178
  function initModels(sequelize) {
165
179
  const AccessControlPreference = AccessControlPreference_1.AccessControlPreference.initModel(sequelize);
166
180
  const AppUser = AppUser_1.AppUser.initModel(sequelize);
@@ -193,6 +207,7 @@ function initModels(sequelize) {
193
207
  const CanonTrack = CanonTrack_1.CanonTrack.initModel(sequelize);
194
208
  const ConfigParam = ConfigParam_1.ConfigParam.initModel(sequelize);
195
209
  const ExternalReference = ExternalReference_1.ExternalReference.initModel(sequelize);
210
+ const GuestUser = GuestUser_1.GuestUser.initModel(sequelize);
196
211
  const JukeboxAccessType = JukeboxAccessType_1.JukeboxAccessType.initModel(sequelize);
197
212
  const JukeboxCanonGenreRelation = JukeboxCanonGenreRelation_1.JukeboxCanonGenreRelation.initModel(sequelize);
198
213
  const JukeboxInvite = JukeboxInvite_1.JukeboxInvite.initModel(sequelize);
@@ -206,6 +221,10 @@ function initModels(sequelize) {
206
221
  const JukeboxUserType = JukeboxUserType_1.JukeboxUserType.initModel(sequelize);
207
222
  const KnexMigrations = KnexMigrations_1.KnexMigrations.initModel(sequelize);
208
223
  const KnexMigrationsLock = KnexMigrationsLock_1.KnexMigrationsLock.initModel(sequelize);
224
+ const MerchItem = MerchItem_1.MerchItem.initModel(sequelize);
225
+ const MerchOrchestration = MerchOrchestration_1.MerchOrchestration.initModel(sequelize);
226
+ const MerchPlatform = MerchPlatform_1.MerchPlatform.initModel(sequelize);
227
+ const MerchType = MerchType_1.MerchType.initModel(sequelize);
209
228
  const MetricsDaily = MetricsDaily_1.MetricsDaily.initModel(sequelize);
210
229
  const MetricsEvent = MetricsEvent_1.MetricsEvent.initModel(sequelize);
211
230
  const NewsArticle = NewsArticle_1.NewsArticle.initModel(sequelize);
@@ -240,7 +259,9 @@ function initModels(sequelize) {
240
259
  const TrackDeletionReason = TrackDeletionReason_1.TrackDeletionReason.initModel(sequelize);
241
260
  const UnmatchedAlbum = UnmatchedAlbum_1.UnmatchedAlbum.initModel(sequelize);
242
261
  const UnmatchedArtist = UnmatchedArtist_1.UnmatchedArtist.initModel(sequelize);
262
+ const UserComments = UserComments_1.UserComments.initModel(sequelize);
243
263
  const UserContacts = UserContacts_1.UserContacts.initModel(sequelize);
264
+ const UserLikes = UserLikes_1.UserLikes.initModel(sequelize);
244
265
  CanonAlbum.belongsToMany(CanonTrack, { as: 'canonTrackIdCanonTracks', through: CanonAlbumTrackRelation, foreignKey: "canonAlbumId", otherKey: "canonTrackId" });
245
266
  CanonAlbum.belongsToMany(ExternalReference, { as: 'externalReferenceIdExternalReferences', through: CanonAlbumExternalReferenceRelation, foreignKey: "canonAlbumId", otherKey: "externalReferenceId" });
246
267
  CanonAlbum.belongsToMany(PlatformAlbum, { as: 'platformAlbumIdPlatformAlbums', through: CanonToPlatformAlbumRelation, foreignKey: "canonAlbumId", otherKey: "platformAlbumId" });
@@ -311,8 +332,12 @@ function initModels(sequelize) {
311
332
  AppUser.hasMany(PlatformUserPlaylist, { as: "platformUserPlaylists", foreignKey: "appUserId" });
312
333
  RadioShow.belongsTo(AppUser, { as: "creatorUser", foreignKey: "creatorUserId" });
313
334
  AppUser.hasMany(RadioShow, { as: "radioShows", foreignKey: "creatorUserId" });
335
+ UserComments.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
336
+ AppUser.hasMany(UserComments, { as: "userComments", foreignKey: "appUserId" });
314
337
  UserContacts.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
315
338
  AppUser.hasMany(UserContacts, { as: "userContacts", foreignKey: "appUserId" });
339
+ UserLikes.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
340
+ AppUser.hasMany(UserLikes, { as: "userLikes", foreignKey: "appUserId" });
316
341
  CanonAlbumExternalReferenceRelation.belongsTo(CanonAlbum, { as: "canonAlbum", foreignKey: "canonAlbumId" });
317
342
  CanonAlbum.hasMany(CanonAlbumExternalReferenceRelation, { as: "canonAlbumExternalReferenceRelations", foreignKey: "canonAlbumId" });
318
343
  CanonAlbumImageHarvested.belongsTo(CanonAlbum, { as: "canonAlbum", foreignKey: "canonAlbumId" });
@@ -329,6 +354,10 @@ function initModels(sequelize) {
329
354
  CanonArtist.hasMany(CanonArtistTrackRelation, { as: "canonArtistTrackRelations", foreignKey: "canonArtistId" });
330
355
  CanonToPlatformArtistRelation.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
331
356
  CanonArtist.hasMany(CanonToPlatformArtistRelation, { as: "canonToPlatformArtistRelations", foreignKey: "canonArtistId" });
357
+ MerchItem.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
358
+ CanonArtist.hasMany(MerchItem, { as: "merchItems", foreignKey: "canonArtistId" });
359
+ MerchOrchestration.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
360
+ CanonArtist.hasMany(MerchOrchestration, { as: "merchOrchestrations", foreignKey: "canonArtistId" });
332
361
  NewsArticle.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
333
362
  CanonArtist.hasMany(NewsArticle, { as: "newsArticles", foreignKey: "canonArtistId" });
334
363
  CanonAlbumGenreRelation.belongsTo(CanonGenre, { as: "canonGenre", foreignKey: "canonGenreId" });
@@ -371,12 +400,16 @@ function initModels(sequelize) {
371
400
  ExternalReference.hasMany(CanonLabelExternalReferenceRelation, { as: "canonLabelExternalReferenceRelations", foreignKey: "externalReferenceId" });
372
401
  CanonMemberExternalReferenceRelation.belongsTo(ExternalReference, { as: "externalReference", foreignKey: "externalReferenceId" });
373
402
  ExternalReference.hasMany(CanonMemberExternalReferenceRelation, { as: "canonMemberExternalReferenceRelations", foreignKey: "externalReferenceId" });
403
+ JukeboxQueueEntry.belongsTo(GuestUser, { as: "trackAddedGuestUser", foreignKey: "trackAddedGuestUserId" });
404
+ GuestUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedGuestUserId" });
374
405
  JukeboxSession.belongsTo(JukeboxAccessType, { as: "accessType", foreignKey: "accessTypeId" });
375
406
  JukeboxAccessType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "accessTypeId" });
376
407
  JukeboxUser.belongsTo(JukeboxQueueEntry, { as: "pausedQueueEntry", foreignKey: "pausedQueueEntryId" });
377
408
  JukeboxQueueEntry.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "pausedQueueEntryId" });
378
409
  JukeboxSession.belongsTo(JukeboxQueueMode, { as: "jukeboxQueueMode", foreignKey: "jukeboxQueueModeId" });
379
410
  JukeboxQueueMode.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "jukeboxQueueModeId" });
411
+ GuestUser.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
412
+ JukeboxSession.hasMany(GuestUser, { as: "guestUsers", foreignKey: "jukeboxSessionId" });
380
413
  JukeboxCanonGenreRelation.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
381
414
  JukeboxSession.hasMany(JukeboxCanonGenreRelation, { as: "jukeboxCanonGenreRelations", foreignKey: "jukeboxSessionId" });
382
415
  JukeboxInvite.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
@@ -387,6 +420,10 @@ function initModels(sequelize) {
387
420
  JukeboxSession.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxSessionId" });
388
421
  Notification.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
389
422
  JukeboxSession.hasMany(Notification, { as: "notifications", foreignKey: "jukeboxSessionId" });
423
+ UserComments.belongsTo(JukeboxSession, { as: "jukebox", foreignKey: "jukeboxId" });
424
+ JukeboxSession.hasMany(UserComments, { as: "userComments", foreignKey: "jukeboxId" });
425
+ UserLikes.belongsTo(JukeboxSession, { as: "jukebox", foreignKey: "jukeboxId" });
426
+ JukeboxSession.hasMany(UserLikes, { as: "userLikes", foreignKey: "jukeboxId" });
390
427
  JukeboxSession.belongsTo(JukeboxStatus, { as: "jukeboxStatus", foreignKey: "jukeboxStatusId" });
391
428
  JukeboxStatus.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "jukeboxStatusId" });
392
429
  JukeboxSession.belongsTo(JukeboxTerminationCondition, { as: "terminationCondition", foreignKey: "terminationConditionId" });
@@ -395,6 +432,14 @@ function initModels(sequelize) {
395
432
  JukeboxType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "typeId" });
396
433
  JukeboxUser.belongsTo(JukeboxUserType, { as: "jukeboxUserType", foreignKey: "jukeboxUserTypeId" });
397
434
  JukeboxUserType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxUserTypeId" });
435
+ MerchItem.belongsTo(MerchPlatform, { as: "merchPlatform", foreignKey: "merchPlatformId" });
436
+ MerchPlatform.hasMany(MerchItem, { as: "merchItems", foreignKey: "merchPlatformId" });
437
+ MerchOrchestration.belongsTo(MerchPlatform, { as: "merchPlatform", foreignKey: "merchPlatformId" });
438
+ MerchPlatform.hasMany(MerchOrchestration, { as: "merchOrchestrations", foreignKey: "merchPlatformId" });
439
+ MerchItem.belongsTo(MerchType, { as: "merchType", foreignKey: "merchTypeId" });
440
+ MerchType.hasMany(MerchItem, { as: "merchItems", foreignKey: "merchTypeId" });
441
+ MerchOrchestration.belongsTo(MerchType, { as: "merchType", foreignKey: "merchTypeId" });
442
+ MerchType.hasMany(MerchOrchestration, { as: "merchOrchestrations", foreignKey: "merchTypeId" });
398
443
  NewsArticle.belongsTo(NewsPlatform, { as: "newsPlatform", foreignKey: "newsPlatformId" });
399
444
  NewsPlatform.hasMany(NewsArticle, { as: "newsArticles", foreignKey: "newsPlatformId" });
400
445
  Notification.belongsTo(NotificationType, { as: "notificationType", foreignKey: "notificationTypeId" });
@@ -461,6 +506,8 @@ function initModels(sequelize) {
461
506
  PlatformGenre.hasMany(PlatformTrackGenreRelation, { as: "platformTrackGenreRelations", foreignKey: "platformGenreId" });
462
507
  CanonToPlatformTrackRelation.belongsTo(PlatformTrack, { as: "platformTrack", foreignKey: "platformTrackId" });
463
508
  PlatformTrack.hasMany(CanonToPlatformTrackRelation, { as: "canonToPlatformTrackRelations", foreignKey: "platformTrackId" });
509
+ JukeboxQueueEntry.belongsTo(PlatformTrack, { as: "platformTrack", foreignKey: "platformTrackId" });
510
+ PlatformTrack.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "platformTrackId" });
464
511
  PlatformAlbumTrackRelation.belongsTo(PlatformTrack, { as: "platformTrack", foreignKey: "platformTrackId" });
465
512
  PlatformTrack.hasMany(PlatformAlbumTrackRelation, { as: "platformAlbumTrackRelations", foreignKey: "platformTrackId" });
466
513
  PlatformArtistTrackRelation.belongsTo(PlatformTrack, { as: "platformTrack", foreignKey: "platformTrackId" });
@@ -475,6 +522,10 @@ function initModels(sequelize) {
475
522
  PlatformUserAlbum.hasMany(PlatformUserAlbumTrack, { as: "platformUserAlbumTracks", foreignKey: "platformUserAlbumId" });
476
523
  PlatformUserPlaylistTrack.belongsTo(PlatformUserPlaylist, { as: "platformUserPlaylist", foreignKey: "platformUserPlaylistId" });
477
524
  PlatformUserPlaylist.hasMany(PlatformUserPlaylistTrack, { as: "platformUserPlaylistTracks", foreignKey: "platformUserPlaylistId" });
525
+ UserComments.belongsTo(PlatformUserPlaylist, { as: "playlist", foreignKey: "playlistId" });
526
+ PlatformUserPlaylist.hasMany(UserComments, { as: "userComments", foreignKey: "playlistId" });
527
+ UserLikes.belongsTo(PlatformUserPlaylist, { as: "playlist", foreignKey: "playlistId" });
528
+ PlatformUserPlaylist.hasMany(UserLikes, { as: "userLikes", foreignKey: "playlistId" });
478
529
  JukeboxQueueEntry.belongsTo(PlaybackStatusType, { as: "playbackStatusType", foreignKey: "playbackStatusTypeId" });
479
530
  PlaybackStatusType.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "playbackStatusTypeId" });
480
531
  RadioShowGenres.belongsTo(RadioShow, { as: "radioShow", foreignKey: "radioShowId" });
@@ -485,6 +536,10 @@ function initModels(sequelize) {
485
536
  RadioShow.hasMany(RadioShowPlacement, { as: "radioShowPlacements", foreignKey: "radioShowId" });
486
537
  RadioShowPublishRequests.belongsTo(RadioShow, { as: "radioShow", foreignKey: "radioShowId" });
487
538
  RadioShow.hasMany(RadioShowPublishRequests, { as: "radioShowPublishRequests", foreignKey: "radioShowId" });
539
+ UserComments.belongsTo(RadioShow, { as: "radioShow", foreignKey: "radioShowId" });
540
+ RadioShow.hasMany(UserComments, { as: "userComments", foreignKey: "radioShowId" });
541
+ UserLikes.belongsTo(RadioShow, { as: "radioShow", foreignKey: "radioShowId" });
542
+ RadioShow.hasMany(UserLikes, { as: "userLikes", foreignKey: "radioShowId" });
488
543
  AppUser.belongsTo(State, { as: "state", foreignKey: "stateId" });
489
544
  State.hasMany(AppUser, { as: "appUsers", foreignKey: "stateId" });
490
545
  PlatformUserPlaylist.belongsTo(State, { as: "state", foreignKey: "stateId" });
@@ -493,6 +548,8 @@ function initModels(sequelize) {
493
548
  State.hasMany(PlatformUserPlaylistTrack, { as: "platformUserPlaylistTracks", foreignKey: "stateId" });
494
549
  JukeboxQueueEntry.belongsTo(TrackDeletionReason, { as: "trackDeletionReason", foreignKey: "trackDeletionReasonId" });
495
550
  TrackDeletionReason.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackDeletionReasonId" });
551
+ UserComments.belongsTo(UserComments, { as: "replyComment", foreignKey: "replyCommentId" });
552
+ UserComments.hasMany(UserComments, { as: "userComments", foreignKey: "replyCommentId" });
496
553
  return {
497
554
  AccessControlPreference: AccessControlPreference,
498
555
  AppUser: AppUser,
@@ -525,6 +582,7 @@ function initModels(sequelize) {
525
582
  CanonTrack: CanonTrack,
526
583
  ConfigParam: ConfigParam,
527
584
  ExternalReference: ExternalReference,
585
+ GuestUser: GuestUser,
528
586
  JukeboxAccessType: JukeboxAccessType,
529
587
  JukeboxCanonGenreRelation: JukeboxCanonGenreRelation,
530
588
  JukeboxInvite: JukeboxInvite,
@@ -538,6 +596,10 @@ function initModels(sequelize) {
538
596
  JukeboxUserType: JukeboxUserType,
539
597
  KnexMigrations: KnexMigrations,
540
598
  KnexMigrationsLock: KnexMigrationsLock,
599
+ MerchItem: MerchItem,
600
+ MerchOrchestration: MerchOrchestration,
601
+ MerchPlatform: MerchPlatform,
602
+ MerchType: MerchType,
541
603
  MetricsDaily: MetricsDaily,
542
604
  MetricsEvent: MetricsEvent,
543
605
  NewsArticle: NewsArticle,
@@ -572,6 +634,8 @@ function initModels(sequelize) {
572
634
  TrackDeletionReason: TrackDeletionReason,
573
635
  UnmatchedAlbum: UnmatchedAlbum,
574
636
  UnmatchedArtist: UnmatchedArtist,
637
+ UserComments: UserComments,
575
638
  UserContacts: UserContacts,
639
+ UserLikes: UserLikes,
576
640
  };
577
641
  }
package/models/AppUser.ts CHANGED
@@ -11,7 +11,9 @@ import type { PlatformUserAlbum, PlatformUserAlbumId } from './PlatformUserAlbum
11
11
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
12
12
  import type { RadioShow, RadioShowId } from './RadioShow';
13
13
  import type { State, StateId } from './State';
14
+ import type { UserComments, UserCommentsId } from './UserComments';
14
15
  import type { UserContacts, UserContactsId } from './UserContacts';
16
+ import type { UserLikes, UserLikesId } from './UserLikes';
15
17
 
16
18
  export interface AppUserAttributes {
17
19
  email: string;
@@ -196,6 +198,18 @@ export class AppUser extends Model<AppUserAttributes, AppUserCreationAttributes>
196
198
  hasRadioShow!: Sequelize.HasManyHasAssociationMixin<RadioShow, RadioShowId>;
197
199
  hasRadioShows!: Sequelize.HasManyHasAssociationsMixin<RadioShow, RadioShowId>;
198
200
  countRadioShows!: Sequelize.HasManyCountAssociationsMixin;
201
+ // AppUser hasMany UserComments via appUserId
202
+ userComments!: UserComments[];
203
+ getUserComments!: Sequelize.HasManyGetAssociationsMixin<UserComments>;
204
+ setUserComments!: Sequelize.HasManySetAssociationsMixin<UserComments, UserCommentsId>;
205
+ addUserComment!: Sequelize.HasManyAddAssociationMixin<UserComments, UserCommentsId>;
206
+ addUserComments!: Sequelize.HasManyAddAssociationsMixin<UserComments, UserCommentsId>;
207
+ createUserComment!: Sequelize.HasManyCreateAssociationMixin<UserComments>;
208
+ removeUserComment!: Sequelize.HasManyRemoveAssociationMixin<UserComments, UserCommentsId>;
209
+ removeUserComments!: Sequelize.HasManyRemoveAssociationsMixin<UserComments, UserCommentsId>;
210
+ hasUserComment!: Sequelize.HasManyHasAssociationMixin<UserComments, UserCommentsId>;
211
+ hasUserComments!: Sequelize.HasManyHasAssociationsMixin<UserComments, UserCommentsId>;
212
+ countUserComments!: Sequelize.HasManyCountAssociationsMixin;
199
213
  // AppUser hasMany UserContacts via appUserId
200
214
  userContacts!: UserContacts[];
201
215
  getUserContacts!: Sequelize.HasManyGetAssociationsMixin<UserContacts>;
@@ -208,6 +222,18 @@ export class AppUser extends Model<AppUserAttributes, AppUserCreationAttributes>
208
222
  hasUserContact!: Sequelize.HasManyHasAssociationMixin<UserContacts, UserContactsId>;
209
223
  hasUserContacts!: Sequelize.HasManyHasAssociationsMixin<UserContacts, UserContactsId>;
210
224
  countUserContacts!: Sequelize.HasManyCountAssociationsMixin;
225
+ // AppUser hasMany UserLikes via appUserId
226
+ userLikes!: UserLikes[];
227
+ getUserLikes!: Sequelize.HasManyGetAssociationsMixin<UserLikes>;
228
+ setUserLikes!: Sequelize.HasManySetAssociationsMixin<UserLikes, UserLikesId>;
229
+ addUserLike!: Sequelize.HasManyAddAssociationMixin<UserLikes, UserLikesId>;
230
+ addUserLikes!: Sequelize.HasManyAddAssociationsMixin<UserLikes, UserLikesId>;
231
+ createUserLike!: Sequelize.HasManyCreateAssociationMixin<UserLikes>;
232
+ removeUserLike!: Sequelize.HasManyRemoveAssociationMixin<UserLikes, UserLikesId>;
233
+ removeUserLikes!: Sequelize.HasManyRemoveAssociationsMixin<UserLikes, UserLikesId>;
234
+ hasUserLike!: Sequelize.HasManyHasAssociationMixin<UserLikes, UserLikesId>;
235
+ hasUserLikes!: Sequelize.HasManyHasAssociationsMixin<UserLikes, UserLikesId>;
236
+ countUserLikes!: Sequelize.HasManyCountAssociationsMixin;
211
237
  // AppUser belongsTo State via stateId
212
238
  state!: State;
213
239
  getState!: Sequelize.BelongsToGetAssociationMixin<State>;
@@ -5,6 +5,9 @@ import type { CanonArtistImageHarvested, CanonArtistImageHarvestedId } from './C
5
5
  import type { CanonArtistTrackRelation, CanonArtistTrackRelationId } from './CanonArtistTrackRelation';
6
6
  import type { CanonToPlatformArtistRelation, CanonToPlatformArtistRelationId } from './CanonToPlatformArtistRelation';
7
7
  import type { CanonTrack, CanonTrackId } from './CanonTrack';
8
+ import type { MerchItem, MerchItemId } from './MerchItem';
9
+ import type { MerchOrchestration, MerchOrchestrationId } from './MerchOrchestration';
10
+ import type { NewsArticle, NewsArticleId } from './NewsArticle';
8
11
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
9
12
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
10
13
 
@@ -21,11 +24,14 @@ export interface CanonArtistAttributes {
21
24
  lastImageHarvestAttempt?: Date;
22
25
  merchHarvestDay?: number;
23
26
  newsHarvestDay?: number;
27
+ harvestPopularity?: number;
28
+ lastGenreHarvestAttempt?: Date;
29
+ genreHarvestCount: number;
24
30
  }
25
31
 
26
32
  export type CanonArtistPk = "id";
27
33
  export type CanonArtistId = CanonArtist[CanonArtistPk];
28
- export type CanonArtistOptionalAttributes = "description" | "id" | "createDate" | "updateDate" | "hasThumbnailPhoto" | "images" | "lastImageHarvestAttempt" | "merchHarvestDay" | "newsHarvestDay";
34
+ export type CanonArtistOptionalAttributes = "description" | "id" | "createDate" | "updateDate" | "hasThumbnailPhoto" | "images" | "lastImageHarvestAttempt" | "merchHarvestDay" | "newsHarvestDay" | "harvestPopularity" | "lastGenreHarvestAttempt" | "genreHarvestCount";
29
35
  export type CanonArtistCreationAttributes = Optional<CanonArtistAttributes, CanonArtistOptionalAttributes>;
30
36
 
31
37
  export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreationAttributes> implements CanonArtistAttributes {
@@ -41,6 +47,9 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
41
47
  lastImageHarvestAttempt?: Date;
42
48
  merchHarvestDay?: number;
43
49
  newsHarvestDay?: number;
50
+ harvestPopularity?: number;
51
+ lastGenreHarvestAttempt?: Date;
52
+ genreHarvestCount!: number;
44
53
 
45
54
  // CanonArtist hasMany CanonArtistAlbumRelation via canonArtistId
46
55
  canonArtistAlbumRelations!: CanonArtistAlbumRelation[];
@@ -102,6 +111,42 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
102
111
  hasCanonTrackIdCanonTrackCanonArtistTrackRelation!: Sequelize.BelongsToManyHasAssociationMixin<CanonTrack, CanonTrackId>;
103
112
  hasCanonTrackIdCanonTrackCanonArtistTrackRelations!: Sequelize.BelongsToManyHasAssociationsMixin<CanonTrack, CanonTrackId>;
104
113
  countCanonTrackIdCanonTrackCanonArtistTrackRelations!: Sequelize.BelongsToManyCountAssociationsMixin;
114
+ // CanonArtist hasMany MerchItem via canonArtistId
115
+ merchItems!: MerchItem[];
116
+ getMerchItems!: Sequelize.HasManyGetAssociationsMixin<MerchItem>;
117
+ setMerchItems!: Sequelize.HasManySetAssociationsMixin<MerchItem, MerchItemId>;
118
+ addMerchItem!: Sequelize.HasManyAddAssociationMixin<MerchItem, MerchItemId>;
119
+ addMerchItems!: Sequelize.HasManyAddAssociationsMixin<MerchItem, MerchItemId>;
120
+ createMerchItem!: Sequelize.HasManyCreateAssociationMixin<MerchItem>;
121
+ removeMerchItem!: Sequelize.HasManyRemoveAssociationMixin<MerchItem, MerchItemId>;
122
+ removeMerchItems!: Sequelize.HasManyRemoveAssociationsMixin<MerchItem, MerchItemId>;
123
+ hasMerchItem!: Sequelize.HasManyHasAssociationMixin<MerchItem, MerchItemId>;
124
+ hasMerchItems!: Sequelize.HasManyHasAssociationsMixin<MerchItem, MerchItemId>;
125
+ countMerchItems!: Sequelize.HasManyCountAssociationsMixin;
126
+ // CanonArtist hasMany MerchOrchestration via canonArtistId
127
+ merchOrchestrations!: MerchOrchestration[];
128
+ getMerchOrchestrations!: Sequelize.HasManyGetAssociationsMixin<MerchOrchestration>;
129
+ setMerchOrchestrations!: Sequelize.HasManySetAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
130
+ addMerchOrchestration!: Sequelize.HasManyAddAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
131
+ addMerchOrchestrations!: Sequelize.HasManyAddAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
132
+ createMerchOrchestration!: Sequelize.HasManyCreateAssociationMixin<MerchOrchestration>;
133
+ removeMerchOrchestration!: Sequelize.HasManyRemoveAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
134
+ removeMerchOrchestrations!: Sequelize.HasManyRemoveAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
135
+ hasMerchOrchestration!: Sequelize.HasManyHasAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
136
+ hasMerchOrchestrations!: Sequelize.HasManyHasAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
137
+ countMerchOrchestrations!: Sequelize.HasManyCountAssociationsMixin;
138
+ // CanonArtist hasMany NewsArticle via canonArtistId
139
+ newsArticles!: NewsArticle[];
140
+ getNewsArticles!: Sequelize.HasManyGetAssociationsMixin<NewsArticle>;
141
+ setNewsArticles!: Sequelize.HasManySetAssociationsMixin<NewsArticle, NewsArticleId>;
142
+ addNewsArticle!: Sequelize.HasManyAddAssociationMixin<NewsArticle, NewsArticleId>;
143
+ addNewsArticles!: Sequelize.HasManyAddAssociationsMixin<NewsArticle, NewsArticleId>;
144
+ createNewsArticle!: Sequelize.HasManyCreateAssociationMixin<NewsArticle>;
145
+ removeNewsArticle!: Sequelize.HasManyRemoveAssociationMixin<NewsArticle, NewsArticleId>;
146
+ removeNewsArticles!: Sequelize.HasManyRemoveAssociationsMixin<NewsArticle, NewsArticleId>;
147
+ hasNewsArticle!: Sequelize.HasManyHasAssociationMixin<NewsArticle, NewsArticleId>;
148
+ hasNewsArticles!: Sequelize.HasManyHasAssociationsMixin<NewsArticle, NewsArticleId>;
149
+ countNewsArticles!: Sequelize.HasManyCountAssociationsMixin;
105
150
  // CanonArtist belongsToMany PlatformAlbum via canonArtistId and canonAlbumId
106
151
  canonAlbumIdPlatformAlbumCanonArtistAlbumRelations!: PlatformAlbum[];
107
152
  getCanonAlbumIdPlatformAlbumCanonArtistAlbumRelations!: Sequelize.BelongsToManyGetAssociationsMixin<PlatformAlbum>;
@@ -182,14 +227,30 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
182
227
  field: 'last_image_harvest_attempt'
183
228
  },
184
229
  merchHarvestDay: {
185
- type: DataTypes.NUMBER,
230
+ type: DataTypes.SMALLINT,
186
231
  allowNull: true,
187
232
  field: 'merch_harvest_day'
188
233
  },
189
234
  newsHarvestDay: {
190
- type: DataTypes.NUMBER,
235
+ type: DataTypes.SMALLINT,
191
236
  allowNull: true,
192
237
  field: 'news_harvest_day'
238
+ },
239
+ harvestPopularity: {
240
+ type: DataTypes.INTEGER,
241
+ allowNull: true,
242
+ field: 'harvest_popularity'
243
+ },
244
+ lastGenreHarvestAttempt: {
245
+ type: DataTypes.DATE,
246
+ allowNull: true,
247
+ field: 'last_genre_harvest_attempt'
248
+ },
249
+ genreHarvestCount: {
250
+ type: DataTypes.INTEGER,
251
+ allowNull: false,
252
+ defaultValue: 0,
253
+ field: 'genre_harvest_count'
193
254
  }
194
255
  }, {
195
256
  sequelize,
@@ -0,0 +1,108 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry';
4
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+
6
+ export interface GuestUserAttributes {
7
+ firstName: string;
8
+ lastName?: string;
9
+ jukeboxSessionId: string;
10
+ ipAddress?: string;
11
+ id: string;
12
+ createDate: Date;
13
+ updateDate: Date;
14
+ }
15
+
16
+ export type GuestUserPk = "id";
17
+ export type GuestUserId = GuestUser[GuestUserPk];
18
+ export type GuestUserOptionalAttributes = "lastName" | "ipAddress" | "id" | "createDate" | "updateDate";
19
+ export type GuestUserCreationAttributes = Optional<GuestUserAttributes, GuestUserOptionalAttributes>;
20
+
21
+ export class GuestUser extends Model<GuestUserAttributes, GuestUserCreationAttributes> implements GuestUserAttributes {
22
+ firstName!: string;
23
+ lastName?: string;
24
+ jukeboxSessionId!: string;
25
+ ipAddress?: string;
26
+ id!: string;
27
+ createDate!: Date;
28
+ updateDate!: Date;
29
+
30
+ // GuestUser hasMany JukeboxQueueEntry via trackAddedGuestUserId
31
+ jukeboxQueueEntries!: JukeboxQueueEntry[];
32
+ getJukeboxQueueEntries!: Sequelize.HasManyGetAssociationsMixin<JukeboxQueueEntry>;
33
+ setJukeboxQueueEntries!: Sequelize.HasManySetAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
34
+ addJukeboxQueueEntry!: Sequelize.HasManyAddAssociationMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
35
+ addJukeboxQueueEntries!: Sequelize.HasManyAddAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
36
+ createJukeboxQueueEntry!: Sequelize.HasManyCreateAssociationMixin<JukeboxQueueEntry>;
37
+ removeJukeboxQueueEntry!: Sequelize.HasManyRemoveAssociationMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
38
+ removeJukeboxQueueEntries!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
39
+ hasJukeboxQueueEntry!: Sequelize.HasManyHasAssociationMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
40
+ hasJukeboxQueueEntries!: Sequelize.HasManyHasAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
41
+ countJukeboxQueueEntries!: Sequelize.HasManyCountAssociationsMixin;
42
+ // GuestUser belongsTo JukeboxSession via jukeboxSessionId
43
+ jukeboxSession!: JukeboxSession;
44
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
45
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
46
+ createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
47
+
48
+ static initModel(sequelize: Sequelize.Sequelize): typeof GuestUser {
49
+ return GuestUser.init({
50
+ firstName: {
51
+ type: DataTypes.TEXT,
52
+ allowNull: false,
53
+ field: 'first_name'
54
+ },
55
+ lastName: {
56
+ type: DataTypes.TEXT,
57
+ allowNull: true,
58
+ field: 'last_name'
59
+ },
60
+ jukeboxSessionId: {
61
+ type: DataTypes.UUID,
62
+ allowNull: false,
63
+ references: {
64
+ model: 'jukebox_session',
65
+ key: 'id'
66
+ },
67
+ field: 'jukebox_session_id'
68
+ },
69
+ ipAddress: {
70
+ type: DataTypes.TEXT,
71
+ allowNull: true,
72
+ field: 'ip_address'
73
+ },
74
+ id: {
75
+ type: DataTypes.UUID,
76
+ allowNull: false,
77
+ defaultValue: DataTypes.UUIDV4,
78
+ primaryKey: true
79
+ },
80
+ createDate: {
81
+ type: DataTypes.DATE,
82
+ allowNull: false,
83
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
84
+ field: 'create_date'
85
+ },
86
+ updateDate: {
87
+ type: DataTypes.DATE,
88
+ allowNull: false,
89
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
90
+ field: 'update_date'
91
+ }
92
+ }, {
93
+ sequelize,
94
+ tableName: 'guest_user',
95
+ schema: 'eb',
96
+ timestamps: false,
97
+ indexes: [
98
+ {
99
+ name: "guest_user_pkey",
100
+ unique: true,
101
+ fields: [
102
+ { name: "id" },
103
+ ]
104
+ },
105
+ ]
106
+ });
107
+ }
108
+ }
@@ -2,16 +2,16 @@ import * as Sequelize from 'sequelize';
2
2
  import { DataTypes, Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { CanonTrack, CanonTrackId } from './CanonTrack';
5
+ import type { GuestUser, GuestUserId } from './GuestUser';
5
6
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
6
7
  import type { JukeboxUser, JukeboxUserId } from './JukeboxUser';
8
+ import type { PlatformTrack, PlatformTrackId } from './PlatformTrack';
7
9
  import type { PlaybackStatusType, PlaybackStatusTypeId } from './PlaybackStatusType';
8
10
  import type { TrackDeletionReason, TrackDeletionReasonId } from './TrackDeletionReason';
9
11
 
10
12
  export interface JukeboxQueueEntryAttributes {
11
13
  jukeboxSessionId: string;
12
- trackId: string;
13
14
  playbackPriority?: number;
14
- trackAddedUserId: string;
15
15
  playbackStarted?: Date;
16
16
  id: string;
17
17
  createdAt: Date;
@@ -19,20 +19,22 @@ export interface JukeboxQueueEntryAttributes {
19
19
  setOrder: number;
20
20
  trackDeletionReasonId: number;
21
21
  playbackStatusTypeId: number;
22
+ trackId?: string;
23
+ trackAddedUserId?: string;
22
24
  trackThumbsUp?: string[];
23
25
  trackThumbsDown?: string[];
26
+ platformTrackId?: string;
27
+ trackAddedGuestUserId?: string;
24
28
  }
25
29
 
26
30
  export type JukeboxQueueEntryPk = "id";
27
31
  export type JukeboxQueueEntryId = JukeboxQueueEntry[JukeboxQueueEntryPk];
28
- export type JukeboxQueueEntryOptionalAttributes = "playbackPriority" | "playbackStarted" | "id" | "createdAt" | "updatedAt" | "setOrder" | "trackDeletionReasonId" | "playbackStatusTypeId" | "trackThumbsUp" | "trackThumbsDown";
32
+ export type JukeboxQueueEntryOptionalAttributes = "playbackPriority" | "playbackStarted" | "id" | "createdAt" | "updatedAt" | "setOrder" | "trackDeletionReasonId" | "playbackStatusTypeId" | "trackId" | "trackAddedUserId" | "trackThumbsUp" | "trackThumbsDown" | "platformTrackId" | "trackAddedGuestUserId";
29
33
  export type JukeboxQueueEntryCreationAttributes = Optional<JukeboxQueueEntryAttributes, JukeboxQueueEntryOptionalAttributes>;
30
34
 
31
35
  export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, JukeboxQueueEntryCreationAttributes> implements JukeboxQueueEntryAttributes {
32
36
  jukeboxSessionId!: string;
33
- trackId!: string;
34
37
  playbackPriority?: number;
35
- trackAddedUserId!: string;
36
38
  playbackStarted?: Date;
37
39
  id!: string;
38
40
  createdAt!: Date;
@@ -40,8 +42,12 @@ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, Jukebo
40
42
  setOrder!: number;
41
43
  trackDeletionReasonId!: number;
42
44
  playbackStatusTypeId!: number;
45
+ trackId?: string;
46
+ trackAddedUserId?: string;
43
47
  trackThumbsUp?: string[];
44
48
  trackThumbsDown?: string[];
49
+ platformTrackId?: string;
50
+ trackAddedGuestUserId?: string;
45
51
 
46
52
  // JukeboxQueueEntry belongsTo AppUser via trackAddedUserId
47
53
  trackAddedUser!: AppUser;
@@ -53,6 +59,11 @@ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, Jukebo
53
59
  getTrack!: Sequelize.BelongsToGetAssociationMixin<CanonTrack>;
54
60
  setTrack!: Sequelize.BelongsToSetAssociationMixin<CanonTrack, CanonTrackId>;
55
61
  createTrack!: Sequelize.BelongsToCreateAssociationMixin<CanonTrack>;
62
+ // JukeboxQueueEntry belongsTo GuestUser via trackAddedGuestUserId
63
+ trackAddedGuestUser!: GuestUser;
64
+ getTrackAddedGuestUser!: Sequelize.BelongsToGetAssociationMixin<GuestUser>;
65
+ setTrackAddedGuestUser!: Sequelize.BelongsToSetAssociationMixin<GuestUser, GuestUserId>;
66
+ createTrackAddedGuestUser!: Sequelize.BelongsToCreateAssociationMixin<GuestUser>;
56
67
  // JukeboxQueueEntry hasMany JukeboxUser via pausedQueueEntryId
57
68
  jukeboxUsers!: JukeboxUser[];
58
69
  getJukeboxUsers!: Sequelize.HasManyGetAssociationsMixin<JukeboxUser>;
@@ -70,6 +81,11 @@ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, Jukebo
70
81
  getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
71
82
  setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
72
83
  createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
84
+ // JukeboxQueueEntry belongsTo PlatformTrack via platformTrackId
85
+ platformTrack!: PlatformTrack;
86
+ getPlatformTrack!: Sequelize.BelongsToGetAssociationMixin<PlatformTrack>;
87
+ setPlatformTrack!: Sequelize.BelongsToSetAssociationMixin<PlatformTrack, PlatformTrackId>;
88
+ createPlatformTrack!: Sequelize.BelongsToCreateAssociationMixin<PlatformTrack>;
73
89
  // JukeboxQueueEntry belongsTo PlaybackStatusType via playbackStatusTypeId
74
90
  playbackStatusType!: PlaybackStatusType;
75
91
  getPlaybackStatusType!: Sequelize.BelongsToGetAssociationMixin<PlaybackStatusType>;
@@ -92,29 +108,11 @@ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, Jukebo
92
108
  },
93
109
  field: 'jukebox_session_id'
94
110
  },
95
- trackId: {
96
- type: DataTypes.UUID,
97
- allowNull: false,
98
- references: {
99
- model: 'canon_track',
100
- key: 'id'
101
- },
102
- field: 'track_id'
103
- },
104
111
  playbackPriority: {
105
112
  type: DataTypes.DECIMAL,
106
113
  allowNull: true,
107
114
  field: 'playback_priority'
108
115
  },
109
- trackAddedUserId: {
110
- type: DataTypes.UUID,
111
- allowNull: false,
112
- references: {
113
- model: 'app_user',
114
- key: 'id'
115
- },
116
- field: 'track_added_user_id'
117
- },
118
116
  playbackStarted: {
119
117
  type: DataTypes.DATE,
120
118
  allowNull: true,
@@ -164,6 +162,24 @@ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, Jukebo
164
162
  },
165
163
  field: 'playback_status_type_id'
166
164
  },
165
+ trackId: {
166
+ type: DataTypes.UUID,
167
+ allowNull: true,
168
+ references: {
169
+ model: 'canon_track',
170
+ key: 'id'
171
+ },
172
+ field: 'track_id'
173
+ },
174
+ trackAddedUserId: {
175
+ type: DataTypes.UUID,
176
+ allowNull: true,
177
+ references: {
178
+ model: 'app_user',
179
+ key: 'id'
180
+ },
181
+ field: 'track_added_user_id'
182
+ },
167
183
  trackThumbsUp: {
168
184
  type: DataTypes.ARRAY(DataTypes.UUID),
169
185
  allowNull: true,
@@ -175,6 +191,24 @@ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, Jukebo
175
191
  allowNull: true,
176
192
  defaultValue: ["ARRAY[]"],
177
193
  field: 'track_thumbs_down'
194
+ },
195
+ platformTrackId: {
196
+ type: DataTypes.UUID,
197
+ allowNull: true,
198
+ references: {
199
+ model: 'platform_track',
200
+ key: 'id'
201
+ },
202
+ field: 'platform_track_id'
203
+ },
204
+ trackAddedGuestUserId: {
205
+ type: DataTypes.UUID,
206
+ allowNull: true,
207
+ references: {
208
+ model: 'guest_user',
209
+ key: 'id'
210
+ },
211
+ field: 'track_added_guest_user_id'
178
212
  }
179
213
  }, {
180
214
  sequelize,