@earbug/db-models 0.0.28 → 0.0.30

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.
@@ -0,0 +1,105 @@
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
+ import type { UserArtistAffinity, UserArtistAffinityId } from './UserArtistAffinity';
6
+ import type { UserGenreAffinity, UserGenreAffinityId } from './UserGenreAffinity';
7
+
8
+ export interface AffinityTierAttributes {
9
+ id: number;
10
+ name: string;
11
+ }
12
+
13
+ export type AffinityTierPk = "id";
14
+ export type AffinityTierId = AffinityTier[AffinityTierPk];
15
+ export type AffinityTierCreationAttributes = AffinityTierAttributes;
16
+
17
+ export class AffinityTier extends Model<AffinityTierAttributes, AffinityTierCreationAttributes> implements AffinityTierAttributes {
18
+ id!: number;
19
+ name!: string;
20
+
21
+ // AffinityTier hasMany JukeboxSessionArtistAffinity via affinityTierId
22
+ jukeboxSessionArtistAffinities!: JukeboxSessionArtistAffinity[];
23
+ getJukeboxSessionArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionArtistAffinity>;
24
+ setJukeboxSessionArtistAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
25
+ addJukeboxSessionArtistAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
26
+ addJukeboxSessionArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
27
+ createJukeboxSessionArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionArtistAffinity>;
28
+ removeJukeboxSessionArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
29
+ removeJukeboxSessionArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
30
+ hasJukeboxSessionArtistAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
31
+ hasJukeboxSessionArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
32
+ countJukeboxSessionArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
33
+ // AffinityTier hasMany JukeboxSessionGenreAffinity via affinityTierId
34
+ jukeboxSessionGenreAffinities!: JukeboxSessionGenreAffinity[];
35
+ getJukeboxSessionGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionGenreAffinity>;
36
+ setJukeboxSessionGenreAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
37
+ addJukeboxSessionGenreAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
38
+ addJukeboxSessionGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
39
+ createJukeboxSessionGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionGenreAffinity>;
40
+ removeJukeboxSessionGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
41
+ removeJukeboxSessionGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
42
+ hasJukeboxSessionGenreAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
43
+ hasJukeboxSessionGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
44
+ countJukeboxSessionGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
45
+ // AffinityTier hasMany UserArtistAffinity via affinityTierId
46
+ userArtistAffinities!: UserArtistAffinity[];
47
+ getUserArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<UserArtistAffinity>;
48
+ setUserArtistAffinities!: Sequelize.HasManySetAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
49
+ addUserArtistAffinity!: Sequelize.HasManyAddAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
50
+ addUserArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
51
+ createUserArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<UserArtistAffinity>;
52
+ removeUserArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
53
+ removeUserArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
54
+ hasUserArtistAffinity!: Sequelize.HasManyHasAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
55
+ hasUserArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
56
+ countUserArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
57
+ // AffinityTier hasMany UserGenreAffinity via affinityTierId
58
+ userGenreAffinities!: UserGenreAffinity[];
59
+ getUserGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<UserGenreAffinity>;
60
+ setUserGenreAffinities!: Sequelize.HasManySetAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
61
+ addUserGenreAffinity!: Sequelize.HasManyAddAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
62
+ addUserGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
63
+ createUserGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<UserGenreAffinity>;
64
+ removeUserGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
65
+ removeUserGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
66
+ hasUserGenreAffinity!: Sequelize.HasManyHasAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
67
+ hasUserGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
68
+ countUserGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
69
+
70
+ static initModel(sequelize: Sequelize.Sequelize): typeof AffinityTier {
71
+ return AffinityTier.init({
72
+ id: {
73
+ type: DataTypes.SMALLINT,
74
+ allowNull: false,
75
+ primaryKey: true
76
+ },
77
+ name: {
78
+ type: DataTypes.STRING(32),
79
+ allowNull: false,
80
+ unique: "affinity_tier_name_unique"
81
+ }
82
+ }, {
83
+ sequelize,
84
+ tableName: 'affinity_tier',
85
+ schema: 'eb',
86
+ timestamps: false,
87
+ indexes: [
88
+ {
89
+ name: "affinity_tier_name_unique",
90
+ unique: true,
91
+ fields: [
92
+ { name: "name" },
93
+ ]
94
+ },
95
+ {
96
+ name: "affinity_tier_pkey",
97
+ unique: true,
98
+ fields: [
99
+ { name: "id" },
100
+ ]
101
+ },
102
+ ]
103
+ });
104
+ }
105
+ }
package/models/AppUser.ts CHANGED
@@ -12,9 +12,11 @@ import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUse
12
12
  import type { RadioShow, RadioShowId } from './RadioShow';
13
13
  import type { State, StateId } from './State';
14
14
  import type { UserAffinity, UserAffinityId } from './UserAffinity';
15
+ import type { UserArtistAffinity, UserArtistAffinityId } from './UserArtistAffinity';
15
16
  import type { UserComments, UserCommentsId } from './UserComments';
16
17
  import type { UserContacts, UserContactsId } from './UserContacts';
17
18
  import type { UserEngagementFactor, UserEngagementFactorId } from './UserEngagementFactor';
19
+ import type { UserGenreAffinity, UserGenreAffinityId } from './UserGenreAffinity';
18
20
  import type { UserLikes, UserLikesId } from './UserLikes';
19
21
 
20
22
  export interface AppUserAttributes {
@@ -212,6 +214,18 @@ export class AppUser extends Model<AppUserAttributes, AppUserCreationAttributes>
212
214
  hasUserAffinity!: Sequelize.HasManyHasAssociationMixin<UserAffinity, UserAffinityId>;
213
215
  hasUserAffinities!: Sequelize.HasManyHasAssociationsMixin<UserAffinity, UserAffinityId>;
214
216
  countUserAffinities!: Sequelize.HasManyCountAssociationsMixin;
217
+ // AppUser hasMany UserArtistAffinity via userId
218
+ userArtistAffinities!: UserArtistAffinity[];
219
+ getUserArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<UserArtistAffinity>;
220
+ setUserArtistAffinities!: Sequelize.HasManySetAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
221
+ addUserArtistAffinity!: Sequelize.HasManyAddAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
222
+ addUserArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
223
+ createUserArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<UserArtistAffinity>;
224
+ removeUserArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
225
+ removeUserArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
226
+ hasUserArtistAffinity!: Sequelize.HasManyHasAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
227
+ hasUserArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
228
+ countUserArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
215
229
  // AppUser hasMany UserComments via appUserId
216
230
  userComments!: UserComments[];
217
231
  getUserComments!: Sequelize.HasManyGetAssociationsMixin<UserComments>;
@@ -248,6 +262,18 @@ export class AppUser extends Model<AppUserAttributes, AppUserCreationAttributes>
248
262
  hasUserEngagementFactor!: Sequelize.HasManyHasAssociationMixin<UserEngagementFactor, UserEngagementFactorId>;
249
263
  hasUserEngagementFactors!: Sequelize.HasManyHasAssociationsMixin<UserEngagementFactor, UserEngagementFactorId>;
250
264
  countUserEngagementFactors!: Sequelize.HasManyCountAssociationsMixin;
265
+ // AppUser hasMany UserGenreAffinity via userId
266
+ userGenreAffinities!: UserGenreAffinity[];
267
+ getUserGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<UserGenreAffinity>;
268
+ setUserGenreAffinities!: Sequelize.HasManySetAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
269
+ addUserGenreAffinity!: Sequelize.HasManyAddAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
270
+ addUserGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
271
+ createUserGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<UserGenreAffinity>;
272
+ removeUserGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
273
+ removeUserGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
274
+ hasUserGenreAffinity!: Sequelize.HasManyHasAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
275
+ hasUserGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
276
+ countUserGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
251
277
  // AppUser hasMany UserLikes via appUserId
252
278
  userLikes!: UserLikes[];
253
279
  getUserLikes!: Sequelize.HasManyGetAssociationsMixin<UserLikes>;
@@ -5,11 +5,13 @@ 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';
11
12
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
12
13
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
14
+ import type { UserArtistAffinity, UserArtistAffinityId } from './UserArtistAffinity';
13
15
 
14
16
  export interface CanonArtistAttributes {
15
17
  name: string;
@@ -111,6 +113,18 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
111
113
  hasCanonTrackIdCanonTrackCanonArtistTrackRelation!: Sequelize.BelongsToManyHasAssociationMixin<CanonTrack, CanonTrackId>;
112
114
  hasCanonTrackIdCanonTrackCanonArtistTrackRelations!: Sequelize.BelongsToManyHasAssociationsMixin<CanonTrack, CanonTrackId>;
113
115
  countCanonTrackIdCanonTrackCanonArtistTrackRelations!: Sequelize.BelongsToManyCountAssociationsMixin;
116
+ // CanonArtist hasMany JukeboxSessionArtistAffinity via canonArtistId
117
+ jukeboxSessionArtistAffinities!: JukeboxSessionArtistAffinity[];
118
+ getJukeboxSessionArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionArtistAffinity>;
119
+ setJukeboxSessionArtistAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
120
+ addJukeboxSessionArtistAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
121
+ addJukeboxSessionArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
122
+ createJukeboxSessionArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionArtistAffinity>;
123
+ removeJukeboxSessionArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
124
+ removeJukeboxSessionArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
125
+ hasJukeboxSessionArtistAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
126
+ hasJukeboxSessionArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionArtistAffinity, JukeboxSessionArtistAffinityId>;
127
+ countJukeboxSessionArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
114
128
  // CanonArtist hasMany MerchItem via canonArtistId
115
129
  merchItems!: MerchItem[];
116
130
  getMerchItems!: Sequelize.HasManyGetAssociationsMixin<MerchItem>;
@@ -171,6 +185,18 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
171
185
  hasPlatformArtistIdPlatformArtist!: Sequelize.BelongsToManyHasAssociationMixin<PlatformArtist, PlatformArtistId>;
172
186
  hasPlatformArtistIdPlatformArtists!: Sequelize.BelongsToManyHasAssociationsMixin<PlatformArtist, PlatformArtistId>;
173
187
  countPlatformArtistIdPlatformArtists!: Sequelize.BelongsToManyCountAssociationsMixin;
188
+ // CanonArtist hasMany UserArtistAffinity via canonArtistId
189
+ userArtistAffinities!: UserArtistAffinity[];
190
+ getUserArtistAffinities!: Sequelize.HasManyGetAssociationsMixin<UserArtistAffinity>;
191
+ setUserArtistAffinities!: Sequelize.HasManySetAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
192
+ addUserArtistAffinity!: Sequelize.HasManyAddAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
193
+ addUserArtistAffinities!: Sequelize.HasManyAddAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
194
+ createUserArtistAffinity!: Sequelize.HasManyCreateAssociationMixin<UserArtistAffinity>;
195
+ removeUserArtistAffinity!: Sequelize.HasManyRemoveAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
196
+ removeUserArtistAffinities!: Sequelize.HasManyRemoveAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
197
+ hasUserArtistAffinity!: Sequelize.HasManyHasAssociationMixin<UserArtistAffinity, UserArtistAffinityId>;
198
+ hasUserArtistAffinities!: Sequelize.HasManyHasAssociationsMixin<UserArtistAffinity, UserArtistAffinityId>;
199
+ countUserArtistAffinities!: Sequelize.HasManyCountAssociationsMixin;
174
200
 
175
201
  static initModel(sequelize: Sequelize.Sequelize): typeof CanonArtist {
176
202
  return CanonArtist.init({
@@ -6,10 +6,12 @@ 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';
12
13
  import type { RadioShowGenres, RadioShowGenresId } from './RadioShowGenres';
14
+ import type { UserGenreAffinity, UserGenreAffinityId } from './UserGenreAffinity';
13
15
 
14
16
  export interface CanonGenreAttributes {
15
17
  name: string;
@@ -107,6 +109,18 @@ export class CanonGenre extends Model<CanonGenreAttributes, CanonGenreCreationAt
107
109
  hasJukeboxCanonGenreRelation!: Sequelize.HasManyHasAssociationMixin<JukeboxCanonGenreRelation, JukeboxCanonGenreRelationId>;
108
110
  hasJukeboxCanonGenreRelations!: Sequelize.HasManyHasAssociationsMixin<JukeboxCanonGenreRelation, JukeboxCanonGenreRelationId>;
109
111
  countJukeboxCanonGenreRelations!: Sequelize.HasManyCountAssociationsMixin;
112
+ // CanonGenre hasMany JukeboxSessionGenreAffinity via canonGenreId
113
+ jukeboxSessionGenreAffinities!: JukeboxSessionGenreAffinity[];
114
+ getJukeboxSessionGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<JukeboxSessionGenreAffinity>;
115
+ setJukeboxSessionGenreAffinities!: Sequelize.HasManySetAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
116
+ addJukeboxSessionGenreAffinity!: Sequelize.HasManyAddAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
117
+ addJukeboxSessionGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
118
+ createJukeboxSessionGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<JukeboxSessionGenreAffinity>;
119
+ removeJukeboxSessionGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
120
+ removeJukeboxSessionGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
121
+ hasJukeboxSessionGenreAffinity!: Sequelize.HasManyHasAssociationMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
122
+ hasJukeboxSessionGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<JukeboxSessionGenreAffinity, JukeboxSessionGenreAffinityId>;
123
+ countJukeboxSessionGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
110
124
  // CanonGenre belongsToMany PlatformAlbum via canonGenreId and canonAlbumId
111
125
  canonAlbumIdPlatformAlbums!: PlatformAlbum[];
112
126
  getCanonAlbumIdPlatformAlbums!: Sequelize.BelongsToManyGetAssociationsMixin<PlatformAlbum>;
@@ -155,6 +169,18 @@ export class CanonGenre extends Model<CanonGenreAttributes, CanonGenreCreationAt
155
169
  hasRadioShowGenre!: Sequelize.HasManyHasAssociationMixin<RadioShowGenres, RadioShowGenresId>;
156
170
  hasRadioShowGenres!: Sequelize.HasManyHasAssociationsMixin<RadioShowGenres, RadioShowGenresId>;
157
171
  countRadioShowGenres!: Sequelize.HasManyCountAssociationsMixin;
172
+ // CanonGenre hasMany UserGenreAffinity via canonGenreId
173
+ userGenreAffinities!: UserGenreAffinity[];
174
+ getUserGenreAffinities!: Sequelize.HasManyGetAssociationsMixin<UserGenreAffinity>;
175
+ setUserGenreAffinities!: Sequelize.HasManySetAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
176
+ addUserGenreAffinity!: Sequelize.HasManyAddAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
177
+ addUserGenreAffinities!: Sequelize.HasManyAddAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
178
+ createUserGenreAffinity!: Sequelize.HasManyCreateAssociationMixin<UserGenreAffinity>;
179
+ removeUserGenreAffinity!: Sequelize.HasManyRemoveAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
180
+ removeUserGenreAffinities!: Sequelize.HasManyRemoveAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
181
+ hasUserGenreAffinity!: Sequelize.HasManyHasAssociationMixin<UserGenreAffinity, UserGenreAffinityId>;
182
+ hasUserGenreAffinities!: Sequelize.HasManyHasAssociationsMixin<UserGenreAffinity, UserGenreAffinityId>;
183
+ countUserGenreAffinities!: Sequelize.HasManyCountAssociationsMixin;
158
184
 
159
185
  static initModel(sequelize: Sequelize.Sequelize): typeof CanonGenre {
160
186
  return CanonGenre.init({
@@ -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
+ }