@earbug/db-models 0.0.27 → 0.0.29

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.
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- 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.FeedContentType = exports.FeedConfig = 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.AffinityRelationshipType = exports.AccessControlPreference = void 0;
4
- exports.UserLikes = exports.UserEngagementFactor = exports.UserContacts = exports.UserComments = exports.UserAffinity = 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 = exports.MetricsDaily = exports.MerchType = exports.MerchPlatform = void 0;
3
+ exports.KnexMigrations = exports.JukeboxUserType = exports.JukeboxUser = exports.JukeboxType = exports.JukeboxTerminationCondition = exports.JukeboxStatus = exports.JukeboxSessionGenreAffinity = exports.JukeboxSessionArtistAffinity = exports.JukeboxSession = exports.JukeboxQueueMode = exports.JukeboxQueueEntry = exports.JukeboxInvite = exports.JukeboxCanonGenreRelation = exports.JukeboxAccessType = exports.GuestUser = exports.FeedContentType = exports.FeedConfig = 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.AffinityTier = exports.AffinityRelationshipType = exports.AccessControlPreference = void 0;
4
+ exports.UserLikes = exports.UserEngagementFactor = exports.UserContacts = exports.UserComments = exports.UserAffinity = 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 = exports.MetricsDaily = exports.MerchType = exports.MerchPlatform = exports.MerchOrchestration = exports.MerchItem = exports.KnexMigrationsLock = 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; } });
8
8
  const AffinityRelationshipType_1 = require("./AffinityRelationshipType");
9
9
  Object.defineProperty(exports, "AffinityRelationshipType", { enumerable: true, get: function () { return AffinityRelationshipType_1.AffinityRelationshipType; } });
10
+ const AffinityTier_1 = require("./AffinityTier");
11
+ Object.defineProperty(exports, "AffinityTier", { enumerable: true, get: function () { return AffinityTier_1.AffinityTier; } });
10
12
  const AppUser_1 = require("./AppUser");
11
13
  Object.defineProperty(exports, "AppUser", { enumerable: true, get: function () { return AppUser_1.AppUser; } });
12
14
  const AppUserDevice_1 = require("./AppUserDevice");
@@ -85,6 +87,10 @@ const JukeboxQueueMode_1 = require("./JukeboxQueueMode");
85
87
  Object.defineProperty(exports, "JukeboxQueueMode", { enumerable: true, get: function () { return JukeboxQueueMode_1.JukeboxQueueMode; } });
86
88
  const JukeboxSession_1 = require("./JukeboxSession");
87
89
  Object.defineProperty(exports, "JukeboxSession", { enumerable: true, get: function () { return JukeboxSession_1.JukeboxSession; } });
90
+ const JukeboxSessionArtistAffinity_1 = require("./JukeboxSessionArtistAffinity");
91
+ Object.defineProperty(exports, "JukeboxSessionArtistAffinity", { enumerable: true, get: function () { return JukeboxSessionArtistAffinity_1.JukeboxSessionArtistAffinity; } });
92
+ const JukeboxSessionGenreAffinity_1 = require("./JukeboxSessionGenreAffinity");
93
+ Object.defineProperty(exports, "JukeboxSessionGenreAffinity", { enumerable: true, get: function () { return JukeboxSessionGenreAffinity_1.JukeboxSessionGenreAffinity; } });
88
94
  const JukeboxStatus_1 = require("./JukeboxStatus");
89
95
  Object.defineProperty(exports, "JukeboxStatus", { enumerable: true, get: function () { return JukeboxStatus_1.JukeboxStatus; } });
90
96
  const JukeboxTerminationCondition_1 = require("./JukeboxTerminationCondition");
@@ -188,6 +194,7 @@ Object.defineProperty(exports, "UserLikes", { enumerable: true, get: function ()
188
194
  function initModels(sequelize) {
189
195
  const AccessControlPreference = AccessControlPreference_1.AccessControlPreference.initModel(sequelize);
190
196
  const AffinityRelationshipType = AffinityRelationshipType_1.AffinityRelationshipType.initModel(sequelize);
197
+ const AffinityTier = AffinityTier_1.AffinityTier.initModel(sequelize);
191
198
  const AppUser = AppUser_1.AppUser.initModel(sequelize);
192
199
  const AppUserDevice = AppUserDevice_1.AppUserDevice.initModel(sequelize);
193
200
  const AppUserFollowRelation = AppUserFollowRelation_1.AppUserFollowRelation.initModel(sequelize);
@@ -227,6 +234,8 @@ function initModels(sequelize) {
227
234
  const JukeboxQueueEntry = JukeboxQueueEntry_1.JukeboxQueueEntry.initModel(sequelize);
228
235
  const JukeboxQueueMode = JukeboxQueueMode_1.JukeboxQueueMode.initModel(sequelize);
229
236
  const JukeboxSession = JukeboxSession_1.JukeboxSession.initModel(sequelize);
237
+ const JukeboxSessionArtistAffinity = JukeboxSessionArtistAffinity_1.JukeboxSessionArtistAffinity.initModel(sequelize);
238
+ const JukeboxSessionGenreAffinity = JukeboxSessionGenreAffinity_1.JukeboxSessionGenreAffinity.initModel(sequelize);
230
239
  const JukeboxStatus = JukeboxStatus_1.JukeboxStatus.initModel(sequelize);
231
240
  const JukeboxTerminationCondition = JukeboxTerminationCondition_1.JukeboxTerminationCondition.initModel(sequelize);
232
241
  const JukeboxType = JukeboxType_1.JukeboxType.initModel(sequelize);
@@ -323,6 +332,10 @@ function initModels(sequelize) {
323
332
  PlatformTrack.belongsToMany(PlatformGenre, { as: 'platformGenreIdPlatformGenrePlatformTrackGenreRelations', through: PlatformTrackGenreRelation, foreignKey: "platformTrackId", otherKey: "platformGenreId" });
324
333
  UserAffinity.belongsTo(AffinityRelationshipType, { as: "affinityRelationshipType", foreignKey: "affinityRelationshipTypeId" });
325
334
  AffinityRelationshipType.hasMany(UserAffinity, { as: "userAffinities", foreignKey: "affinityRelationshipTypeId" });
335
+ JukeboxSessionArtistAffinity.belongsTo(AffinityTier, { as: "affinityTier", foreignKey: "affinityTierId" });
336
+ AffinityTier.hasMany(JukeboxSessionArtistAffinity, { as: "jukeboxSessionArtistAffinities", foreignKey: "affinityTierId" });
337
+ JukeboxSessionGenreAffinity.belongsTo(AffinityTier, { as: "affinityTier", foreignKey: "affinityTierId" });
338
+ AffinityTier.hasMany(JukeboxSessionGenreAffinity, { as: "jukeboxSessionGenreAffinities", foreignKey: "affinityTierId" });
326
339
  AppUserDevice.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
327
340
  AppUser.hasMany(AppUserDevice, { as: "appUserDevices", foreignKey: "appUserId" });
328
341
  AppUserFollowRelation.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
@@ -375,6 +388,8 @@ function initModels(sequelize) {
375
388
  CanonArtist.hasMany(CanonArtistTrackRelation, { as: "canonArtistTrackRelations", foreignKey: "canonArtistId" });
376
389
  CanonToPlatformArtistRelation.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
377
390
  CanonArtist.hasMany(CanonToPlatformArtistRelation, { as: "canonToPlatformArtistRelations", foreignKey: "canonArtistId" });
391
+ JukeboxSessionArtistAffinity.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
392
+ CanonArtist.hasMany(JukeboxSessionArtistAffinity, { as: "jukeboxSessionArtistAffinities", foreignKey: "canonArtistId" });
378
393
  MerchItem.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
379
394
  CanonArtist.hasMany(MerchItem, { as: "merchItems", foreignKey: "canonArtistId" });
380
395
  MerchOrchestration.belongsTo(CanonArtist, { as: "canonArtist", foreignKey: "canonArtistId" });
@@ -391,6 +406,8 @@ function initModels(sequelize) {
391
406
  CanonGenre.hasMany(CanonToPlatformGenreRelation, { as: "canonToPlatformGenreRelations", foreignKey: "canonGenreId" });
392
407
  JukeboxCanonGenreRelation.belongsTo(CanonGenre, { as: "canonGenre", foreignKey: "canonGenreId" });
393
408
  CanonGenre.hasMany(JukeboxCanonGenreRelation, { as: "jukeboxCanonGenreRelations", foreignKey: "canonGenreId" });
409
+ JukeboxSessionGenreAffinity.belongsTo(CanonGenre, { as: "canonGenre", foreignKey: "canonGenreId" });
410
+ CanonGenre.hasMany(JukeboxSessionGenreAffinity, { as: "jukeboxSessionGenreAffinities", foreignKey: "canonGenreId" });
394
411
  RadioShowGenres.belongsTo(CanonGenre, { as: "canonGenre", foreignKey: "canonGenreId" });
395
412
  CanonGenre.hasMany(RadioShowGenres, { as: "radioShowGenres", foreignKey: "canonGenreId" });
396
413
  CanonAlbumLabelRelation.belongsTo(CanonLabel, { as: "canonLabel", foreignKey: "canonLabelId" });
@@ -439,6 +456,10 @@ function initModels(sequelize) {
439
456
  JukeboxSession.hasMany(JukeboxInvite, { as: "jukeboxInvites", foreignKey: "jukeboxSessionId" });
440
457
  JukeboxQueueEntry.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
441
458
  JukeboxSession.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "jukeboxSessionId" });
459
+ JukeboxSessionArtistAffinity.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
460
+ JukeboxSession.hasMany(JukeboxSessionArtistAffinity, { as: "jukeboxSessionArtistAffinities", foreignKey: "jukeboxSessionId" });
461
+ JukeboxSessionGenreAffinity.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
462
+ JukeboxSession.hasMany(JukeboxSessionGenreAffinity, { as: "jukeboxSessionGenreAffinities", foreignKey: "jukeboxSessionId" });
442
463
  JukeboxUser.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
443
464
  JukeboxSession.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxSessionId" });
444
465
  Notification.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
@@ -576,6 +597,7 @@ function initModels(sequelize) {
576
597
  return {
577
598
  AccessControlPreference: AccessControlPreference,
578
599
  AffinityRelationshipType: AffinityRelationshipType,
600
+ AffinityTier: AffinityTier,
579
601
  AppUser: AppUser,
580
602
  AppUserDevice: AppUserDevice,
581
603
  AppUserFollowRelation: AppUserFollowRelation,
@@ -615,6 +637,8 @@ function initModels(sequelize) {
615
637
  JukeboxQueueEntry: JukeboxQueueEntry,
616
638
  JukeboxQueueMode: JukeboxQueueMode,
617
639
  JukeboxSession: JukeboxSession,
640
+ JukeboxSessionArtistAffinity: JukeboxSessionArtistAffinity,
641
+ JukeboxSessionGenreAffinity: JukeboxSessionGenreAffinity,
618
642
  JukeboxStatus: JukeboxStatus,
619
643
  JukeboxTerminationCondition: JukeboxTerminationCondition,
620
644
  JukeboxType: JukeboxType,
@@ -0,0 +1,79 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId } from './JukeboxSessionArtistAffinity';
4
+ import type { JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId } from './JukeboxSessionGenreAffinity';
5
+
6
+ export interface AffinityTierAttributes {
7
+ id: number;
8
+ name: string;
9
+ }
10
+
11
+ export type AffinityTierPk = "id";
12
+ export type AffinityTierId = AffinityTier[AffinityTierPk];
13
+ export type AffinityTierCreationAttributes = AffinityTierAttributes;
14
+
15
+ export class AffinityTier extends Model<AffinityTierAttributes, AffinityTierCreationAttributes> implements AffinityTierAttributes {
16
+ id!: number;
17
+ name!: string;
18
+
19
+ // AffinityTier hasMany JukeboxSessionArtistAffinity via affinityTierId
20
+ jukeboxSessionArtistAffinities!: JukeboxSessionArtistAffinity[];
21
+ getJukeboxSessionArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionArtistAffinity>;
22
+ setJukeboxSessionArtistAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
23
+ addJukeboxSessionArtistAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
24
+ addJukeboxSessionArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
25
+ createJukeboxSessionArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionArtistAffinity>;
26
+ removeJukeboxSessionArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
27
+ removeJukeboxSessionArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
28
+ hasJukeboxSessionArtistAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
29
+ hasJukeboxSessionArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
30
+ countJukeboxSessionArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
31
+ // AffinityTier hasMany JukeboxSessionGenreAffinity via affinityTierId
32
+ jukeboxSessionGenreAffinities!: JukeboxSessionGenreAffinity[];
33
+ getJukeboxSessionGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionGenreAffinity>;
34
+ setJukeboxSessionGenreAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
35
+ addJukeboxSessionGenreAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
36
+ addJukeboxSessionGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
37
+ createJukeboxSessionGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionGenreAffinity>;
38
+ removeJukeboxSessionGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
39
+ removeJukeboxSessionGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
40
+ hasJukeboxSessionGenreAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
41
+ hasJukeboxSessionGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
42
+ countJukeboxSessionGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
43
+
44
+ static initModel(sequelize: Sequelize.Sequelize): typeof AffinityTier {
45
+ return AffinityTier.init({
46
+ id: {
47
+ type: DataTypes.SMALLINT,
48
+ allowNull: false,
49
+ primaryKey: true
50
+ },
51
+ name: {
52
+ type: DataTypes.STRING(32),
53
+ allowNull: false,
54
+ unique: "affinity_tier_name_unique"
55
+ }
56
+ }, {
57
+ sequelize,
58
+ tableName: 'affinity_tier',
59
+ schema: 'eb',
60
+ timestamps: false,
61
+ indexes: [
62
+ {
63
+ name: "affinity_tier_name_unique",
64
+ unique: true,
65
+ fields: [
66
+ { name: "name" },
67
+ ]
68
+ },
69
+ {
70
+ name: "affinity_tier_pkey",
71
+ unique: true,
72
+ fields: [
73
+ { name: "id" },
74
+ ]
75
+ },
76
+ ]
77
+ });
78
+ }
79
+ }
@@ -5,6 +5,7 @@ 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 { JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId } from './JukeboxSessionArtistAffinity';
8
9
  import type { MerchItem, MerchItemId } from './MerchItem';
9
10
  import type { MerchOrchestration, MerchOrchestrationId } from './MerchOrchestration';
10
11
  import type { NewsArticle, NewsArticleId } from './NewsArticle';
@@ -111,6 +112,18 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
111
112
  hasCanonTrackIdCanonTrackCanonArtistTrackRelation!: Sequelize.BelongsToManyHasAssociationMixin<CanonTrack, CanonTrackId>;
112
113
  hasCanonTrackIdCanonTrackCanonArtistTrackRelations!: Sequelize.BelongsToManyHasAssociationsMixin<CanonTrack, CanonTrackId>;
113
114
  countCanonTrackIdCanonTrackCanonArtistTrackRelations!: Sequelize.BelongsToManyCountAssociationsMixin;
115
+ // CanonArtist hasMany JukeboxSessionArtistAffinity via canonArtistId
116
+ jukeboxSessionArtistAffinities!: JukeboxSessionArtistAffinity[];
117
+ getJukeboxSessionArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionArtistAffinity>;
118
+ setJukeboxSessionArtistAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
119
+ addJukeboxSessionArtistAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
120
+ addJukeboxSessionArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
121
+ createJukeboxSessionArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionArtistAffinity>;
122
+ removeJukeboxSessionArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
123
+ removeJukeboxSessionArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
124
+ hasJukeboxSessionArtistAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
125
+ hasJukeboxSessionArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
126
+ countJukeboxSessionArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
114
127
  // CanonArtist hasMany MerchItem via canonArtistId
115
128
  merchItems!: MerchItem[];
116
129
  getMerchItems!: Sequelize.HasManyGetAssociationsMixin<MerchItem>;
@@ -6,6 +6,7 @@ import type { CanonGenreExternalReferenceRelation, CanonGenreExternalReferenceRe
6
6
  import type { CanonToPlatformGenreRelation, CanonToPlatformGenreRelationId } from './CanonToPlatformGenreRelation';
7
7
  import type { ExternalReference, ExternalReferenceId } from './ExternalReference';
8
8
  import type { JukeboxCanonGenreRelation, JukeboxCanonGenreRelationId } from './JukeboxCanonGenreRelation';
9
+ import type { JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId } from './JukeboxSessionGenreAffinity';
9
10
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
10
11
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
11
12
  import type { PlatformGenre, PlatformGenreId } from './PlatformGenre';
@@ -107,6 +108,18 @@ export class CanonGenre extends Model<CanonGenreAttributes, CanonGenreCreationAt
107
108
  hasJukeboxCanonGenreRelation!: Sequelize.HasManyHasAssociationMixin<JukeboxCanonGenreRelation, JukeboxCanonGenreRelationId>;
108
109
  hasJukeboxCanonGenreRelations!: Sequelize.HasManyHasAssociationsMixin<JukeboxCanonGenreRelation, JukeboxCanonGenreRelationId>;
109
110
  countJukeboxCanonGenreRelations!: Sequelize.HasManyCountAssociationsMixin;
111
+ // CanonGenre hasMany JukeboxSessionGenreAffinity via canonGenreId
112
+ jukeboxSessionGenreAffinities!: JukeboxSessionGenreAffinity[];
113
+ getJukeboxSessionGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionGenreAffinity>;
114
+ setJukeboxSessionGenreAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
115
+ addJukeboxSessionGenreAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
116
+ addJukeboxSessionGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
117
+ createJukeboxSessionGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionGenreAffinity>;
118
+ removeJukeboxSessionGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
119
+ removeJukeboxSessionGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
120
+ hasJukeboxSessionGenreAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
121
+ hasJukeboxSessionGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
122
+ countJukeboxSessionGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
110
123
  // CanonGenre belongsToMany PlatformAlbum via canonGenreId and canonAlbumId
111
124
  canonAlbumIdPlatformAlbums!: PlatformAlbum[];
112
125
  getCanonAlbumIdPlatformAlbums!: Sequelize.BelongsToManyGetAssociationsMixin<PlatformAlbum>;
@@ -6,6 +6,8 @@ import type { JukeboxCanonGenreRelation, JukeboxCanonGenreRelationId } from './J
6
6
  import type { JukeboxInvite, JukeboxInviteId } from './JukeboxInvite';
7
7
  import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry';
8
8
  import type { JukeboxQueueMode, JukeboxQueueModeId } from './JukeboxQueueMode';
9
+ import type { JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId } from './JukeboxSessionArtistAffinity';
10
+ import type { JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId } from './JukeboxSessionGenreAffinity';
9
11
  import type { JukeboxStatus, JukeboxStatusId } from './JukeboxStatus';
10
12
  import type { JukeboxTerminationCondition, JukeboxTerminationConditionId } from './JukeboxTerminationCondition';
11
13
  import type { JukeboxType, JukeboxTypeId } from './JukeboxType';
@@ -106,6 +108,30 @@ export class JukeboxSession extends Model<JukeboxSessionAttributes, JukeboxSessi
106
108
  hasJukeboxQueueEntry!: Sequelize.HasManyHasAssociationMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
107
109
  hasJukeboxQueueEntries!: Sequelize.HasManyHasAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
108
110
  countJukeboxQueueEntries!: Sequelize.HasManyCountAssociationsMixin;
111
+ // JukeboxSession hasMany JukeboxSessionArtistAffinity via jukeboxSessionId
112
+ jukeboxSessionArtistAffinities!: JukeboxSessionArtistAffinity[];
113
+ getJukeboxSessionArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionArtistAffinity>;
114
+ setJukeboxSessionArtistAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
115
+ addJukeboxSessionArtistAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
116
+ addJukeboxSessionArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
117
+ createJukeboxSessionArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionArtistAffinity>;
118
+ removeJukeboxSessionArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
119
+ removeJukeboxSessionArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
120
+ hasJukeboxSessionArtistAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
121
+ hasJukeboxSessionArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
122
+ countJukeboxSessionArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
123
+ // JukeboxSession hasMany JukeboxSessionGenreAffinity via jukeboxSessionId
124
+ jukeboxSessionGenreAffinities!: JukeboxSessionGenreAffinity[];
125
+ getJukeboxSessionGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionGenreAffinity>;
126
+ setJukeboxSessionGenreAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
127
+ addJukeboxSessionGenreAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
128
+ addJukeboxSessionGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
129
+ createJukeboxSessionGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionGenreAffinity>;
130
+ removeJukeboxSessionGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
131
+ removeJukeboxSessionGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
132
+ hasJukeboxSessionGenreAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
133
+ hasJukeboxSessionGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
134
+ countJukeboxSessionGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
109
135
  // JukeboxSession hasMany JukeboxUser via jukeboxSessionId
110
136
  jukeboxUsers!: JukeboxUser[];
111
137
  getJukeboxUsers!: Sequelize.HasManyGetAssociationsMixin<JukeboxUser>;
@@ -0,0 +1,136 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { AffinityTier, AffinityTierId } from './AffinityTier';
4
+ import type { CanonArtist, CanonArtistId } from './CanonArtist';
5
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
6
+
7
+ export interface JukeboxSessionArtistAffinityAttributes {
8
+ jukeboxSessionId: string;
9
+ canonArtistId: string;
10
+ affinityTierId: number;
11
+ rank: number;
12
+ id: string;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ }
16
+
17
+ export type JukeboxSessionArtistAffinityPk = "id";
18
+ export type JukeboxSessionArtistAffinityId = JukeboxSessionArtistAffinity[JukeboxSessionArtistAffinityPk];
19
+ export type JukeboxSessionArtistAffinityOptionalAttributes = "id" | "createdAt" | "updatedAt";
20
+ export type JukeboxSessionArtistAffinityCreationAttributes = Optional<JukeboxSessionArtistAffinityAttributes, JukeboxSessionArtistAffinityOptionalAttributes>;
21
+
22
+ export class JukeboxSessionArtistAffinity extends Model<JukeboxSessionArtistAffinityAttributes, JukeboxSessionArtistAffinityCreationAttributes> implements JukeboxSessionArtistAffinityAttributes {
23
+ jukeboxSessionId!: string;
24
+ canonArtistId!: string;
25
+ affinityTierId!: number;
26
+ rank!: number;
27
+ id!: string;
28
+ createdAt!: Date;
29
+ updatedAt!: Date;
30
+
31
+ // JukeboxSessionArtistAffinity belongsTo AffinityTier via affinityTierId
32
+ affinityTier!: AffinityTier;
33
+ getAffinityTier!: Sequelize.BelongsToGetAssociationMixin<AffinityTier>;
34
+ setAffinityTier!: Sequelize.BelongsToSetAssociationMixin<AffinityTier, AffinityTierId>;
35
+ createAffinityTier!: Sequelize.BelongsToCreateAssociationMixin<AffinityTier>;
36
+ // JukeboxSessionArtistAffinity belongsTo CanonArtist via canonArtistId
37
+ canonArtist!: CanonArtist;
38
+ getCanonArtist!: Sequelize.BelongsToGetAssociationMixin<CanonArtist>;
39
+ setCanonArtist!: Sequelize.BelongsToSetAssociationMixin<CanonArtist, CanonArtistId>;
40
+ createCanonArtist!: Sequelize.BelongsToCreateAssociationMixin<CanonArtist>;
41
+ // JukeboxSessionArtistAffinity belongsTo JukeboxSession via jukeboxSessionId
42
+ jukeboxSession!: JukeboxSession;
43
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
44
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
45
+ createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
46
+
47
+ static initModel(sequelize: Sequelize.Sequelize): typeof JukeboxSessionArtistAffinity {
48
+ return JukeboxSessionArtistAffinity.init({
49
+ jukeboxSessionId: {
50
+ type: DataTypes.UUID,
51
+ allowNull: false,
52
+ references: {
53
+ model: 'jukebox_session',
54
+ key: 'id'
55
+ },
56
+ unique: "jukebox_session_artist_affinity_jukebox_session_id_canon_artist",
57
+ field: 'jukebox_session_id'
58
+ },
59
+ canonArtistId: {
60
+ type: DataTypes.UUID,
61
+ allowNull: false,
62
+ references: {
63
+ model: 'canon_artist',
64
+ key: 'id'
65
+ },
66
+ unique: "jukebox_session_artist_affinity_jukebox_session_id_canon_artist",
67
+ field: 'canon_artist_id'
68
+ },
69
+ affinityTierId: {
70
+ type: DataTypes.SMALLINT,
71
+ allowNull: false,
72
+ references: {
73
+ model: 'affinity_tier',
74
+ key: 'id'
75
+ },
76
+ field: 'affinity_tier_id'
77
+ },
78
+ rank: {
79
+ type: DataTypes.INTEGER,
80
+ allowNull: false
81
+ },
82
+ id: {
83
+ type: DataTypes.UUID,
84
+ allowNull: false,
85
+ defaultValue: DataTypes.UUIDV4,
86
+ primaryKey: true
87
+ },
88
+ createdAt: {
89
+ type: DataTypes.DATE,
90
+ allowNull: false,
91
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
92
+ field: 'created_at'
93
+ },
94
+ updatedAt: {
95
+ type: DataTypes.DATE,
96
+ allowNull: false,
97
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
98
+ field: 'updated_at'
99
+ }
100
+ }, {
101
+ sequelize,
102
+ tableName: 'jukebox_session_artist_affinity',
103
+ schema: 'eb',
104
+ timestamps: false,
105
+ indexes: [
106
+ {
107
+ name: "idx_jukebox_session_artist_affinity_artist",
108
+ fields: [
109
+ { name: "canon_artist_id" },
110
+ ]
111
+ },
112
+ {
113
+ name: "idx_jukebox_session_artist_affinity_session",
114
+ fields: [
115
+ { name: "jukebox_session_id" },
116
+ ]
117
+ },
118
+ {
119
+ name: "jukebox_session_artist_affinity_jukebox_session_id_canon_artist",
120
+ unique: true,
121
+ fields: [
122
+ { name: "jukebox_session_id" },
123
+ { name: "canon_artist_id" },
124
+ ]
125
+ },
126
+ {
127
+ name: "jukebox_session_artist_affinity_pkey",
128
+ unique: true,
129
+ fields: [
130
+ { name: "id" },
131
+ ]
132
+ },
133
+ ]
134
+ });
135
+ }
136
+ }
@@ -0,0 +1,136 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { AffinityTier, AffinityTierId } from './AffinityTier';
4
+ import type { CanonGenre, CanonGenreId } from './CanonGenre';
5
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
6
+
7
+ export interface JukeboxSessionGenreAffinityAttributes {
8
+ jukeboxSessionId: string;
9
+ canonGenreId: string;
10
+ affinityTierId: number;
11
+ rank: number;
12
+ id: string;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ }
16
+
17
+ export type JukeboxSessionGenreAffinityPk = "id";
18
+ export type JukeboxSessionGenreAffinityId = JukeboxSessionGenreAffinity[JukeboxSessionGenreAffinityPk];
19
+ export type JukeboxSessionGenreAffinityOptionalAttributes = "id" | "createdAt" | "updatedAt";
20
+ export type JukeboxSessionGenreAffinityCreationAttributes = Optional<JukeboxSessionGenreAffinityAttributes, JukeboxSessionGenreAffinityOptionalAttributes>;
21
+
22
+ export class JukeboxSessionGenreAffinity extends Model<JukeboxSessionGenreAffinityAttributes, JukeboxSessionGenreAffinityCreationAttributes> implements JukeboxSessionGenreAffinityAttributes {
23
+ jukeboxSessionId!: string;
24
+ canonGenreId!: string;
25
+ affinityTierId!: number;
26
+ rank!: number;
27
+ id!: string;
28
+ createdAt!: Date;
29
+ updatedAt!: Date;
30
+
31
+ // JukeboxSessionGenreAffinity belongsTo AffinityTier via affinityTierId
32
+ affinityTier!: AffinityTier;
33
+ getAffinityTier!: Sequelize.BelongsToGetAssociationMixin<AffinityTier>;
34
+ setAffinityTier!: Sequelize.BelongsToSetAssociationMixin<AffinityTier, AffinityTierId>;
35
+ createAffinityTier!: Sequelize.BelongsToCreateAssociationMixin<AffinityTier>;
36
+ // JukeboxSessionGenreAffinity belongsTo CanonGenre via canonGenreId
37
+ canonGenre!: CanonGenre;
38
+ getCanonGenre!: Sequelize.BelongsToGetAssociationMixin<CanonGenre>;
39
+ setCanonGenre!: Sequelize.BelongsToSetAssociationMixin<CanonGenre, CanonGenreId>;
40
+ createCanonGenre!: Sequelize.BelongsToCreateAssociationMixin<CanonGenre>;
41
+ // JukeboxSessionGenreAffinity belongsTo JukeboxSession via jukeboxSessionId
42
+ jukeboxSession!: JukeboxSession;
43
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
44
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
45
+ createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
46
+
47
+ static initModel(sequelize: Sequelize.Sequelize): typeof JukeboxSessionGenreAffinity {
48
+ return JukeboxSessionGenreAffinity.init({
49
+ jukeboxSessionId: {
50
+ type: DataTypes.UUID,
51
+ allowNull: false,
52
+ references: {
53
+ model: 'jukebox_session',
54
+ key: 'id'
55
+ },
56
+ unique: "jukebox_session_genre_affinity_jukebox_session_id_canon_genre_i",
57
+ field: 'jukebox_session_id'
58
+ },
59
+ canonGenreId: {
60
+ type: DataTypes.UUID,
61
+ allowNull: false,
62
+ references: {
63
+ model: 'canon_genre',
64
+ key: 'id'
65
+ },
66
+ unique: "jukebox_session_genre_affinity_jukebox_session_id_canon_genre_i",
67
+ field: 'canon_genre_id'
68
+ },
69
+ affinityTierId: {
70
+ type: DataTypes.SMALLINT,
71
+ allowNull: false,
72
+ references: {
73
+ model: 'affinity_tier',
74
+ key: 'id'
75
+ },
76
+ field: 'affinity_tier_id'
77
+ },
78
+ rank: {
79
+ type: DataTypes.INTEGER,
80
+ allowNull: false
81
+ },
82
+ id: {
83
+ type: DataTypes.UUID,
84
+ allowNull: false,
85
+ defaultValue: DataTypes.UUIDV4,
86
+ primaryKey: true
87
+ },
88
+ createdAt: {
89
+ type: DataTypes.DATE,
90
+ allowNull: false,
91
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
92
+ field: 'created_at'
93
+ },
94
+ updatedAt: {
95
+ type: DataTypes.DATE,
96
+ allowNull: false,
97
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
98
+ field: 'updated_at'
99
+ }
100
+ }, {
101
+ sequelize,
102
+ tableName: 'jukebox_session_genre_affinity',
103
+ schema: 'eb',
104
+ timestamps: false,
105
+ indexes: [
106
+ {
107
+ name: "idx_jukebox_session_genre_affinity_genre",
108
+ fields: [
109
+ { name: "canon_genre_id" },
110
+ ]
111
+ },
112
+ {
113
+ name: "idx_jukebox_session_genre_affinity_session",
114
+ fields: [
115
+ { name: "jukebox_session_id" },
116
+ ]
117
+ },
118
+ {
119
+ name: "jukebox_session_genre_affinity_jukebox_session_id_canon_genre_i",
120
+ unique: true,
121
+ fields: [
122
+ { name: "jukebox_session_id" },
123
+ { name: "canon_genre_id" },
124
+ ]
125
+ },
126
+ {
127
+ name: "jukebox_session_genre_affinity_pkey",
128
+ unique: true,
129
+ fields: [
130
+ { name: "id" },
131
+ ]
132
+ },
133
+ ]
134
+ });
135
+ }
136
+ }