@earbug/db-models 0.0.62 → 0.0.63

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 (128) hide show
  1. package/.dockerignore +10 -0
  2. package/.github/workflows/publish.yaml +303 -0
  3. package/.nvmrc +1 -0
  4. package/Dockerfile.generate +19 -0
  5. package/model_options.json +3 -0
  6. package/models/AccessControlPreference.ts +53 -0
  7. package/models/AffinityRelationshipType.ts +96 -0
  8. package/models/AffinityTier.ts +131 -0
  9. package/models/AppUser.ts +577 -0
  10. package/models/AppUserDevice.ts +101 -0
  11. package/models/AppUserDeviceClassicBackup20260906.ts +66 -0
  12. package/models/AppUserFollowRelation.ts +128 -0
  13. package/models/AppUserPlatformRelation.ts +150 -0
  14. package/models/CanonAlbum.ts +229 -0
  15. package/models/CanonAlbumExternalReferenceRelation.ts +92 -0
  16. package/models/CanonAlbumGenreRelation.ts +86 -0
  17. package/models/CanonAlbumLabelRelation.ts +86 -0
  18. package/models/CanonAlbumTrackRelation.ts +92 -0
  19. package/models/CanonArtist.ts +356 -0
  20. package/models/CanonArtistAlbumRelation.ts +92 -0
  21. package/models/CanonArtistExternalReferenceRelation.ts +92 -0
  22. package/models/CanonArtistGenreRelation.ts +86 -0
  23. package/models/CanonArtistMemberRelation.ts +86 -0
  24. package/models/CanonArtistTrackRelation.ts +92 -0
  25. package/models/CanonGenre.ts +273 -0
  26. package/models/CanonGenreExternalReferenceRelation.ts +92 -0
  27. package/models/CanonLabel.ts +129 -0
  28. package/models/CanonLabelExternalReferenceRelation.ts +92 -0
  29. package/models/CanonMember.ts +130 -0
  30. package/models/CanonMemberExternalReferenceRelation.ts +99 -0
  31. package/models/CanonToPlatformAlbumRelation.ts +92 -0
  32. package/models/CanonToPlatformArtistRelation.ts +92 -0
  33. package/models/CanonToPlatformGenreRelation.ts +86 -0
  34. package/models/CanonToPlatformTrackRelation.ts +92 -0
  35. package/models/CanonTrack.ts +232 -0
  36. package/models/ConfigParam.ts +62 -0
  37. package/models/ExternalReference.ts +201 -0
  38. package/models/FeedConfig.ts +65 -0
  39. package/models/FeedContentType.ts +124 -0
  40. package/models/GuestUser.ts +137 -0
  41. package/models/JukeboxAccessType.ts +60 -0
  42. package/models/JukeboxCanonGenreRelation.ts +108 -0
  43. package/models/JukeboxInvite.ts +125 -0
  44. package/models/JukeboxQueueEntry.ts +247 -0
  45. package/models/JukeboxQueueMode.ts +60 -0
  46. package/models/JukeboxSession.ts +334 -0
  47. package/models/JukeboxSessionArtistAffinity.ts +136 -0
  48. package/models/JukeboxSessionGenreAffinity.ts +136 -0
  49. package/models/JukeboxStatus.ts +58 -0
  50. package/models/JukeboxTerminationCondition.ts +60 -0
  51. package/models/JukeboxType.ts +60 -0
  52. package/models/JukeboxUser.ts +182 -0
  53. package/models/JukeboxUserType.ts +58 -0
  54. package/models/KnexMigrations.ts +60 -0
  55. package/models/KnexMigrationsLock.ts +48 -0
  56. package/models/MerchItem.ts +198 -0
  57. package/models/MerchOrchestration.ts +130 -0
  58. package/models/MerchPlatform.ts +95 -0
  59. package/models/MerchType.ts +89 -0
  60. package/models/MetricsDaily.ts +79 -0
  61. package/models/MetricsEvent.ts +124 -0
  62. package/models/NewsArticle.ts +177 -0
  63. package/models/NewsPlatform.ts +76 -0
  64. package/models/NewsSite.ts +75 -0
  65. package/models/Notification.ts +214 -0
  66. package/models/NotificationType.ts +66 -0
  67. package/models/PauseStatusType.ts +58 -0
  68. package/models/Platform.ts +189 -0
  69. package/models/PlatformAlbum.ts +398 -0
  70. package/models/PlatformAlbumGenreRelation.ts +86 -0
  71. package/models/PlatformAlbumTrackRelation.ts +92 -0
  72. package/models/PlatformArtist.ts +358 -0
  73. package/models/PlatformArtistAlbumRelation.ts +92 -0
  74. package/models/PlatformArtistGenreRelation.ts +86 -0
  75. package/models/PlatformArtistTrackRelation.ts +92 -0
  76. package/models/PlatformGenre.ts +194 -0
  77. package/models/PlatformTrack.ts +339 -0
  78. package/models/PlatformTrackGenreRelation.ts +86 -0
  79. package/models/PlatformUserAlbum.ts +152 -0
  80. package/models/PlatformUserAlbumTrack.ts +138 -0
  81. package/models/PlatformUserPlaylist.ts +260 -0
  82. package/models/PlatformUserPlaylistArtistAffinity.ts +136 -0
  83. package/models/PlatformUserPlaylistGenreAffinity.ts +136 -0
  84. package/models/PlatformUserPlaylistTrack.ts +162 -0
  85. package/models/PlaybackStatus.ts +47 -0
  86. package/models/PlaybackStatusType.ts +58 -0
  87. package/models/RadioShow.ts +209 -0
  88. package/models/RadioShowGenres.ts +107 -0
  89. package/models/RadioShowMedia.ts +181 -0
  90. package/models/RadioShowPlacement.ts +115 -0
  91. package/models/RadioShowPublishRequests.ts +86 -0
  92. package/models/State.ts +86 -0
  93. package/models/TrackDeletionReason.ts +58 -0
  94. package/models/UnmatchedAlbum.ts +66 -0
  95. package/models/UnmatchedArtist.ts +81 -0
  96. package/models/UserAbuseReports.ts +232 -0
  97. package/models/UserAffinity.ts +117 -0
  98. package/models/UserArtistAffinity.ts +136 -0
  99. package/models/UserBookmarks.ts +235 -0
  100. package/models/UserComments.ts +271 -0
  101. package/models/UserContacts.ts +155 -0
  102. package/models/UserEngagementFactor.ts +109 -0
  103. package/models/UserGenreAffinity.ts +136 -0
  104. package/models/UserLikes.ts +235 -0
  105. package/models/UserMessages.ts +189 -0
  106. package/models/Versus.ts +438 -0
  107. package/models/VersusAccessType.ts +66 -0
  108. package/models/VersusCoCreator.ts +111 -0
  109. package/models/VersusCreatorScope.ts +66 -0
  110. package/models/VersusEndMode.ts +66 -0
  111. package/models/VersusEndTimerDuration.ts +81 -0
  112. package/models/VersusEndVoteThreshold.ts +67 -0
  113. package/models/VersusEntityKind.ts +79 -0
  114. package/models/VersusOption.ts +258 -0
  115. package/models/VersusPublishIssue.ts +146 -0
  116. package/models/VersusQuestion.ts +123 -0
  117. package/models/VersusQuestionVariableType.ts +66 -0
  118. package/models/VersusVote.ts +99 -0
  119. package/models/VersusVotingListType.ts +66 -0
  120. package/models/VersusVotingMode.ts +66 -0
  121. package/models/index.ts +3 -0
  122. package/models/init-models.ts +1259 -0
  123. package/models/initDb.ts +72 -0
  124. package/models/rdsCaBundle.ts +5 -0
  125. package/package.json +2 -5
  126. package/scripts/generate-and-upload.mjs +123 -0
  127. package/scripts/update-rds-ca-bundle.mjs +44 -0
  128. package/tsconfig.json +52 -0
@@ -0,0 +1,108 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { CanonGenre, CanonGenreId } from './CanonGenre';
4
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+
6
+ export interface JukeboxCanonGenreRelationAttributes {
7
+ id: string;
8
+ jukeboxSessionId: string;
9
+ canonGenreId: string;
10
+ stateId: number;
11
+ createdAt: Date;
12
+ updatedAt: Date;
13
+ }
14
+
15
+ export type JukeboxCanonGenreRelationPk = "id";
16
+ export type JukeboxCanonGenreRelationId = JukeboxCanonGenreRelation[JukeboxCanonGenreRelationPk];
17
+ export type JukeboxCanonGenreRelationOptionalAttributes = "id" | "createdAt" | "updatedAt";
18
+ export type JukeboxCanonGenreRelationCreationAttributes = Optional<JukeboxCanonGenreRelationAttributes, JukeboxCanonGenreRelationOptionalAttributes>;
19
+
20
+ export class JukeboxCanonGenreRelation extends Model<JukeboxCanonGenreRelationAttributes, JukeboxCanonGenreRelationCreationAttributes> implements JukeboxCanonGenreRelationAttributes {
21
+ id!: string;
22
+ jukeboxSessionId!: string;
23
+ canonGenreId!: string;
24
+ stateId!: number;
25
+ createdAt!: Date;
26
+ updatedAt!: Date;
27
+
28
+ // JukeboxCanonGenreRelation belongsTo CanonGenre via canonGenreId
29
+ canonGenre!: CanonGenre;
30
+ getCanonGenre!: Sequelize.BelongsToGetAssociationMixin<CanonGenre>;
31
+ setCanonGenre!: Sequelize.BelongsToSetAssociationMixin<CanonGenre, CanonGenreId>;
32
+ createCanonGenre!: Sequelize.BelongsToCreateAssociationMixin<CanonGenre>;
33
+ // JukeboxCanonGenreRelation belongsTo JukeboxSession via jukeboxSessionId
34
+ jukeboxSession!: JukeboxSession;
35
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
36
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
37
+ createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
38
+
39
+ static initModel(sequelize: Sequelize.Sequelize): typeof JukeboxCanonGenreRelation {
40
+ return JukeboxCanonGenreRelation.init({
41
+ id: {
42
+ type: DataTypes.UUID,
43
+ allowNull: false,
44
+ defaultValue: DataTypes.UUIDV4,
45
+ primaryKey: true
46
+ },
47
+ jukeboxSessionId: {
48
+ type: DataTypes.UUID,
49
+ allowNull: false,
50
+ references: {
51
+ model: 'jukebox_session',
52
+ key: 'id'
53
+ },
54
+ unique: "unique_jukebox_canon_genre",
55
+ field: 'jukebox_session_id'
56
+ },
57
+ canonGenreId: {
58
+ type: DataTypes.UUID,
59
+ allowNull: false,
60
+ references: {
61
+ model: 'canon_genre',
62
+ key: 'id'
63
+ },
64
+ unique: "unique_jukebox_canon_genre",
65
+ field: 'canon_genre_id'
66
+ },
67
+ stateId: {
68
+ type: DataTypes.SMALLINT,
69
+ allowNull: false,
70
+ field: 'state_id'
71
+ },
72
+ createdAt: {
73
+ type: DataTypes.DATE,
74
+ allowNull: false,
75
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
76
+ field: 'created_at'
77
+ },
78
+ updatedAt: {
79
+ type: DataTypes.DATE,
80
+ allowNull: false,
81
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
82
+ field: 'updated_at'
83
+ }
84
+ }, {
85
+ sequelize,
86
+ tableName: 'jukebox_canon_genre_relation',
87
+ schema: 'eb',
88
+ timestamps: false,
89
+ indexes: [
90
+ {
91
+ name: "jukebox_canon_genre_relation_pkey",
92
+ unique: true,
93
+ fields: [
94
+ { name: "id" },
95
+ ]
96
+ },
97
+ {
98
+ name: "unique_jukebox_canon_genre",
99
+ unique: true,
100
+ fields: [
101
+ { name: "jukebox_session_id" },
102
+ { name: "canon_genre_id" },
103
+ ]
104
+ },
105
+ ]
106
+ });
107
+ }
108
+ }
@@ -0,0 +1,125 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { AppUser, AppUserId } from './AppUser';
4
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+
6
+ export interface JukeboxInviteAttributes {
7
+ id: string;
8
+ jukeboxSessionId: string;
9
+ inviterUserId: string;
10
+ invitedUserId?: string;
11
+ email?: string;
12
+ createdAt: Date;
13
+ updatedAt: Date;
14
+ }
15
+
16
+ export type JukeboxInvitePk = "id";
17
+ export type JukeboxInviteId = JukeboxInvite[JukeboxInvitePk];
18
+ export type JukeboxInviteOptionalAttributes = "id" | "invitedUserId" | "email" | "createdAt" | "updatedAt";
19
+ export type JukeboxInviteCreationAttributes = Optional<JukeboxInviteAttributes, JukeboxInviteOptionalAttributes>;
20
+
21
+ export class JukeboxInvite extends Model<JukeboxInviteAttributes, JukeboxInviteCreationAttributes> implements JukeboxInviteAttributes {
22
+ id!: string;
23
+ jukeboxSessionId!: string;
24
+ inviterUserId!: string;
25
+ invitedUserId?: string;
26
+ email?: string;
27
+ createdAt!: Date;
28
+ updatedAt!: Date;
29
+
30
+ // JukeboxInvite belongsTo AppUser via invitedUserId
31
+ invitedUser!: AppUser;
32
+ getInvitedUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
33
+ setInvitedUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
34
+ createInvitedUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
35
+ // JukeboxInvite belongsTo AppUser via inviterUserId
36
+ inviterUser!: AppUser;
37
+ getInviterUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
38
+ setInviterUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
39
+ createInviterUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
40
+ // JukeboxInvite belongsTo JukeboxSession via jukeboxSessionId
41
+ jukeboxSession!: JukeboxSession;
42
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
43
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
44
+ createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
45
+
46
+ static initModel(sequelize: Sequelize.Sequelize): typeof JukeboxInvite {
47
+ return JukeboxInvite.init({
48
+ id: {
49
+ type: DataTypes.UUID,
50
+ allowNull: false,
51
+ defaultValue: DataTypes.UUIDV4,
52
+ primaryKey: true
53
+ },
54
+ jukeboxSessionId: {
55
+ type: DataTypes.UUID,
56
+ allowNull: false,
57
+ references: {
58
+ model: 'jukebox_session',
59
+ key: 'id'
60
+ },
61
+ field: 'jukebox_session_id'
62
+ },
63
+ inviterUserId: {
64
+ type: DataTypes.UUID,
65
+ allowNull: false,
66
+ references: {
67
+ model: 'app_user',
68
+ key: 'id'
69
+ },
70
+ field: 'inviter_user_id'
71
+ },
72
+ invitedUserId: {
73
+ type: DataTypes.UUID,
74
+ allowNull: true,
75
+ references: {
76
+ model: 'app_user',
77
+ key: 'id'
78
+ },
79
+ field: 'invited_user_id'
80
+ },
81
+ email: {
82
+ type: DataTypes.TEXT,
83
+ allowNull: true
84
+ },
85
+ createdAt: {
86
+ type: DataTypes.DATE,
87
+ allowNull: false,
88
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
89
+ field: 'created_at'
90
+ },
91
+ updatedAt: {
92
+ type: DataTypes.DATE,
93
+ allowNull: false,
94
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
95
+ field: 'updated_at'
96
+ }
97
+ }, {
98
+ sequelize,
99
+ tableName: 'jukebox_invite',
100
+ schema: 'eb',
101
+ timestamps: false,
102
+ indexes: [
103
+ {
104
+ name: "idx_jukebox_invite_invited_user",
105
+ fields: [
106
+ { name: "invited_user_id" },
107
+ ]
108
+ },
109
+ {
110
+ name: "idx_jukebox_invite_session",
111
+ fields: [
112
+ { name: "jukebox_session_id" },
113
+ ]
114
+ },
115
+ {
116
+ name: "jukebox_invite_pkey",
117
+ unique: true,
118
+ fields: [
119
+ { name: "id" },
120
+ ]
121
+ },
122
+ ]
123
+ });
124
+ }
125
+ }
@@ -0,0 +1,247 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { AppUser, AppUserId } from './AppUser';
4
+ import type { CanonTrack, CanonTrackId } from './CanonTrack';
5
+ import type { GuestUser, GuestUserId } from './GuestUser';
6
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
7
+ import type { JukeboxUser, JukeboxUserId } from './JukeboxUser';
8
+ import type { PlatformTrack, PlatformTrackId } from './PlatformTrack';
9
+ import type { PlaybackStatusType, PlaybackStatusTypeId } from './PlaybackStatusType';
10
+ import type { TrackDeletionReason, TrackDeletionReasonId } from './TrackDeletionReason';
11
+
12
+ export interface JukeboxQueueEntryAttributes {
13
+ id: string;
14
+ jukeboxSessionId: string;
15
+ trackId?: string;
16
+ playbackPriority?: number;
17
+ trackAddedUserId?: string;
18
+ createdAt: Date;
19
+ updatedAt: Date;
20
+ setOrder: number;
21
+ trackDeletionReasonId: number;
22
+ playbackStatusTypeId: number;
23
+ playbackStarted?: Date;
24
+ trackThumbsUp?: string[];
25
+ trackThumbsDown?: string[];
26
+ platformTrackId?: string;
27
+ trackAddedGuestUserId?: string;
28
+ }
29
+
30
+ export type JukeboxQueueEntryPk = "id";
31
+ export type JukeboxQueueEntryId = JukeboxQueueEntry[JukeboxQueueEntryPk];
32
+ export type JukeboxQueueEntryOptionalAttributes = "id" | "trackId" | "playbackPriority" | "trackAddedUserId" | "createdAt" | "updatedAt" | "setOrder" | "trackDeletionReasonId" | "playbackStatusTypeId" | "playbackStarted" | "trackThumbsUp" | "trackThumbsDown" | "platformTrackId" | "trackAddedGuestUserId";
33
+ export type JukeboxQueueEntryCreationAttributes = Optional<JukeboxQueueEntryAttributes, JukeboxQueueEntryOptionalAttributes>;
34
+
35
+ export class JukeboxQueueEntry extends Model<JukeboxQueueEntryAttributes, JukeboxQueueEntryCreationAttributes> implements JukeboxQueueEntryAttributes {
36
+ id!: string;
37
+ jukeboxSessionId!: string;
38
+ trackId?: string;
39
+ playbackPriority?: number;
40
+ trackAddedUserId?: string;
41
+ createdAt!: Date;
42
+ updatedAt!: Date;
43
+ setOrder!: number;
44
+ trackDeletionReasonId!: number;
45
+ playbackStatusTypeId!: number;
46
+ playbackStarted?: Date;
47
+ trackThumbsUp?: string[];
48
+ trackThumbsDown?: string[];
49
+ platformTrackId?: string;
50
+ trackAddedGuestUserId?: string;
51
+
52
+ // JukeboxQueueEntry belongsTo AppUser via trackAddedUserId
53
+ trackAddedUser!: AppUser;
54
+ getTrackAddedUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
55
+ setTrackAddedUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
56
+ createTrackAddedUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
57
+ // JukeboxQueueEntry belongsTo CanonTrack via trackId
58
+ track!: CanonTrack;
59
+ getTrack!: Sequelize.BelongsToGetAssociationMixin<CanonTrack>;
60
+ setTrack!: Sequelize.BelongsToSetAssociationMixin<CanonTrack, CanonTrackId>;
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>;
67
+ // JukeboxQueueEntry hasMany JukeboxUser via pausedQueueEntryId
68
+ jukeboxUsers!: JukeboxUser[];
69
+ getJukeboxUsers!: Sequelize.HasManyGetAssociationsMixin<JukeboxUser>;
70
+ setJukeboxUsers!: Sequelize.HasManySetAssociationsMixin<JukeboxUser, JukeboxUserId>;
71
+ addJukeboxUser!: Sequelize.HasManyAddAssociationMixin<JukeboxUser, JukeboxUserId>;
72
+ addJukeboxUsers!: Sequelize.HasManyAddAssociationsMixin<JukeboxUser, JukeboxUserId>;
73
+ createJukeboxUser!: Sequelize.HasManyCreateAssociationMixin<JukeboxUser>;
74
+ removeJukeboxUser!: Sequelize.HasManyRemoveAssociationMixin<JukeboxUser, JukeboxUserId>;
75
+ removeJukeboxUsers!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxUser, JukeboxUserId>;
76
+ hasJukeboxUser!: Sequelize.HasManyHasAssociationMixin<JukeboxUser, JukeboxUserId>;
77
+ hasJukeboxUsers!: Sequelize.HasManyHasAssociationsMixin<JukeboxUser, JukeboxUserId>;
78
+ countJukeboxUsers!: Sequelize.HasManyCountAssociationsMixin;
79
+ // JukeboxQueueEntry belongsTo JukeboxSession via jukeboxSessionId
80
+ jukeboxSession!: JukeboxSession;
81
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
82
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
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>;
89
+ // JukeboxQueueEntry belongsTo PlaybackStatusType via playbackStatusTypeId
90
+ playbackStatusType!: PlaybackStatusType;
91
+ getPlaybackStatusType!: Sequelize.BelongsToGetAssociationMixin<PlaybackStatusType>;
92
+ setPlaybackStatusType!: Sequelize.BelongsToSetAssociationMixin<PlaybackStatusType, PlaybackStatusTypeId>;
93
+ createPlaybackStatusType!: Sequelize.BelongsToCreateAssociationMixin<PlaybackStatusType>;
94
+ // JukeboxQueueEntry belongsTo TrackDeletionReason via trackDeletionReasonId
95
+ trackDeletionReason!: TrackDeletionReason;
96
+ getTrackDeletionReason!: Sequelize.BelongsToGetAssociationMixin<TrackDeletionReason>;
97
+ setTrackDeletionReason!: Sequelize.BelongsToSetAssociationMixin<TrackDeletionReason, TrackDeletionReasonId>;
98
+ createTrackDeletionReason!: Sequelize.BelongsToCreateAssociationMixin<TrackDeletionReason>;
99
+
100
+ static initModel(sequelize: Sequelize.Sequelize): typeof JukeboxQueueEntry {
101
+ return JukeboxQueueEntry.init({
102
+ id: {
103
+ type: DataTypes.UUID,
104
+ allowNull: false,
105
+ defaultValue: DataTypes.UUIDV4,
106
+ primaryKey: true
107
+ },
108
+ jukeboxSessionId: {
109
+ type: DataTypes.UUID,
110
+ allowNull: false,
111
+ references: {
112
+ model: 'jukebox_session',
113
+ key: 'id'
114
+ },
115
+ field: 'jukebox_session_id'
116
+ },
117
+ trackId: {
118
+ type: DataTypes.UUID,
119
+ allowNull: true,
120
+ references: {
121
+ model: 'canon_track',
122
+ key: 'id'
123
+ },
124
+ field: 'track_id'
125
+ },
126
+ playbackPriority: {
127
+ type: DataTypes.DECIMAL,
128
+ allowNull: true,
129
+ field: 'playback_priority'
130
+ },
131
+ trackAddedUserId: {
132
+ type: DataTypes.UUID,
133
+ allowNull: true,
134
+ references: {
135
+ model: 'app_user',
136
+ key: 'id'
137
+ },
138
+ field: 'track_added_user_id'
139
+ },
140
+ createdAt: {
141
+ type: DataTypes.DATE,
142
+ allowNull: false,
143
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
144
+ field: 'created_at'
145
+ },
146
+ updatedAt: {
147
+ type: DataTypes.DATE,
148
+ allowNull: false,
149
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
150
+ field: 'updated_at'
151
+ },
152
+ setOrder: {
153
+ type: DataTypes.INTEGER,
154
+ allowNull: false,
155
+ defaultValue: 1,
156
+ field: 'set_order'
157
+ },
158
+ trackDeletionReasonId: {
159
+ type: DataTypes.SMALLINT,
160
+ allowNull: false,
161
+ defaultValue: 0,
162
+ references: {
163
+ model: 'track_deletion_reason',
164
+ key: 'id'
165
+ },
166
+ field: 'track_deletion_reason_id'
167
+ },
168
+ playbackStatusTypeId: {
169
+ type: DataTypes.SMALLINT,
170
+ allowNull: false,
171
+ defaultValue: 0,
172
+ references: {
173
+ model: 'playback_status_type',
174
+ key: 'id'
175
+ },
176
+ field: 'playback_status_type_id'
177
+ },
178
+ playbackStarted: {
179
+ type: DataTypes.DATE,
180
+ allowNull: true,
181
+ field: 'playback_started'
182
+ },
183
+ trackThumbsUp: {
184
+ type: DataTypes.ARRAY(DataTypes.UUID),
185
+ allowNull: true,
186
+ defaultValue: ["ARRAY[]"],
187
+ field: 'track_thumbs_up'
188
+ },
189
+ trackThumbsDown: {
190
+ type: DataTypes.ARRAY(DataTypes.UUID),
191
+ allowNull: true,
192
+ defaultValue: ["ARRAY[]"],
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'
212
+ }
213
+ }, {
214
+ sequelize,
215
+ tableName: 'jukebox_queue_entry',
216
+ schema: 'eb',
217
+ timestamps: false,
218
+ indexes: [
219
+ {
220
+ name: "idx_jukebox_queue_entry_platform_track",
221
+ fields: [
222
+ { name: "platform_track_id" },
223
+ ]
224
+ },
225
+ {
226
+ name: "idx_jukebox_queue_entry_session",
227
+ fields: [
228
+ { name: "jukebox_session_id" },
229
+ ]
230
+ },
231
+ {
232
+ name: "idx_jukebox_queue_entry_track",
233
+ fields: [
234
+ { name: "track_id" },
235
+ ]
236
+ },
237
+ {
238
+ name: "jukebox_queue_entry_pkey",
239
+ unique: true,
240
+ fields: [
241
+ { name: "id" },
242
+ ]
243
+ },
244
+ ]
245
+ });
246
+ }
247
+ }
@@ -0,0 +1,60 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
4
+
5
+ export interface JukeboxQueueModeAttributes {
6
+ id: number;
7
+ description: string;
8
+ }
9
+
10
+ export type JukeboxQueueModePk = "id";
11
+ export type JukeboxQueueModeId = JukeboxQueueMode[JukeboxQueueModePk];
12
+ export type JukeboxQueueModeCreationAttributes = JukeboxQueueModeAttributes;
13
+
14
+ export class JukeboxQueueMode extends Model<JukeboxQueueModeAttributes, JukeboxQueueModeCreationAttributes> implements JukeboxQueueModeAttributes {
15
+ id!: number;
16
+ description!: string;
17
+
18
+ // JukeboxQueueMode hasMany JukeboxSession via jukeboxQueueModeId
19
+ jukeboxSessions!: JukeboxSession[];
20
+ getJukeboxSessions!: Sequelize.HasManyGetAssociationsMixin<JukeboxSession>;
21
+ setJukeboxSessions!: Sequelize.HasManySetAssociationsMixin<JukeboxSession, JukeboxSessionId>;
22
+ addJukeboxSession!: Sequelize.HasManyAddAssociationMixin<JukeboxSession, JukeboxSessionId>;
23
+ addJukeboxSessions!: Sequelize.HasManyAddAssociationsMixin<JukeboxSession, JukeboxSessionId>;
24
+ createJukeboxSession!: Sequelize.HasManyCreateAssociationMixin<JukeboxSession>;
25
+ removeJukeboxSession!: Sequelize.HasManyRemoveAssociationMixin<JukeboxSession, JukeboxSessionId>;
26
+ removeJukeboxSessions!: Sequelize.HasManyRemoveAssociationsMixin<JukeboxSession, JukeboxSessionId>;
27
+ hasJukeboxSession!: Sequelize.HasManyHasAssociationMixin<JukeboxSession, JukeboxSessionId>;
28
+ hasJukeboxSessions!: Sequelize.HasManyHasAssociationsMixin<JukeboxSession, JukeboxSessionId>;
29
+ countJukeboxSessions!: Sequelize.HasManyCountAssociationsMixin;
30
+
31
+ static initModel(sequelize: Sequelize.Sequelize): typeof JukeboxQueueMode {
32
+ return JukeboxQueueMode.init({
33
+ id: {
34
+ autoIncrement: true,
35
+ autoIncrementIdentity: true,
36
+ type: DataTypes.SMALLINT,
37
+ allowNull: false,
38
+ primaryKey: true
39
+ },
40
+ description: {
41
+ type: DataTypes.TEXT,
42
+ allowNull: false
43
+ }
44
+ }, {
45
+ sequelize,
46
+ tableName: 'jukebox_queue_mode',
47
+ schema: 'eb',
48
+ timestamps: false,
49
+ indexes: [
50
+ {
51
+ name: "jukebox_queue_mode_pkey",
52
+ unique: true,
53
+ fields: [
54
+ { name: "id" },
55
+ ]
56
+ },
57
+ ]
58
+ });
59
+ }
60
+ }