@earbug/db-models 0.0.8 → 0.0.9

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.
package/dist/AppUser.d.ts CHANGED
@@ -6,6 +6,7 @@ import type { AppUserPlatformRelation, AppUserPlatformRelationId } from './AppUs
6
6
  import type { JukeboxInvite, JukeboxInviteId } from './JukeboxInvite';
7
7
  import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry';
8
8
  import type { JukeboxUser, JukeboxUserId } from './JukeboxUser';
9
+ import type { Notification, NotificationId } from './Notification';
9
10
  import type { PlatformUserAlbum, PlatformUserAlbumId } from './PlatformUserAlbum';
10
11
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
11
12
  import type { State, StateId } from './State';
@@ -120,6 +121,28 @@ export declare class AppUser extends Model<AppUserAttributes, AppUserCreationAtt
120
121
  hasJukeboxUser: Sequelize.HasManyHasAssociationMixin<JukeboxUser, JukeboxUserId>;
121
122
  hasJukeboxUsers: Sequelize.HasManyHasAssociationsMixin<JukeboxUser, JukeboxUserId>;
122
123
  countJukeboxUsers: Sequelize.HasManyCountAssociationsMixin;
124
+ notifications: Notification[];
125
+ getNotifications: Sequelize.HasManyGetAssociationsMixin<Notification>;
126
+ setNotifications: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
127
+ addNotification: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
128
+ addNotifications: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
129
+ createNotification: Sequelize.HasManyCreateAssociationMixin<Notification>;
130
+ removeNotification: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
131
+ removeNotifications: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
132
+ hasNotification: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
133
+ hasNotifications: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
134
+ countNotifications: Sequelize.HasManyCountAssociationsMixin;
135
+ targetUserNotifications: Notification[];
136
+ getTargetUserNotifications: Sequelize.HasManyGetAssociationsMixin<Notification>;
137
+ setTargetUserNotifications: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
138
+ addTargetUserNotification: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
139
+ addTargetUserNotifications: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
140
+ createTargetUserNotification: Sequelize.HasManyCreateAssociationMixin<Notification>;
141
+ removeTargetUserNotification: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
142
+ removeTargetUserNotifications: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
143
+ hasTargetUserNotification: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
144
+ hasTargetUserNotifications: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
145
+ countTargetUserNotifications: Sequelize.HasManyCountAssociationsMixin;
123
146
  platformUserAlbums: PlatformUserAlbum[];
124
147
  getPlatformUserAlbums: Sequelize.HasManyGetAssociationsMixin<PlatformUserAlbum>;
125
148
  setPlatformUserAlbums: Sequelize.HasManySetAssociationsMixin<PlatformUserAlbum, PlatformUserAlbumId>;
@@ -9,6 +9,7 @@ import type { JukeboxStatus, JukeboxStatusId } from './JukeboxStatus';
9
9
  import type { JukeboxTerminationCondition, JukeboxTerminationConditionId } from './JukeboxTerminationCondition';
10
10
  import type { JukeboxType, JukeboxTypeId } from './JukeboxType';
11
11
  import type { JukeboxUser, JukeboxUserId } from './JukeboxUser';
12
+ import type { Notification, NotificationId } from './Notification';
12
13
  export interface JukeboxSessionAttributes {
13
14
  typeId: number;
14
15
  accessTypeId: number;
@@ -92,6 +93,17 @@ export declare class JukeboxSession extends Model<JukeboxSessionAttributes, Juke
92
93
  hasJukeboxUser: Sequelize.HasManyHasAssociationMixin<JukeboxUser, JukeboxUserId>;
93
94
  hasJukeboxUsers: Sequelize.HasManyHasAssociationsMixin<JukeboxUser, JukeboxUserId>;
94
95
  countJukeboxUsers: Sequelize.HasManyCountAssociationsMixin;
96
+ notifications: Notification[];
97
+ getNotifications: Sequelize.HasManyGetAssociationsMixin<Notification>;
98
+ setNotifications: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
99
+ addNotification: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
100
+ addNotifications: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
101
+ createNotification: Sequelize.HasManyCreateAssociationMixin<Notification>;
102
+ removeNotification: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
103
+ removeNotifications: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
104
+ hasNotification: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
105
+ hasNotifications: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
106
+ countNotifications: Sequelize.HasManyCountAssociationsMixin;
95
107
  jukeboxStatus: JukeboxStatus;
96
108
  getJukeboxStatus: Sequelize.BelongsToGetAssociationMixin<JukeboxStatus>;
97
109
  setJukeboxStatus: Sequelize.BelongsToSetAssociationMixin<JukeboxStatus, JukeboxStatusId>;
@@ -0,0 +1,62 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { Model, Optional } from 'sequelize';
3
+ import type { AppUser, AppUserId } from './AppUser';
4
+ import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+ import type { NotificationType, NotificationTypeId } from './NotificationType';
6
+ export interface NotificationAttributes {
7
+ targetUserId: string;
8
+ notificationTypeId: number;
9
+ metadata?: object;
10
+ readAt?: Date;
11
+ dismissedAt?: Date;
12
+ sourceUserId?: string;
13
+ jukeboxSessionId?: string;
14
+ expiresAt?: Date;
15
+ pushSentAt?: Date;
16
+ pushError?: string;
17
+ id: string;
18
+ isRead: boolean;
19
+ isDismissed: boolean;
20
+ createdAt: Date;
21
+ updatedAt: Date;
22
+ pushSent: boolean;
23
+ }
24
+ export type NotificationPk = "id";
25
+ export type NotificationId = Notification[NotificationPk];
26
+ export type NotificationOptionalAttributes = "metadata" | "readAt" | "dismissedAt" | "sourceUserId" | "jukeboxSessionId" | "expiresAt" | "pushSentAt" | "pushError" | "id" | "createdAt" | "updatedAt";
27
+ export type NotificationCreationAttributes = Optional<NotificationAttributes, NotificationOptionalAttributes>;
28
+ export declare class Notification extends Model<NotificationAttributes, NotificationCreationAttributes> implements NotificationAttributes {
29
+ targetUserId: string;
30
+ notificationTypeId: number;
31
+ metadata?: object;
32
+ readAt?: Date;
33
+ dismissedAt?: Date;
34
+ sourceUserId?: string;
35
+ jukeboxSessionId?: string;
36
+ expiresAt?: Date;
37
+ pushSentAt?: Date;
38
+ pushError?: string;
39
+ id: string;
40
+ isRead: boolean;
41
+ isDismissed: boolean;
42
+ createdAt: Date;
43
+ updatedAt: Date;
44
+ pushSent: boolean;
45
+ sourceUser: AppUser;
46
+ getSourceUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
47
+ setSourceUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
48
+ createSourceUser: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
49
+ targetUser: AppUser;
50
+ getTargetUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
51
+ setTargetUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
52
+ createTargetUser: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
53
+ jukeboxSession: JukeboxSession;
54
+ getJukeboxSession: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
55
+ setJukeboxSession: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
56
+ createJukeboxSession: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
57
+ notificationType: NotificationType;
58
+ getNotificationType: Sequelize.BelongsToGetAssociationMixin<NotificationType>;
59
+ setNotificationType: Sequelize.BelongsToSetAssociationMixin<NotificationType, NotificationTypeId>;
60
+ createNotificationType: Sequelize.BelongsToCreateAssociationMixin<NotificationType>;
61
+ static initModel(sequelize: Sequelize.Sequelize): typeof Notification;
62
+ }
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Notification = void 0;
27
+ const Sequelize = __importStar(require("sequelize"));
28
+ const sequelize_1 = require("sequelize");
29
+ class Notification extends sequelize_1.Model {
30
+ static initModel(sequelize) {
31
+ return Notification.init({
32
+ targetUserId: {
33
+ type: sequelize_1.DataTypes.UUID,
34
+ allowNull: false,
35
+ references: {
36
+ model: 'app_user',
37
+ key: 'id'
38
+ },
39
+ field: 'target_user_id'
40
+ },
41
+ notificationTypeId: {
42
+ type: sequelize_1.DataTypes.SMALLINT,
43
+ allowNull: false,
44
+ references: {
45
+ model: 'notification_type',
46
+ key: 'id'
47
+ },
48
+ field: 'notification_type_id'
49
+ },
50
+ metadata: {
51
+ type: sequelize_1.DataTypes.JSONB,
52
+ allowNull: true
53
+ },
54
+ readAt: {
55
+ type: sequelize_1.DataTypes.DATE,
56
+ allowNull: true,
57
+ field: 'read_at'
58
+ },
59
+ dismissedAt: {
60
+ type: sequelize_1.DataTypes.DATE,
61
+ allowNull: true,
62
+ field: 'dismissed_at'
63
+ },
64
+ sourceUserId: {
65
+ type: sequelize_1.DataTypes.UUID,
66
+ allowNull: true,
67
+ references: {
68
+ model: 'app_user',
69
+ key: 'id'
70
+ },
71
+ field: 'source_user_id'
72
+ },
73
+ jukeboxSessionId: {
74
+ type: sequelize_1.DataTypes.UUID,
75
+ allowNull: true,
76
+ references: {
77
+ model: 'jukebox_session',
78
+ key: 'id'
79
+ },
80
+ field: 'jukebox_session_id'
81
+ },
82
+ expiresAt: {
83
+ type: sequelize_1.DataTypes.DATE,
84
+ allowNull: true,
85
+ field: 'expires_at'
86
+ },
87
+ pushSentAt: {
88
+ type: sequelize_1.DataTypes.DATE,
89
+ allowNull: true,
90
+ field: 'push_sent_at'
91
+ },
92
+ pushError: {
93
+ type: sequelize_1.DataTypes.TEXT,
94
+ allowNull: true,
95
+ field: 'push_error'
96
+ },
97
+ id: {
98
+ type: sequelize_1.DataTypes.UUID,
99
+ allowNull: false,
100
+ defaultValue: sequelize_1.DataTypes.UUIDV4,
101
+ primaryKey: true
102
+ },
103
+ isRead: {
104
+ type: sequelize_1.DataTypes.BOOLEAN,
105
+ allowNull: false,
106
+ defaultValue: false,
107
+ field: 'is_read'
108
+ },
109
+ isDismissed: {
110
+ type: sequelize_1.DataTypes.BOOLEAN,
111
+ allowNull: false,
112
+ defaultValue: false,
113
+ field: 'is_dismissed'
114
+ },
115
+ createdAt: {
116
+ type: sequelize_1.DataTypes.DATE,
117
+ allowNull: false,
118
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
119
+ field: 'created_at'
120
+ },
121
+ updatedAt: {
122
+ type: sequelize_1.DataTypes.DATE,
123
+ allowNull: false,
124
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
125
+ field: 'updated_at'
126
+ },
127
+ pushSent: {
128
+ type: sequelize_1.DataTypes.BOOLEAN,
129
+ allowNull: false,
130
+ defaultValue: false,
131
+ field: 'push_sent'
132
+ }
133
+ }, {
134
+ sequelize,
135
+ tableName: 'notification',
136
+ schema: 'eb',
137
+ timestamps: false,
138
+ indexes: [
139
+ {
140
+ name: "idx_notification_expires_at",
141
+ fields: [
142
+ { name: "expires_at" },
143
+ ]
144
+ },
145
+ {
146
+ name: "idx_notification_target_user_created_at",
147
+ fields: [
148
+ { name: "target_user_id" },
149
+ { name: "created_at", order: "DESC" },
150
+ ]
151
+ },
152
+ {
153
+ name: "notification_pkey",
154
+ unique: true,
155
+ fields: [
156
+ { name: "id" },
157
+ ]
158
+ },
159
+ ]
160
+ });
161
+ }
162
+ }
163
+ exports.Notification = Notification;
@@ -0,0 +1,26 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { Model } from 'sequelize';
3
+ import type { Notification, NotificationId } from './Notification';
4
+ export interface NotificationTypeAttributes {
5
+ id: number;
6
+ name: string;
7
+ }
8
+ export type NotificationTypePk = "id";
9
+ export type NotificationTypeId = NotificationType[NotificationTypePk];
10
+ export type NotificationTypeCreationAttributes = NotificationTypeAttributes;
11
+ export declare class NotificationType extends Model<NotificationTypeAttributes, NotificationTypeCreationAttributes> implements NotificationTypeAttributes {
12
+ id: number;
13
+ name: string;
14
+ notifications: Notification[];
15
+ getNotifications: Sequelize.HasManyGetAssociationsMixin<Notification>;
16
+ setNotifications: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
17
+ addNotification: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
18
+ addNotifications: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
19
+ createNotification: Sequelize.HasManyCreateAssociationMixin<Notification>;
20
+ removeNotification: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
21
+ removeNotifications: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
22
+ hasNotification: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
23
+ hasNotifications: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
24
+ countNotifications: Sequelize.HasManyCountAssociationsMixin;
25
+ static initModel(sequelize: Sequelize.Sequelize): typeof NotificationType;
26
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotificationType = void 0;
4
+ const sequelize_1 = require("sequelize");
5
+ class NotificationType extends sequelize_1.Model {
6
+ static initModel(sequelize) {
7
+ return NotificationType.init({
8
+ id: {
9
+ type: sequelize_1.DataTypes.SMALLINT,
10
+ allowNull: false,
11
+ primaryKey: true
12
+ },
13
+ name: {
14
+ type: sequelize_1.DataTypes.TEXT,
15
+ allowNull: false,
16
+ unique: "notification_type_name_unique"
17
+ }
18
+ }, {
19
+ sequelize,
20
+ tableName: 'notification_type',
21
+ schema: 'eb',
22
+ timestamps: false,
23
+ indexes: [
24
+ {
25
+ name: "notification_type_name_unique",
26
+ unique: true,
27
+ fields: [
28
+ { name: "name" },
29
+ ]
30
+ },
31
+ {
32
+ name: "notification_type_pkey",
33
+ unique: true,
34
+ fields: [
35
+ { name: "id" },
36
+ ]
37
+ },
38
+ ]
39
+ });
40
+ }
41
+ }
42
+ exports.NotificationType = NotificationType;
@@ -91,6 +91,10 @@ import { MetricsEvent as _MetricsEvent } from "./MetricsEvent";
91
91
  import type { MetricsEventAttributes, MetricsEventCreationAttributes } from "./MetricsEvent";
92
92
  import { NewsSite as _NewsSite } from "./NewsSite";
93
93
  import type { NewsSiteAttributes, NewsSiteCreationAttributes } from "./NewsSite";
94
+ import { Notification as _Notification } from "./Notification";
95
+ import type { NotificationAttributes, NotificationCreationAttributes } from "./Notification";
96
+ import { NotificationType as _NotificationType } from "./NotificationType";
97
+ import type { NotificationTypeAttributes, NotificationTypeCreationAttributes } from "./NotificationType";
94
98
  import { PauseStatusType as _PauseStatusType } from "./PauseStatusType";
95
99
  import type { PauseStatusTypeAttributes, PauseStatusTypeCreationAttributes } from "./PauseStatusType";
96
100
  import { Platform as _Platform } from "./Platform";
@@ -137,8 +141,8 @@ import { UnmatchedArtist as _UnmatchedArtist } from "./UnmatchedArtist";
137
141
  import type { UnmatchedArtistAttributes, UnmatchedArtistCreationAttributes } from "./UnmatchedArtist";
138
142
  import { UserContacts as _UserContacts } from "./UserContacts";
139
143
  import type { UserContactsAttributes, UserContactsCreationAttributes } from "./UserContacts";
140
- export { _AppUser as AppUser, _AppUserDevice as AppUserDevice, _AppUserFollowRelation as AppUserFollowRelation, _AppUserPlatformRelation as AppUserPlatformRelation, _CanonAlbum as CanonAlbum, _CanonAlbumExternalReferenceRelation as CanonAlbumExternalReferenceRelation, _CanonAlbumGenreRelation as CanonAlbumGenreRelation, _CanonAlbumImageHarvested as CanonAlbumImageHarvested, _CanonAlbumLabelRelation as CanonAlbumLabelRelation, _CanonAlbumTrackRelation as CanonAlbumTrackRelation, _CanonArtist as CanonArtist, _CanonArtistAlbumRelation as CanonArtistAlbumRelation, _CanonArtistExternalReferenceRelation as CanonArtistExternalReferenceRelation, _CanonArtistGenreRelation as CanonArtistGenreRelation, _CanonArtistImageHarvested as CanonArtistImageHarvested, _CanonArtistMemberRelation as CanonArtistMemberRelation, _CanonArtistTrackRelation as CanonArtistTrackRelation, _CanonGenre as CanonGenre, _CanonGenreExternalReferenceRelation as CanonGenreExternalReferenceRelation, _CanonLabel as CanonLabel, _CanonLabelExternalReferenceRelation as CanonLabelExternalReferenceRelation, _CanonMember as CanonMember, _CanonMemberExternalReferenceRelation as CanonMemberExternalReferenceRelation, _CanonToPlatformAlbumRelation as CanonToPlatformAlbumRelation, _CanonToPlatformArtistRelation as CanonToPlatformArtistRelation, _CanonToPlatformGenreRelation as CanonToPlatformGenreRelation, _CanonToPlatformTrackRelation as CanonToPlatformTrackRelation, _CanonTrack as CanonTrack, _ConfigParam as ConfigParam, _ExternalReference as ExternalReference, _JukeboxAccessType as JukeboxAccessType, _JukeboxCanonGenreRelation as JukeboxCanonGenreRelation, _JukeboxInvite as JukeboxInvite, _JukeboxQueueEntry as JukeboxQueueEntry, _JukeboxQueueMode as JukeboxQueueMode, _JukeboxSession as JukeboxSession, _JukeboxStatus as JukeboxStatus, _JukeboxTerminationCondition as JukeboxTerminationCondition, _JukeboxType as JukeboxType, _JukeboxUser as JukeboxUser, _JukeboxUserType as JukeboxUserType, _KnexMigrations as KnexMigrations, _KnexMigrationsLock as KnexMigrationsLock, _MetricsDaily as MetricsDaily, _MetricsEvent as MetricsEvent, _NewsSite as NewsSite, _PauseStatusType as PauseStatusType, _Platform as Platform, _PlatformAlbum as PlatformAlbum, _PlatformAlbumGenreRelation as PlatformAlbumGenreRelation, _PlatformAlbumTrackRelation as PlatformAlbumTrackRelation, _PlatformArtist as PlatformArtist, _PlatformArtistAlbumRelation as PlatformArtistAlbumRelation, _PlatformArtistGenreRelation as PlatformArtistGenreRelation, _PlatformArtistTrackRelation as PlatformArtistTrackRelation, _PlatformGenre as PlatformGenre, _PlatformTrack as PlatformTrack, _PlatformTrackGenreRelation as PlatformTrackGenreRelation, _PlatformUserAlbum as PlatformUserAlbum, _PlatformUserAlbumTrack as PlatformUserAlbumTrack, _PlatformUserPlaylist as PlatformUserPlaylist, _PlatformUserPlaylistTrack as PlatformUserPlaylistTrack, _PlaybackStatus as PlaybackStatus, _PlaybackStatusType as PlaybackStatusType, _State as State, _TrackDeletionReason as TrackDeletionReason, _UnmatchedAlbum as UnmatchedAlbum, _UnmatchedArtist as UnmatchedArtist, _UserContacts as UserContacts, };
141
- export type { AppUserAttributes, AppUserCreationAttributes, AppUserDeviceAttributes, AppUserDeviceCreationAttributes, AppUserFollowRelationAttributes, AppUserFollowRelationCreationAttributes, AppUserPlatformRelationAttributes, AppUserPlatformRelationCreationAttributes, CanonAlbumAttributes, CanonAlbumCreationAttributes, CanonAlbumExternalReferenceRelationAttributes, CanonAlbumExternalReferenceRelationCreationAttributes, CanonAlbumGenreRelationAttributes, CanonAlbumGenreRelationCreationAttributes, CanonAlbumImageHarvestedAttributes, CanonAlbumImageHarvestedCreationAttributes, CanonAlbumLabelRelationAttributes, CanonAlbumLabelRelationCreationAttributes, CanonAlbumTrackRelationAttributes, CanonAlbumTrackRelationCreationAttributes, CanonArtistAttributes, CanonArtistCreationAttributes, CanonArtistAlbumRelationAttributes, CanonArtistAlbumRelationCreationAttributes, CanonArtistExternalReferenceRelationAttributes, CanonArtistExternalReferenceRelationCreationAttributes, CanonArtistGenreRelationAttributes, CanonArtistGenreRelationCreationAttributes, CanonArtistImageHarvestedAttributes, CanonArtistImageHarvestedCreationAttributes, CanonArtistMemberRelationAttributes, CanonArtistMemberRelationCreationAttributes, CanonArtistTrackRelationAttributes, CanonArtistTrackRelationCreationAttributes, CanonGenreAttributes, CanonGenreCreationAttributes, CanonGenreExternalReferenceRelationAttributes, CanonGenreExternalReferenceRelationCreationAttributes, CanonLabelAttributes, CanonLabelCreationAttributes, CanonLabelExternalReferenceRelationAttributes, CanonLabelExternalReferenceRelationCreationAttributes, CanonMemberAttributes, CanonMemberCreationAttributes, CanonMemberExternalReferenceRelationAttributes, CanonMemberExternalReferenceRelationCreationAttributes, CanonToPlatformAlbumRelationAttributes, CanonToPlatformAlbumRelationCreationAttributes, CanonToPlatformArtistRelationAttributes, CanonToPlatformArtistRelationCreationAttributes, CanonToPlatformGenreRelationAttributes, CanonToPlatformGenreRelationCreationAttributes, CanonToPlatformTrackRelationAttributes, CanonToPlatformTrackRelationCreationAttributes, CanonTrackAttributes, CanonTrackCreationAttributes, ConfigParamAttributes, ConfigParamCreationAttributes, ExternalReferenceAttributes, ExternalReferenceCreationAttributes, JukeboxAccessTypeAttributes, JukeboxAccessTypeCreationAttributes, JukeboxCanonGenreRelationAttributes, JukeboxCanonGenreRelationCreationAttributes, JukeboxInviteAttributes, JukeboxInviteCreationAttributes, JukeboxQueueEntryAttributes, JukeboxQueueEntryCreationAttributes, JukeboxQueueModeAttributes, JukeboxQueueModeCreationAttributes, JukeboxSessionAttributes, JukeboxSessionCreationAttributes, JukeboxStatusAttributes, JukeboxStatusCreationAttributes, JukeboxTerminationConditionAttributes, JukeboxTerminationConditionCreationAttributes, JukeboxTypeAttributes, JukeboxTypeCreationAttributes, JukeboxUserAttributes, JukeboxUserCreationAttributes, JukeboxUserTypeAttributes, JukeboxUserTypeCreationAttributes, KnexMigrationsAttributes, KnexMigrationsCreationAttributes, KnexMigrationsLockAttributes, KnexMigrationsLockCreationAttributes, MetricsDailyAttributes, MetricsDailyCreationAttributes, MetricsEventAttributes, MetricsEventCreationAttributes, NewsSiteAttributes, NewsSiteCreationAttributes, PauseStatusTypeAttributes, PauseStatusTypeCreationAttributes, PlatformAttributes, PlatformCreationAttributes, PlatformAlbumAttributes, PlatformAlbumCreationAttributes, PlatformAlbumGenreRelationAttributes, PlatformAlbumGenreRelationCreationAttributes, PlatformAlbumTrackRelationAttributes, PlatformAlbumTrackRelationCreationAttributes, PlatformArtistAttributes, PlatformArtistCreationAttributes, PlatformArtistAlbumRelationAttributes, PlatformArtistAlbumRelationCreationAttributes, PlatformArtistGenreRelationAttributes, PlatformArtistGenreRelationCreationAttributes, PlatformArtistTrackRelationAttributes, PlatformArtistTrackRelationCreationAttributes, PlatformGenreAttributes, PlatformGenreCreationAttributes, PlatformTrackAttributes, PlatformTrackCreationAttributes, PlatformTrackGenreRelationAttributes, PlatformTrackGenreRelationCreationAttributes, PlatformUserAlbumAttributes, PlatformUserAlbumCreationAttributes, PlatformUserAlbumTrackAttributes, PlatformUserAlbumTrackCreationAttributes, PlatformUserPlaylistAttributes, PlatformUserPlaylistCreationAttributes, PlatformUserPlaylistTrackAttributes, PlatformUserPlaylistTrackCreationAttributes, PlaybackStatusAttributes, PlaybackStatusCreationAttributes, PlaybackStatusTypeAttributes, PlaybackStatusTypeCreationAttributes, StateAttributes, StateCreationAttributes, TrackDeletionReasonAttributes, TrackDeletionReasonCreationAttributes, UnmatchedAlbumAttributes, UnmatchedAlbumCreationAttributes, UnmatchedArtistAttributes, UnmatchedArtistCreationAttributes, UserContactsAttributes, UserContactsCreationAttributes, };
144
+ export { _AppUser as AppUser, _AppUserDevice as AppUserDevice, _AppUserFollowRelation as AppUserFollowRelation, _AppUserPlatformRelation as AppUserPlatformRelation, _CanonAlbum as CanonAlbum, _CanonAlbumExternalReferenceRelation as CanonAlbumExternalReferenceRelation, _CanonAlbumGenreRelation as CanonAlbumGenreRelation, _CanonAlbumImageHarvested as CanonAlbumImageHarvested, _CanonAlbumLabelRelation as CanonAlbumLabelRelation, _CanonAlbumTrackRelation as CanonAlbumTrackRelation, _CanonArtist as CanonArtist, _CanonArtistAlbumRelation as CanonArtistAlbumRelation, _CanonArtistExternalReferenceRelation as CanonArtistExternalReferenceRelation, _CanonArtistGenreRelation as CanonArtistGenreRelation, _CanonArtistImageHarvested as CanonArtistImageHarvested, _CanonArtistMemberRelation as CanonArtistMemberRelation, _CanonArtistTrackRelation as CanonArtistTrackRelation, _CanonGenre as CanonGenre, _CanonGenreExternalReferenceRelation as CanonGenreExternalReferenceRelation, _CanonLabel as CanonLabel, _CanonLabelExternalReferenceRelation as CanonLabelExternalReferenceRelation, _CanonMember as CanonMember, _CanonMemberExternalReferenceRelation as CanonMemberExternalReferenceRelation, _CanonToPlatformAlbumRelation as CanonToPlatformAlbumRelation, _CanonToPlatformArtistRelation as CanonToPlatformArtistRelation, _CanonToPlatformGenreRelation as CanonToPlatformGenreRelation, _CanonToPlatformTrackRelation as CanonToPlatformTrackRelation, _CanonTrack as CanonTrack, _ConfigParam as ConfigParam, _ExternalReference as ExternalReference, _JukeboxAccessType as JukeboxAccessType, _JukeboxCanonGenreRelation as JukeboxCanonGenreRelation, _JukeboxInvite as JukeboxInvite, _JukeboxQueueEntry as JukeboxQueueEntry, _JukeboxQueueMode as JukeboxQueueMode, _JukeboxSession as JukeboxSession, _JukeboxStatus as JukeboxStatus, _JukeboxTerminationCondition as JukeboxTerminationCondition, _JukeboxType as JukeboxType, _JukeboxUser as JukeboxUser, _JukeboxUserType as JukeboxUserType, _KnexMigrations as KnexMigrations, _KnexMigrationsLock as KnexMigrationsLock, _MetricsDaily as MetricsDaily, _MetricsEvent as MetricsEvent, _NewsSite as NewsSite, _Notification as Notification, _NotificationType as NotificationType, _PauseStatusType as PauseStatusType, _Platform as Platform, _PlatformAlbum as PlatformAlbum, _PlatformAlbumGenreRelation as PlatformAlbumGenreRelation, _PlatformAlbumTrackRelation as PlatformAlbumTrackRelation, _PlatformArtist as PlatformArtist, _PlatformArtistAlbumRelation as PlatformArtistAlbumRelation, _PlatformArtistGenreRelation as PlatformArtistGenreRelation, _PlatformArtistTrackRelation as PlatformArtistTrackRelation, _PlatformGenre as PlatformGenre, _PlatformTrack as PlatformTrack, _PlatformTrackGenreRelation as PlatformTrackGenreRelation, _PlatformUserAlbum as PlatformUserAlbum, _PlatformUserAlbumTrack as PlatformUserAlbumTrack, _PlatformUserPlaylist as PlatformUserPlaylist, _PlatformUserPlaylistTrack as PlatformUserPlaylistTrack, _PlaybackStatus as PlaybackStatus, _PlaybackStatusType as PlaybackStatusType, _State as State, _TrackDeletionReason as TrackDeletionReason, _UnmatchedAlbum as UnmatchedAlbum, _UnmatchedArtist as UnmatchedArtist, _UserContacts as UserContacts, };
145
+ export type { AppUserAttributes, AppUserCreationAttributes, AppUserDeviceAttributes, AppUserDeviceCreationAttributes, AppUserFollowRelationAttributes, AppUserFollowRelationCreationAttributes, AppUserPlatformRelationAttributes, AppUserPlatformRelationCreationAttributes, CanonAlbumAttributes, CanonAlbumCreationAttributes, CanonAlbumExternalReferenceRelationAttributes, CanonAlbumExternalReferenceRelationCreationAttributes, CanonAlbumGenreRelationAttributes, CanonAlbumGenreRelationCreationAttributes, CanonAlbumImageHarvestedAttributes, CanonAlbumImageHarvestedCreationAttributes, CanonAlbumLabelRelationAttributes, CanonAlbumLabelRelationCreationAttributes, CanonAlbumTrackRelationAttributes, CanonAlbumTrackRelationCreationAttributes, CanonArtistAttributes, CanonArtistCreationAttributes, CanonArtistAlbumRelationAttributes, CanonArtistAlbumRelationCreationAttributes, CanonArtistExternalReferenceRelationAttributes, CanonArtistExternalReferenceRelationCreationAttributes, CanonArtistGenreRelationAttributes, CanonArtistGenreRelationCreationAttributes, CanonArtistImageHarvestedAttributes, CanonArtistImageHarvestedCreationAttributes, CanonArtistMemberRelationAttributes, CanonArtistMemberRelationCreationAttributes, CanonArtistTrackRelationAttributes, CanonArtistTrackRelationCreationAttributes, CanonGenreAttributes, CanonGenreCreationAttributes, CanonGenreExternalReferenceRelationAttributes, CanonGenreExternalReferenceRelationCreationAttributes, CanonLabelAttributes, CanonLabelCreationAttributes, CanonLabelExternalReferenceRelationAttributes, CanonLabelExternalReferenceRelationCreationAttributes, CanonMemberAttributes, CanonMemberCreationAttributes, CanonMemberExternalReferenceRelationAttributes, CanonMemberExternalReferenceRelationCreationAttributes, CanonToPlatformAlbumRelationAttributes, CanonToPlatformAlbumRelationCreationAttributes, CanonToPlatformArtistRelationAttributes, CanonToPlatformArtistRelationCreationAttributes, CanonToPlatformGenreRelationAttributes, CanonToPlatformGenreRelationCreationAttributes, CanonToPlatformTrackRelationAttributes, CanonToPlatformTrackRelationCreationAttributes, CanonTrackAttributes, CanonTrackCreationAttributes, ConfigParamAttributes, ConfigParamCreationAttributes, ExternalReferenceAttributes, ExternalReferenceCreationAttributes, JukeboxAccessTypeAttributes, JukeboxAccessTypeCreationAttributes, JukeboxCanonGenreRelationAttributes, JukeboxCanonGenreRelationCreationAttributes, JukeboxInviteAttributes, JukeboxInviteCreationAttributes, JukeboxQueueEntryAttributes, JukeboxQueueEntryCreationAttributes, JukeboxQueueModeAttributes, JukeboxQueueModeCreationAttributes, JukeboxSessionAttributes, JukeboxSessionCreationAttributes, JukeboxStatusAttributes, JukeboxStatusCreationAttributes, JukeboxTerminationConditionAttributes, JukeboxTerminationConditionCreationAttributes, JukeboxTypeAttributes, JukeboxTypeCreationAttributes, JukeboxUserAttributes, JukeboxUserCreationAttributes, JukeboxUserTypeAttributes, JukeboxUserTypeCreationAttributes, KnexMigrationsAttributes, KnexMigrationsCreationAttributes, KnexMigrationsLockAttributes, KnexMigrationsLockCreationAttributes, MetricsDailyAttributes, MetricsDailyCreationAttributes, MetricsEventAttributes, MetricsEventCreationAttributes, NewsSiteAttributes, NewsSiteCreationAttributes, NotificationAttributes, NotificationCreationAttributes, NotificationTypeAttributes, NotificationTypeCreationAttributes, PauseStatusTypeAttributes, PauseStatusTypeCreationAttributes, PlatformAttributes, PlatformCreationAttributes, PlatformAlbumAttributes, PlatformAlbumCreationAttributes, PlatformAlbumGenreRelationAttributes, PlatformAlbumGenreRelationCreationAttributes, PlatformAlbumTrackRelationAttributes, PlatformAlbumTrackRelationCreationAttributes, PlatformArtistAttributes, PlatformArtistCreationAttributes, PlatformArtistAlbumRelationAttributes, PlatformArtistAlbumRelationCreationAttributes, PlatformArtistGenreRelationAttributes, PlatformArtistGenreRelationCreationAttributes, PlatformArtistTrackRelationAttributes, PlatformArtistTrackRelationCreationAttributes, PlatformGenreAttributes, PlatformGenreCreationAttributes, PlatformTrackAttributes, PlatformTrackCreationAttributes, PlatformTrackGenreRelationAttributes, PlatformTrackGenreRelationCreationAttributes, PlatformUserAlbumAttributes, PlatformUserAlbumCreationAttributes, PlatformUserAlbumTrackAttributes, PlatformUserAlbumTrackCreationAttributes, PlatformUserPlaylistAttributes, PlatformUserPlaylistCreationAttributes, PlatformUserPlaylistTrackAttributes, PlatformUserPlaylistTrackCreationAttributes, PlaybackStatusAttributes, PlaybackStatusCreationAttributes, PlaybackStatusTypeAttributes, PlaybackStatusTypeCreationAttributes, StateAttributes, StateCreationAttributes, TrackDeletionReasonAttributes, TrackDeletionReasonCreationAttributes, UnmatchedAlbumAttributes, UnmatchedAlbumCreationAttributes, UnmatchedArtistAttributes, UnmatchedArtistCreationAttributes, UserContactsAttributes, UserContactsCreationAttributes, };
142
146
  export declare function initModels(sequelize: Sequelize): {
143
147
  AppUser: typeof _AppUser;
144
148
  AppUserDevice: typeof _AppUserDevice;
@@ -186,6 +190,8 @@ export declare function initModels(sequelize: Sequelize): {
186
190
  MetricsDaily: typeof _MetricsDaily;
187
191
  MetricsEvent: typeof _MetricsEvent;
188
192
  NewsSite: typeof _NewsSite;
193
+ Notification: typeof _Notification;
194
+ NotificationType: typeof _NotificationType;
189
195
  PauseStatusType: typeof _PauseStatusType;
190
196
  Platform: typeof _Platform;
191
197
  PlatformAlbum: typeof _PlatformAlbum;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PlatformAlbumGenreRelation = exports.PlatformAlbum = exports.Platform = exports.PauseStatusType = exports.NewsSite = exports.MetricsEvent = exports.MetricsDaily = exports.KnexMigrationsLock = exports.KnexMigrations = exports.JukeboxUserType = exports.JukeboxUser = exports.JukeboxType = exports.JukeboxTerminationCondition = exports.JukeboxStatus = exports.JukeboxSession = exports.JukeboxQueueMode = exports.JukeboxQueueEntry = exports.JukeboxInvite = exports.JukeboxCanonGenreRelation = exports.JukeboxAccessType = exports.ExternalReference = exports.ConfigParam = exports.CanonTrack = exports.CanonToPlatformTrackRelation = exports.CanonToPlatformGenreRelation = exports.CanonToPlatformArtistRelation = exports.CanonToPlatformAlbumRelation = exports.CanonMemberExternalReferenceRelation = exports.CanonMember = exports.CanonLabelExternalReferenceRelation = exports.CanonLabel = exports.CanonGenreExternalReferenceRelation = exports.CanonGenre = exports.CanonArtistTrackRelation = exports.CanonArtistMemberRelation = exports.CanonArtistImageHarvested = exports.CanonArtistGenreRelation = exports.CanonArtistExternalReferenceRelation = exports.CanonArtistAlbumRelation = exports.CanonArtist = exports.CanonAlbumTrackRelation = exports.CanonAlbumLabelRelation = exports.CanonAlbumImageHarvested = exports.CanonAlbumGenreRelation = exports.CanonAlbumExternalReferenceRelation = exports.CanonAlbum = exports.AppUserPlatformRelation = exports.AppUserFollowRelation = exports.AppUserDevice = exports.AppUser = void 0;
4
- exports.UserContacts = exports.UnmatchedArtist = exports.UnmatchedAlbum = exports.TrackDeletionReason = exports.State = 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 = void 0;
3
+ exports.Platform = exports.PauseStatusType = exports.NotificationType = exports.Notification = exports.NewsSite = exports.MetricsEvent = exports.MetricsDaily = exports.KnexMigrationsLock = exports.KnexMigrations = exports.JukeboxUserType = exports.JukeboxUser = exports.JukeboxType = exports.JukeboxTerminationCondition = exports.JukeboxStatus = exports.JukeboxSession = exports.JukeboxQueueMode = exports.JukeboxQueueEntry = exports.JukeboxInvite = exports.JukeboxCanonGenreRelation = exports.JukeboxAccessType = exports.ExternalReference = exports.ConfigParam = exports.CanonTrack = exports.CanonToPlatformTrackRelation = exports.CanonToPlatformGenreRelation = exports.CanonToPlatformArtistRelation = exports.CanonToPlatformAlbumRelation = exports.CanonMemberExternalReferenceRelation = exports.CanonMember = exports.CanonLabelExternalReferenceRelation = exports.CanonLabel = exports.CanonGenreExternalReferenceRelation = exports.CanonGenre = exports.CanonArtistTrackRelation = exports.CanonArtistMemberRelation = exports.CanonArtistImageHarvested = exports.CanonArtistGenreRelation = exports.CanonArtistExternalReferenceRelation = exports.CanonArtistAlbumRelation = exports.CanonArtist = exports.CanonAlbumTrackRelation = exports.CanonAlbumLabelRelation = exports.CanonAlbumImageHarvested = exports.CanonAlbumGenreRelation = exports.CanonAlbumExternalReferenceRelation = exports.CanonAlbum = exports.AppUserPlatformRelation = exports.AppUserFollowRelation = exports.AppUserDevice = exports.AppUser = void 0;
4
+ exports.UserContacts = exports.UnmatchedArtist = exports.UnmatchedAlbum = exports.TrackDeletionReason = exports.State = 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 = void 0;
5
5
  exports.initModels = initModels;
6
6
  const AppUser_1 = require("./AppUser");
7
7
  Object.defineProperty(exports, "AppUser", { enumerable: true, get: function () { return AppUser_1.AppUser; } });
@@ -95,6 +95,10 @@ const MetricsEvent_1 = require("./MetricsEvent");
95
95
  Object.defineProperty(exports, "MetricsEvent", { enumerable: true, get: function () { return MetricsEvent_1.MetricsEvent; } });
96
96
  const NewsSite_1 = require("./NewsSite");
97
97
  Object.defineProperty(exports, "NewsSite", { enumerable: true, get: function () { return NewsSite_1.NewsSite; } });
98
+ const Notification_1 = require("./Notification");
99
+ Object.defineProperty(exports, "Notification", { enumerable: true, get: function () { return Notification_1.Notification; } });
100
+ const NotificationType_1 = require("./NotificationType");
101
+ Object.defineProperty(exports, "NotificationType", { enumerable: true, get: function () { return NotificationType_1.NotificationType; } });
98
102
  const PauseStatusType_1 = require("./PauseStatusType");
99
103
  Object.defineProperty(exports, "PauseStatusType", { enumerable: true, get: function () { return PauseStatusType_1.PauseStatusType; } });
100
104
  const Platform_1 = require("./Platform");
@@ -188,6 +192,8 @@ function initModels(sequelize) {
188
192
  const MetricsDaily = MetricsDaily_1.MetricsDaily.initModel(sequelize);
189
193
  const MetricsEvent = MetricsEvent_1.MetricsEvent.initModel(sequelize);
190
194
  const NewsSite = NewsSite_1.NewsSite.initModel(sequelize);
195
+ const Notification = Notification_1.Notification.initModel(sequelize);
196
+ const NotificationType = NotificationType_1.NotificationType.initModel(sequelize);
191
197
  const PauseStatusType = PauseStatusType_1.PauseStatusType.initModel(sequelize);
192
198
  const Platform = Platform_1.Platform.initModel(sequelize);
193
199
  const PlatformAlbum = PlatformAlbum_1.PlatformAlbum.initModel(sequelize);
@@ -271,6 +277,10 @@ function initModels(sequelize) {
271
277
  AppUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedUserId" });
272
278
  JukeboxUser.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
273
279
  AppUser.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "appUserId" });
280
+ Notification.belongsTo(AppUser, { as: "sourceUser", foreignKey: "sourceUserId" });
281
+ AppUser.hasMany(Notification, { as: "notifications", foreignKey: "sourceUserId" });
282
+ Notification.belongsTo(AppUser, { as: "targetUser", foreignKey: "targetUserId" });
283
+ AppUser.hasMany(Notification, { as: "targetUserNotifications", foreignKey: "targetUserId" });
274
284
  PlatformUserAlbum.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
275
285
  AppUser.hasMany(PlatformUserAlbum, { as: "platformUserAlbums", foreignKey: "appUserId" });
276
286
  PlatformUserPlaylist.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
@@ -343,6 +353,8 @@ function initModels(sequelize) {
343
353
  JukeboxSession.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "jukeboxSessionId" });
344
354
  JukeboxUser.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
345
355
  JukeboxSession.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxSessionId" });
356
+ Notification.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId" });
357
+ JukeboxSession.hasMany(Notification, { as: "notifications", foreignKey: "jukeboxSessionId" });
346
358
  JukeboxSession.belongsTo(JukeboxStatus, { as: "jukeboxStatus", foreignKey: "jukeboxStatusId" });
347
359
  JukeboxStatus.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "jukeboxStatusId" });
348
360
  JukeboxSession.belongsTo(JukeboxTerminationCondition, { as: "terminationCondition", foreignKey: "terminationConditionId" });
@@ -351,6 +363,8 @@ function initModels(sequelize) {
351
363
  JukeboxType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "typeId" });
352
364
  JukeboxUser.belongsTo(JukeboxUserType, { as: "jukeboxUserType", foreignKey: "jukeboxUserTypeId" });
353
365
  JukeboxUserType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxUserTypeId" });
366
+ Notification.belongsTo(NotificationType, { as: "notificationType", foreignKey: "notificationTypeId" });
367
+ NotificationType.hasMany(Notification, { as: "notifications", foreignKey: "notificationTypeId" });
354
368
  JukeboxUser.belongsTo(PauseStatusType, { as: "pauseStatusType", foreignKey: "pauseStatusTypeId" });
355
369
  PauseStatusType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "pauseStatusTypeId" });
356
370
  AppUserPlatformRelation.belongsTo(Platform, { as: "platform", foreignKey: "platformId" });
@@ -484,6 +498,8 @@ function initModels(sequelize) {
484
498
  MetricsDaily: MetricsDaily,
485
499
  MetricsEvent: MetricsEvent,
486
500
  NewsSite: NewsSite,
501
+ Notification: Notification,
502
+ NotificationType: NotificationType,
487
503
  PauseStatusType: PauseStatusType,
488
504
  Platform: Platform,
489
505
  PlatformAlbum: PlatformAlbum,
package/models/AppUser.ts CHANGED
@@ -6,6 +6,7 @@ import type { AppUserPlatformRelation, AppUserPlatformRelationCreationAttributes
6
6
  import type { JukeboxInvite, JukeboxInviteId } from './JukeboxInvite';
7
7
  import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry';
8
8
  import type { JukeboxUser, JukeboxUserId } from './JukeboxUser';
9
+ import type { Notification, NotificationId } from './Notification';
9
10
  import type { PlatformUserAlbum, PlatformUserAlbumId } from './PlatformUserAlbum';
10
11
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
11
12
  import type { State, StateId } from './State';
@@ -132,6 +133,30 @@ export class AppUser extends Model<AppUserAttributes, AppUserCreationAttributes>
132
133
  hasJukeboxUser!: Sequelize.HasManyHasAssociationMixin<JukeboxUser, JukeboxUserId>;
133
134
  hasJukeboxUsers!: Sequelize.HasManyHasAssociationsMixin<JukeboxUser, JukeboxUserId>;
134
135
  countJukeboxUsers!: Sequelize.HasManyCountAssociationsMixin;
136
+ // AppUser hasMany Notification via sourceUserId
137
+ notifications!: Notification[];
138
+ getNotifications!: Sequelize.HasManyGetAssociationsMixin<Notification>;
139
+ setNotifications!: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
140
+ addNotification!: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
141
+ addNotifications!: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
142
+ createNotification!: Sequelize.HasManyCreateAssociationMixin<Notification>;
143
+ removeNotification!: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
144
+ removeNotifications!: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
145
+ hasNotification!: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
146
+ hasNotifications!: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
147
+ countNotifications!: Sequelize.HasManyCountAssociationsMixin;
148
+ // AppUser hasMany Notification via targetUserId
149
+ targetUserNotifications!: Notification[];
150
+ getTargetUserNotifications!: Sequelize.HasManyGetAssociationsMixin<Notification>;
151
+ setTargetUserNotifications!: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
152
+ addTargetUserNotification!: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
153
+ addTargetUserNotifications!: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
154
+ createTargetUserNotification!: Sequelize.HasManyCreateAssociationMixin<Notification>;
155
+ removeTargetUserNotification!: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
156
+ removeTargetUserNotifications!: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
157
+ hasTargetUserNotification!: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
158
+ hasTargetUserNotifications!: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
159
+ countTargetUserNotifications!: Sequelize.HasManyCountAssociationsMixin;
135
160
  // AppUser hasMany PlatformUserAlbum via appUserId
136
161
  platformUserAlbums!: PlatformUserAlbum[];
137
162
  getPlatformUserAlbums!: Sequelize.HasManyGetAssociationsMixin<PlatformUserAlbum>;
@@ -9,6 +9,7 @@ import type { JukeboxStatus, JukeboxStatusId } from './JukeboxStatus';
9
9
  import type { JukeboxTerminationCondition, JukeboxTerminationConditionId } from './JukeboxTerminationCondition';
10
10
  import type { JukeboxType, JukeboxTypeId } from './JukeboxType';
11
11
  import type { JukeboxUser, JukeboxUserId } from './JukeboxUser';
12
+ import type { Notification, NotificationId } from './Notification';
12
13
 
13
14
  export interface JukeboxSessionAttributes {
14
15
  typeId: number;
@@ -102,6 +103,18 @@ export class JukeboxSession extends Model<JukeboxSessionAttributes, JukeboxSessi
102
103
  hasJukeboxUser!: Sequelize.HasManyHasAssociationMixin<JukeboxUser, JukeboxUserId>;
103
104
  hasJukeboxUsers!: Sequelize.HasManyHasAssociationsMixin<JukeboxUser, JukeboxUserId>;
104
105
  countJukeboxUsers!: Sequelize.HasManyCountAssociationsMixin;
106
+ // JukeboxSession hasMany Notification via jukeboxSessionId
107
+ notifications!: Notification[];
108
+ getNotifications!: Sequelize.HasManyGetAssociationsMixin<Notification>;
109
+ setNotifications!: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
110
+ addNotification!: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
111
+ addNotifications!: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
112
+ createNotification!: Sequelize.HasManyCreateAssociationMixin<Notification>;
113
+ removeNotification!: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
114
+ removeNotifications!: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
115
+ hasNotification!: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
116
+ hasNotifications!: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
117
+ countNotifications!: Sequelize.HasManyCountAssociationsMixin;
105
118
  // JukeboxSession belongsTo JukeboxStatus via jukeboxStatusId
106
119
  jukeboxStatus!: JukeboxStatus;
107
120
  getJukeboxStatus!: Sequelize.BelongsToGetAssociationMixin<JukeboxStatus>;
@@ -0,0 +1,202 @@
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
+ import type { NotificationType, NotificationTypeId } from './NotificationType';
6
+
7
+ export interface NotificationAttributes {
8
+ targetUserId: string;
9
+ notificationTypeId: number;
10
+ metadata?: object;
11
+ readAt?: Date;
12
+ dismissedAt?: Date;
13
+ sourceUserId?: string;
14
+ jukeboxSessionId?: string;
15
+ expiresAt?: Date;
16
+ pushSentAt?: Date;
17
+ pushError?: string;
18
+ id: string;
19
+ isRead: boolean;
20
+ isDismissed: boolean;
21
+ createdAt: Date;
22
+ updatedAt: Date;
23
+ pushSent: boolean;
24
+ }
25
+
26
+ export type NotificationPk = "id";
27
+ export type NotificationId = Notification[NotificationPk];
28
+ export type NotificationOptionalAttributes = "metadata" | "readAt" | "dismissedAt" | "sourceUserId" | "jukeboxSessionId" | "expiresAt" | "pushSentAt" | "pushError" | "id" | "createdAt" | "updatedAt";
29
+ export type NotificationCreationAttributes = Optional<NotificationAttributes, NotificationOptionalAttributes>;
30
+
31
+ export class Notification extends Model<NotificationAttributes, NotificationCreationAttributes> implements NotificationAttributes {
32
+ targetUserId!: string;
33
+ notificationTypeId!: number;
34
+ metadata?: object;
35
+ readAt?: Date;
36
+ dismissedAt?: Date;
37
+ sourceUserId?: string;
38
+ jukeboxSessionId?: string;
39
+ expiresAt?: Date;
40
+ pushSentAt?: Date;
41
+ pushError?: string;
42
+ id!: string;
43
+ isRead!: boolean;
44
+ isDismissed!: boolean;
45
+ createdAt!: Date;
46
+ updatedAt!: Date;
47
+ pushSent!: boolean;
48
+
49
+ // Notification belongsTo AppUser via sourceUserId
50
+ sourceUser!: AppUser;
51
+ getSourceUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
52
+ setSourceUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
53
+ createSourceUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
54
+ // Notification belongsTo AppUser via targetUserId
55
+ targetUser!: AppUser;
56
+ getTargetUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
57
+ setTargetUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
58
+ createTargetUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
59
+ // Notification belongsTo JukeboxSession via jukeboxSessionId
60
+ jukeboxSession!: JukeboxSession;
61
+ getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
62
+ setJukeboxSession!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
63
+ createJukeboxSession!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
64
+ // Notification belongsTo NotificationType via notificationTypeId
65
+ notificationType!: NotificationType;
66
+ getNotificationType!: Sequelize.BelongsToGetAssociationMixin<NotificationType>;
67
+ setNotificationType!: Sequelize.BelongsToSetAssociationMixin<NotificationType, NotificationTypeId>;
68
+ createNotificationType!: Sequelize.BelongsToCreateAssociationMixin<NotificationType>;
69
+
70
+ static initModel(sequelize: Sequelize.Sequelize): typeof Notification {
71
+ return Notification.init({
72
+ targetUserId: {
73
+ type: DataTypes.UUID,
74
+ allowNull: false,
75
+ references: {
76
+ model: 'app_user',
77
+ key: 'id'
78
+ },
79
+ field: 'target_user_id'
80
+ },
81
+ notificationTypeId: {
82
+ type: DataTypes.SMALLINT,
83
+ allowNull: false,
84
+ references: {
85
+ model: 'notification_type',
86
+ key: 'id'
87
+ },
88
+ field: 'notification_type_id'
89
+ },
90
+ metadata: {
91
+ type: DataTypes.JSONB,
92
+ allowNull: true
93
+ },
94
+ readAt: {
95
+ type: DataTypes.DATE,
96
+ allowNull: true,
97
+ field: 'read_at'
98
+ },
99
+ dismissedAt: {
100
+ type: DataTypes.DATE,
101
+ allowNull: true,
102
+ field: 'dismissed_at'
103
+ },
104
+ sourceUserId: {
105
+ type: DataTypes.UUID,
106
+ allowNull: true,
107
+ references: {
108
+ model: 'app_user',
109
+ key: 'id'
110
+ },
111
+ field: 'source_user_id'
112
+ },
113
+ jukeboxSessionId: {
114
+ type: DataTypes.UUID,
115
+ allowNull: true,
116
+ references: {
117
+ model: 'jukebox_session',
118
+ key: 'id'
119
+ },
120
+ field: 'jukebox_session_id'
121
+ },
122
+ expiresAt: {
123
+ type: DataTypes.DATE,
124
+ allowNull: true,
125
+ field: 'expires_at'
126
+ },
127
+ pushSentAt: {
128
+ type: DataTypes.DATE,
129
+ allowNull: true,
130
+ field: 'push_sent_at'
131
+ },
132
+ pushError: {
133
+ type: DataTypes.TEXT,
134
+ allowNull: true,
135
+ field: 'push_error'
136
+ },
137
+ id: {
138
+ type: DataTypes.UUID,
139
+ allowNull: false,
140
+ defaultValue: DataTypes.UUIDV4,
141
+ primaryKey: true
142
+ },
143
+ isRead: {
144
+ type: DataTypes.BOOLEAN,
145
+ allowNull: false,
146
+ defaultValue: false,
147
+ field: 'is_read'
148
+ },
149
+ isDismissed: {
150
+ type: DataTypes.BOOLEAN,
151
+ allowNull: false,
152
+ defaultValue: false,
153
+ field: 'is_dismissed'
154
+ },
155
+ createdAt: {
156
+ type: DataTypes.DATE,
157
+ allowNull: false,
158
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
159
+ field: 'created_at'
160
+ },
161
+ updatedAt: {
162
+ type: DataTypes.DATE,
163
+ allowNull: false,
164
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
165
+ field: 'updated_at'
166
+ },
167
+ pushSent: {
168
+ type: DataTypes.BOOLEAN,
169
+ allowNull: false,
170
+ defaultValue: false,
171
+ field: 'push_sent'
172
+ }
173
+ }, {
174
+ sequelize,
175
+ tableName: 'notification',
176
+ schema: 'eb',
177
+ timestamps: false,
178
+ indexes: [
179
+ {
180
+ name: "idx_notification_expires_at",
181
+ fields: [
182
+ { name: "expires_at" },
183
+ ]
184
+ },
185
+ {
186
+ name: "idx_notification_target_user_created_at",
187
+ fields: [
188
+ { name: "target_user_id" },
189
+ { name: "created_at", order: "DESC" },
190
+ ]
191
+ },
192
+ {
193
+ name: "notification_pkey",
194
+ unique: true,
195
+ fields: [
196
+ { name: "id" },
197
+ ]
198
+ },
199
+ ]
200
+ });
201
+ }
202
+ }
@@ -0,0 +1,66 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { Notification, NotificationId } from './Notification';
4
+
5
+ export interface NotificationTypeAttributes {
6
+ id: number;
7
+ name: string;
8
+ }
9
+
10
+ export type NotificationTypePk = "id";
11
+ export type NotificationTypeId = NotificationType[NotificationTypePk];
12
+ export type NotificationTypeCreationAttributes = NotificationTypeAttributes;
13
+
14
+ export class NotificationType extends Model<NotificationTypeAttributes, NotificationTypeCreationAttributes> implements NotificationTypeAttributes {
15
+ id!: number;
16
+ name!: string;
17
+
18
+ // NotificationType hasMany Notification via notificationTypeId
19
+ notifications!: Notification[];
20
+ getNotifications!: Sequelize.HasManyGetAssociationsMixin<Notification>;
21
+ setNotifications!: Sequelize.HasManySetAssociationsMixin<Notification, NotificationId>;
22
+ addNotification!: Sequelize.HasManyAddAssociationMixin<Notification, NotificationId>;
23
+ addNotifications!: Sequelize.HasManyAddAssociationsMixin<Notification, NotificationId>;
24
+ createNotification!: Sequelize.HasManyCreateAssociationMixin<Notification>;
25
+ removeNotification!: Sequelize.HasManyRemoveAssociationMixin<Notification, NotificationId>;
26
+ removeNotifications!: Sequelize.HasManyRemoveAssociationsMixin<Notification, NotificationId>;
27
+ hasNotification!: Sequelize.HasManyHasAssociationMixin<Notification, NotificationId>;
28
+ hasNotifications!: Sequelize.HasManyHasAssociationsMixin<Notification, NotificationId>;
29
+ countNotifications!: Sequelize.HasManyCountAssociationsMixin;
30
+
31
+ static initModel(sequelize: Sequelize.Sequelize): typeof NotificationType {
32
+ return NotificationType.init({
33
+ id: {
34
+ type: DataTypes.SMALLINT,
35
+ allowNull: false,
36
+ primaryKey: true
37
+ },
38
+ name: {
39
+ type: DataTypes.TEXT,
40
+ allowNull: false,
41
+ unique: "notification_type_name_unique"
42
+ }
43
+ }, {
44
+ sequelize,
45
+ tableName: 'notification_type',
46
+ schema: 'eb',
47
+ timestamps: false,
48
+ indexes: [
49
+ {
50
+ name: "notification_type_name_unique",
51
+ unique: true,
52
+ fields: [
53
+ { name: "name" },
54
+ ]
55
+ },
56
+ {
57
+ name: "notification_type_pkey",
58
+ unique: true,
59
+ fields: [
60
+ { name: "id" },
61
+ ]
62
+ },
63
+ ]
64
+ });
65
+ }
66
+ }
@@ -91,6 +91,10 @@ import { MetricsEvent as _MetricsEvent } from "./MetricsEvent";
91
91
  import type { MetricsEventAttributes, MetricsEventCreationAttributes } from "./MetricsEvent";
92
92
  import { NewsSite as _NewsSite } from "./NewsSite";
93
93
  import type { NewsSiteAttributes, NewsSiteCreationAttributes } from "./NewsSite";
94
+ import { Notification as _Notification } from "./Notification";
95
+ import type { NotificationAttributes, NotificationCreationAttributes } from "./Notification";
96
+ import { NotificationType as _NotificationType } from "./NotificationType";
97
+ import type { NotificationTypeAttributes, NotificationTypeCreationAttributes } from "./NotificationType";
94
98
  import { PauseStatusType as _PauseStatusType } from "./PauseStatusType";
95
99
  import type { PauseStatusTypeAttributes, PauseStatusTypeCreationAttributes } from "./PauseStatusType";
96
100
  import { Platform as _Platform } from "./Platform";
@@ -185,6 +189,8 @@ export {
185
189
  _MetricsDaily as MetricsDaily,
186
190
  _MetricsEvent as MetricsEvent,
187
191
  _NewsSite as NewsSite,
192
+ _Notification as Notification,
193
+ _NotificationType as NotificationType,
188
194
  _PauseStatusType as PauseStatusType,
189
195
  _Platform as Platform,
190
196
  _PlatformAlbum as PlatformAlbum,
@@ -303,6 +309,10 @@ export type {
303
309
  MetricsEventCreationAttributes,
304
310
  NewsSiteAttributes,
305
311
  NewsSiteCreationAttributes,
312
+ NotificationAttributes,
313
+ NotificationCreationAttributes,
314
+ NotificationTypeAttributes,
315
+ NotificationTypeCreationAttributes,
306
316
  PauseStatusTypeAttributes,
307
317
  PauseStatusTypeCreationAttributes,
308
318
  PlatformAttributes,
@@ -398,6 +408,8 @@ export function initModels(sequelize: Sequelize) {
398
408
  const MetricsDaily = _MetricsDaily.initModel(sequelize);
399
409
  const MetricsEvent = _MetricsEvent.initModel(sequelize);
400
410
  const NewsSite = _NewsSite.initModel(sequelize);
411
+ const Notification = _Notification.initModel(sequelize);
412
+ const NotificationType = _NotificationType.initModel(sequelize);
401
413
  const PauseStatusType = _PauseStatusType.initModel(sequelize);
402
414
  const Platform = _Platform.initModel(sequelize);
403
415
  const PlatformAlbum = _PlatformAlbum.initModel(sequelize);
@@ -482,6 +494,10 @@ export function initModels(sequelize: Sequelize) {
482
494
  AppUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedUserId"});
483
495
  JukeboxUser.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId"});
484
496
  AppUser.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "appUserId"});
497
+ Notification.belongsTo(AppUser, { as: "sourceUser", foreignKey: "sourceUserId"});
498
+ AppUser.hasMany(Notification, { as: "notifications", foreignKey: "sourceUserId"});
499
+ Notification.belongsTo(AppUser, { as: "targetUser", foreignKey: "targetUserId"});
500
+ AppUser.hasMany(Notification, { as: "targetUserNotifications", foreignKey: "targetUserId"});
485
501
  PlatformUserAlbum.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId"});
486
502
  AppUser.hasMany(PlatformUserAlbum, { as: "platformUserAlbums", foreignKey: "appUserId"});
487
503
  PlatformUserPlaylist.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId"});
@@ -554,6 +570,8 @@ export function initModels(sequelize: Sequelize) {
554
570
  JukeboxSession.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "jukeboxSessionId"});
555
571
  JukeboxUser.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId"});
556
572
  JukeboxSession.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxSessionId"});
573
+ Notification.belongsTo(JukeboxSession, { as: "jukeboxSession", foreignKey: "jukeboxSessionId"});
574
+ JukeboxSession.hasMany(Notification, { as: "notifications", foreignKey: "jukeboxSessionId"});
557
575
  JukeboxSession.belongsTo(JukeboxStatus, { as: "jukeboxStatus", foreignKey: "jukeboxStatusId"});
558
576
  JukeboxStatus.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "jukeboxStatusId"});
559
577
  JukeboxSession.belongsTo(JukeboxTerminationCondition, { as: "terminationCondition", foreignKey: "terminationConditionId"});
@@ -562,6 +580,8 @@ export function initModels(sequelize: Sequelize) {
562
580
  JukeboxType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "typeId"});
563
581
  JukeboxUser.belongsTo(JukeboxUserType, { as: "jukeboxUserType", foreignKey: "jukeboxUserTypeId"});
564
582
  JukeboxUserType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxUserTypeId"});
583
+ Notification.belongsTo(NotificationType, { as: "notificationType", foreignKey: "notificationTypeId"});
584
+ NotificationType.hasMany(Notification, { as: "notifications", foreignKey: "notificationTypeId"});
565
585
  JukeboxUser.belongsTo(PauseStatusType, { as: "pauseStatusType", foreignKey: "pauseStatusTypeId"});
566
586
  PauseStatusType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "pauseStatusTypeId"});
567
587
  AppUserPlatformRelation.belongsTo(Platform, { as: "platform", foreignKey: "platformId"});
@@ -696,6 +716,8 @@ export function initModels(sequelize: Sequelize) {
696
716
  MetricsDaily: MetricsDaily,
697
717
  MetricsEvent: MetricsEvent,
698
718
  NewsSite: NewsSite,
719
+ Notification: Notification,
720
+ NotificationType: NotificationType,
699
721
  PauseStatusType: PauseStatusType,
700
722
  Platform: Platform,
701
723
  PlatformAlbum: PlatformAlbum,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earbug/db-models",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "main": "dist/init-models.js",
5
5
  "types": "dist/init-models.d.ts",
6
6
  "scripts": {