@earbug/db-models 0.0.51 → 0.0.53

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.
@@ -3,8 +3,6 @@ import { Model, Optional } from 'sequelize';
3
3
  import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry';
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
5
  import type { Versus, VersusId } from './Versus';
6
- import type { VersusCoCreator, VersusCoCreatorId } from './VersusCoCreator';
7
- import type { VersusOption, VersusOptionId } from './VersusOption';
8
6
  export interface GuestUserAttributes {
9
7
  jukeboxSessionId?: string;
10
8
  firstName: string;
@@ -39,28 +37,6 @@ export declare class GuestUser extends Model<GuestUserAttributes, GuestUserCreat
39
37
  hasJukeboxQueueEntry: Sequelize.HasManyHasAssociationMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
40
38
  hasJukeboxQueueEntries: Sequelize.HasManyHasAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
41
39
  countJukeboxQueueEntries: Sequelize.HasManyCountAssociationsMixin;
42
- versusCoCreators: VersusCoCreator[];
43
- getVersusCoCreators: Sequelize.HasManyGetAssociationsMixin<VersusCoCreator>;
44
- setVersusCoCreators: Sequelize.HasManySetAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
45
- addVersusCoCreator: Sequelize.HasManyAddAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
46
- addVersusCoCreators: Sequelize.HasManyAddAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
47
- createVersusCoCreator: Sequelize.HasManyCreateAssociationMixin<VersusCoCreator>;
48
- removeVersusCoCreator: Sequelize.HasManyRemoveAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
49
- removeVersusCoCreators: Sequelize.HasManyRemoveAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
50
- hasVersusCoCreator: Sequelize.HasManyHasAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
51
- hasVersusCoCreators: Sequelize.HasManyHasAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
52
- countVersusCoCreators: Sequelize.HasManyCountAssociationsMixin;
53
- versusOptions: VersusOption[];
54
- getVersusOptions: Sequelize.HasManyGetAssociationsMixin<VersusOption>;
55
- setVersusOptions: Sequelize.HasManySetAssociationsMixin<VersusOption, VersusOptionId>;
56
- addVersusOption: Sequelize.HasManyAddAssociationMixin<VersusOption, VersusOptionId>;
57
- addVersusOptions: Sequelize.HasManyAddAssociationsMixin<VersusOption, VersusOptionId>;
58
- createVersusOption: Sequelize.HasManyCreateAssociationMixin<VersusOption>;
59
- removeVersusOption: Sequelize.HasManyRemoveAssociationMixin<VersusOption, VersusOptionId>;
60
- removeVersusOptions: Sequelize.HasManyRemoveAssociationsMixin<VersusOption, VersusOptionId>;
61
- hasVersusOption: Sequelize.HasManyHasAssociationMixin<VersusOption, VersusOptionId>;
62
- hasVersusOptions: Sequelize.HasManyHasAssociationsMixin<VersusOption, VersusOptionId>;
63
- countVersusOptions: Sequelize.HasManyCountAssociationsMixin;
64
40
  jukeboxSession: JukeboxSession;
65
41
  getJukeboxSession: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
66
42
  setJukeboxSession: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
@@ -4,6 +4,8 @@ import type { CanonArtist, CanonArtistId } from './CanonArtist';
4
4
  import type { MerchPlatform, MerchPlatformId } from './MerchPlatform';
5
5
  import type { MerchType, MerchTypeId } from './MerchType';
6
6
  import type { UserBookmarks, UserBookmarksId } from './UserBookmarks';
7
+ import type { UserComments, UserCommentsId } from './UserComments';
8
+ import type { UserLikes, UserLikesId } from './UserLikes';
7
9
  export interface MerchItemAttributes {
8
10
  canonArtistId: string;
9
11
  merchTypeId: string;
@@ -50,6 +52,28 @@ export declare class MerchItem extends Model<MerchItemAttributes, MerchItemCreat
50
52
  hasUserBookmark: Sequelize.HasManyHasAssociationMixin<UserBookmarks, UserBookmarksId>;
51
53
  hasUserBookmarks: Sequelize.HasManyHasAssociationsMixin<UserBookmarks, UserBookmarksId>;
52
54
  countUserBookmarks: Sequelize.HasManyCountAssociationsMixin;
55
+ userComments: UserComments[];
56
+ getUserComments: Sequelize.HasManyGetAssociationsMixin<UserComments>;
57
+ setUserComments: Sequelize.HasManySetAssociationsMixin<UserComments, UserCommentsId>;
58
+ addUserComment: Sequelize.HasManyAddAssociationMixin<UserComments, UserCommentsId>;
59
+ addUserComments: Sequelize.HasManyAddAssociationsMixin<UserComments, UserCommentsId>;
60
+ createUserComment: Sequelize.HasManyCreateAssociationMixin<UserComments>;
61
+ removeUserComment: Sequelize.HasManyRemoveAssociationMixin<UserComments, UserCommentsId>;
62
+ removeUserComments: Sequelize.HasManyRemoveAssociationsMixin<UserComments, UserCommentsId>;
63
+ hasUserComment: Sequelize.HasManyHasAssociationMixin<UserComments, UserCommentsId>;
64
+ hasUserComments: Sequelize.HasManyHasAssociationsMixin<UserComments, UserCommentsId>;
65
+ countUserComments: Sequelize.HasManyCountAssociationsMixin;
66
+ userLikes: UserLikes[];
67
+ getUserLikes: Sequelize.HasManyGetAssociationsMixin<UserLikes>;
68
+ setUserLikes: Sequelize.HasManySetAssociationsMixin<UserLikes, UserLikesId>;
69
+ addUserLike: Sequelize.HasManyAddAssociationMixin<UserLikes, UserLikesId>;
70
+ addUserLikes: Sequelize.HasManyAddAssociationsMixin<UserLikes, UserLikesId>;
71
+ createUserLike: Sequelize.HasManyCreateAssociationMixin<UserLikes>;
72
+ removeUserLike: Sequelize.HasManyRemoveAssociationMixin<UserLikes, UserLikesId>;
73
+ removeUserLikes: Sequelize.HasManyRemoveAssociationsMixin<UserLikes, UserLikesId>;
74
+ hasUserLike: Sequelize.HasManyHasAssociationMixin<UserLikes, UserLikesId>;
75
+ hasUserLikes: Sequelize.HasManyHasAssociationsMixin<UserLikes, UserLikesId>;
76
+ countUserLikes: Sequelize.HasManyCountAssociationsMixin;
53
77
  merchPlatform: MerchPlatform;
54
78
  getMerchPlatform: Sequelize.BelongsToGetAssociationMixin<MerchPlatform>;
55
79
  setMerchPlatform: Sequelize.BelongsToSetAssociationMixin<MerchPlatform, MerchPlatformId>;
@@ -3,6 +3,8 @@ import { Model, Optional } from 'sequelize';
3
3
  import type { CanonArtist, CanonArtistId } from './CanonArtist';
4
4
  import type { NewsPlatform, NewsPlatformId } from './NewsPlatform';
5
5
  import type { UserBookmarks, UserBookmarksId } from './UserBookmarks';
6
+ import type { UserComments, UserCommentsId } from './UserComments';
7
+ import type { UserLikes, UserLikesId } from './UserLikes';
6
8
  export interface NewsArticleAttributes {
7
9
  id: string;
8
10
  canonArtistId: string;
@@ -45,6 +47,28 @@ export declare class NewsArticle extends Model<NewsArticleAttributes, NewsArticl
45
47
  hasUserBookmark: Sequelize.HasManyHasAssociationMixin<UserBookmarks, UserBookmarksId>;
46
48
  hasUserBookmarks: Sequelize.HasManyHasAssociationsMixin<UserBookmarks, UserBookmarksId>;
47
49
  countUserBookmarks: Sequelize.HasManyCountAssociationsMixin;
50
+ userComments: UserComments[];
51
+ getUserComments: Sequelize.HasManyGetAssociationsMixin<UserComments>;
52
+ setUserComments: Sequelize.HasManySetAssociationsMixin<UserComments, UserCommentsId>;
53
+ addUserComment: Sequelize.HasManyAddAssociationMixin<UserComments, UserCommentsId>;
54
+ addUserComments: Sequelize.HasManyAddAssociationsMixin<UserComments, UserCommentsId>;
55
+ createUserComment: Sequelize.HasManyCreateAssociationMixin<UserComments>;
56
+ removeUserComment: Sequelize.HasManyRemoveAssociationMixin<UserComments, UserCommentsId>;
57
+ removeUserComments: Sequelize.HasManyRemoveAssociationsMixin<UserComments, UserCommentsId>;
58
+ hasUserComment: Sequelize.HasManyHasAssociationMixin<UserComments, UserCommentsId>;
59
+ hasUserComments: Sequelize.HasManyHasAssociationsMixin<UserComments, UserCommentsId>;
60
+ countUserComments: Sequelize.HasManyCountAssociationsMixin;
61
+ userLikes: UserLikes[];
62
+ getUserLikes: Sequelize.HasManyGetAssociationsMixin<UserLikes>;
63
+ setUserLikes: Sequelize.HasManySetAssociationsMixin<UserLikes, UserLikesId>;
64
+ addUserLike: Sequelize.HasManyAddAssociationMixin<UserLikes, UserLikesId>;
65
+ addUserLikes: Sequelize.HasManyAddAssociationsMixin<UserLikes, UserLikesId>;
66
+ createUserLike: Sequelize.HasManyCreateAssociationMixin<UserLikes>;
67
+ removeUserLike: Sequelize.HasManyRemoveAssociationMixin<UserLikes, UserLikesId>;
68
+ removeUserLikes: Sequelize.HasManyRemoveAssociationsMixin<UserLikes, UserLikesId>;
69
+ hasUserLike: Sequelize.HasManyHasAssociationMixin<UserLikes, UserLikesId>;
70
+ hasUserLikes: Sequelize.HasManyHasAssociationsMixin<UserLikes, UserLikesId>;
71
+ countUserLikes: Sequelize.HasManyCountAssociationsMixin;
48
72
  newsPlatform: NewsPlatform;
49
73
  getNewsPlatform: Sequelize.BelongsToGetAssociationMixin<NewsPlatform>;
50
74
  setNewsPlatform: Sequelize.BelongsToSetAssociationMixin<NewsPlatform, NewsPlatformId>;
@@ -2,6 +2,8 @@ import * as Sequelize from 'sequelize';
2
2
  import { Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+ import type { MerchItem, MerchItemId } from './MerchItem';
6
+ import type { NewsArticle, NewsArticleId } from './NewsArticle';
5
7
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
6
8
  import type { RadioShow, RadioShowId } from './RadioShow';
7
9
  import type { UserAbuseReports, UserAbuseReportsId } from './UserAbuseReports';
@@ -20,10 +22,12 @@ export interface UserCommentsAttributes {
20
22
  moderationScore?: number;
21
23
  moderationLevel?: string;
22
24
  strippedUrls?: object;
25
+ newsArticleId?: string;
26
+ merchItemId?: string;
23
27
  }
24
28
  export type UserCommentsPk = "id";
25
29
  export type UserCommentsId = UserComments[UserCommentsPk];
26
- export type UserCommentsOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "replyCommentId" | "createDate" | "updateDate" | "modifiedComment" | "moderationScore" | "moderationLevel" | "strippedUrls";
30
+ export type UserCommentsOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "replyCommentId" | "createDate" | "updateDate" | "modifiedComment" | "moderationScore" | "moderationLevel" | "strippedUrls" | "newsArticleId" | "merchItemId";
27
31
  export type UserCommentsCreationAttributes = Optional<UserCommentsAttributes, UserCommentsOptionalAttributes>;
28
32
  export declare class UserComments extends Model<UserCommentsAttributes, UserCommentsCreationAttributes> implements UserCommentsAttributes {
29
33
  appUserId: string;
@@ -40,6 +44,8 @@ export declare class UserComments extends Model<UserCommentsAttributes, UserComm
40
44
  moderationScore?: number;
41
45
  moderationLevel?: string;
42
46
  strippedUrls?: object;
47
+ newsArticleId?: string;
48
+ merchItemId?: string;
43
49
  appUser: AppUser;
44
50
  getAppUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
45
51
  setAppUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
@@ -48,6 +54,14 @@ export declare class UserComments extends Model<UserCommentsAttributes, UserComm
48
54
  getJukebox: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
49
55
  setJukebox: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
50
56
  createJukebox: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
57
+ merchItem: MerchItem;
58
+ getMerchItem: Sequelize.BelongsToGetAssociationMixin<MerchItem>;
59
+ setMerchItem: Sequelize.BelongsToSetAssociationMixin<MerchItem, MerchItemId>;
60
+ createMerchItem: Sequelize.BelongsToCreateAssociationMixin<MerchItem>;
61
+ newsArticle: NewsArticle;
62
+ getNewsArticle: Sequelize.BelongsToGetAssociationMixin<NewsArticle>;
63
+ setNewsArticle: Sequelize.BelongsToSetAssociationMixin<NewsArticle, NewsArticleId>;
64
+ createNewsArticle: Sequelize.BelongsToCreateAssociationMixin<NewsArticle>;
51
65
  playlist: PlatformUserPlaylist;
52
66
  getPlaylist: Sequelize.BelongsToGetAssociationMixin<PlatformUserPlaylist>;
53
67
  setPlaylist: Sequelize.BelongsToSetAssociationMixin<PlatformUserPlaylist, PlatformUserPlaylistId>;
@@ -120,6 +120,24 @@ class UserComments extends sequelize_1.Model {
120
120
  type: sequelize_1.DataTypes.JSONB,
121
121
  allowNull: true,
122
122
  field: 'stripped_urls'
123
+ },
124
+ newsArticleId: {
125
+ type: sequelize_1.DataTypes.UUID,
126
+ allowNull: true,
127
+ references: {
128
+ model: 'news_article',
129
+ key: 'id'
130
+ },
131
+ field: 'news_article_id'
132
+ },
133
+ merchItemId: {
134
+ type: sequelize_1.DataTypes.UUID,
135
+ allowNull: true,
136
+ references: {
137
+ model: 'merch_item',
138
+ key: 'id'
139
+ },
140
+ field: 'merch_item_id'
123
141
  }
124
142
  }, {
125
143
  sequelize,
@@ -133,6 +151,18 @@ class UserComments extends sequelize_1.Model {
133
151
  { name: "jukebox_id" },
134
152
  ]
135
153
  },
154
+ {
155
+ name: "idx_user_comments_merch_item",
156
+ fields: [
157
+ { name: "merch_item_id" },
158
+ ]
159
+ },
160
+ {
161
+ name: "idx_user_comments_news_article",
162
+ fields: [
163
+ { name: "news_article_id" },
164
+ ]
165
+ },
136
166
  {
137
167
  name: "idx_user_comments_playlist",
138
168
  fields: [
@@ -2,6 +2,8 @@ import * as Sequelize from 'sequelize';
2
2
  import { Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+ import type { MerchItem, MerchItemId } from './MerchItem';
6
+ import type { NewsArticle, NewsArticleId } from './NewsArticle';
5
7
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
6
8
  import type { RadioShow, RadioShowId } from './RadioShow';
7
9
  export interface UserLikesAttributes {
@@ -12,10 +14,12 @@ export interface UserLikesAttributes {
12
14
  id: string;
13
15
  createDate: Date;
14
16
  updateDate: Date;
17
+ merchItemId?: string;
18
+ newsArticleId?: string;
15
19
  }
16
20
  export type UserLikesPk = "id";
17
21
  export type UserLikesId = UserLikes[UserLikesPk];
18
- export type UserLikesOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "createDate" | "updateDate";
22
+ export type UserLikesOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "createDate" | "updateDate" | "merchItemId" | "newsArticleId";
19
23
  export type UserLikesCreationAttributes = Optional<UserLikesAttributes, UserLikesOptionalAttributes>;
20
24
  export declare class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttributes> implements UserLikesAttributes {
21
25
  appUserId: string;
@@ -25,6 +29,8 @@ export declare class UserLikes extends Model<UserLikesAttributes, UserLikesCreat
25
29
  id: string;
26
30
  createDate: Date;
27
31
  updateDate: Date;
32
+ merchItemId?: string;
33
+ newsArticleId?: string;
28
34
  appUser: AppUser;
29
35
  getAppUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
30
36
  setAppUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
@@ -33,6 +39,14 @@ export declare class UserLikes extends Model<UserLikesAttributes, UserLikesCreat
33
39
  getJukebox: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
34
40
  setJukebox: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
35
41
  createJukebox: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
42
+ merchItem: MerchItem;
43
+ getMerchItem: Sequelize.BelongsToGetAssociationMixin<MerchItem>;
44
+ setMerchItem: Sequelize.BelongsToSetAssociationMixin<MerchItem, MerchItemId>;
45
+ createMerchItem: Sequelize.BelongsToCreateAssociationMixin<MerchItem>;
46
+ newsArticle: NewsArticle;
47
+ getNewsArticle: Sequelize.BelongsToGetAssociationMixin<NewsArticle>;
48
+ setNewsArticle: Sequelize.BelongsToSetAssociationMixin<NewsArticle, NewsArticleId>;
49
+ createNewsArticle: Sequelize.BelongsToCreateAssociationMixin<NewsArticle>;
36
50
  playlist: PlatformUserPlaylist;
37
51
  getPlaylist: Sequelize.BelongsToGetAssociationMixin<PlatformUserPlaylist>;
38
52
  setPlaylist: Sequelize.BelongsToSetAssociationMixin<PlatformUserPlaylist, PlatformUserPlaylistId>;
package/dist/UserLikes.js CHANGED
@@ -82,6 +82,24 @@ class UserLikes extends sequelize_1.Model {
82
82
  allowNull: false,
83
83
  defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
84
84
  field: 'update_date'
85
+ },
86
+ merchItemId: {
87
+ type: sequelize_1.DataTypes.UUID,
88
+ allowNull: true,
89
+ references: {
90
+ model: 'merch_item',
91
+ key: 'id'
92
+ },
93
+ field: 'merch_item_id'
94
+ },
95
+ newsArticleId: {
96
+ type: sequelize_1.DataTypes.UUID,
97
+ allowNull: true,
98
+ references: {
99
+ model: 'news_article',
100
+ key: 'id'
101
+ },
102
+ field: 'news_article_id'
85
103
  }
86
104
  }, {
87
105
  sequelize,
@@ -95,6 +113,18 @@ class UserLikes extends sequelize_1.Model {
95
113
  { name: "jukebox_id" },
96
114
  ]
97
115
  },
116
+ {
117
+ name: "idx_user_likes_merch_item",
118
+ fields: [
119
+ { name: "merch_item_id" },
120
+ ]
121
+ },
122
+ {
123
+ name: "idx_user_likes_news_article",
124
+ fields: [
125
+ { name: "news_article_id" },
126
+ ]
127
+ },
98
128
  {
99
129
  name: "idx_user_likes_playlist",
100
130
  fields: [
@@ -121,6 +151,22 @@ class UserLikes extends sequelize_1.Model {
121
151
  { name: "jukebox_id" },
122
152
  ]
123
153
  },
154
+ {
155
+ name: "uq_user_likes_user_merch_item",
156
+ unique: true,
157
+ fields: [
158
+ { name: "app_user_id" },
159
+ { name: "merch_item_id" },
160
+ ]
161
+ },
162
+ {
163
+ name: "uq_user_likes_user_news_article",
164
+ unique: true,
165
+ fields: [
166
+ { name: "app_user_id" },
167
+ { name: "news_article_id" },
168
+ ]
169
+ },
124
170
  {
125
171
  name: "uq_user_likes_user_playlist",
126
172
  unique: true,
@@ -1,37 +1,28 @@
1
1
  import * as Sequelize from 'sequelize';
2
2
  import { Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
- import type { GuestUser, GuestUserId } from './GuestUser';
5
4
  import type { Versus, VersusId } from './Versus';
6
5
  export interface VersusCoCreatorAttributes {
7
6
  versusId: string;
8
- appUserId?: string;
9
- guestUserId?: string;
10
- invitedEmail?: string;
11
7
  id: string;
12
8
  createdAt: Date;
13
9
  updatedAt: Date;
10
+ appUserId: string;
14
11
  }
15
12
  export type VersusCoCreatorPk = "id";
16
13
  export type VersusCoCreatorId = VersusCoCreator[VersusCoCreatorPk];
17
- export type VersusCoCreatorOptionalAttributes = "appUserId" | "guestUserId" | "invitedEmail" | "id" | "createdAt" | "updatedAt";
14
+ export type VersusCoCreatorOptionalAttributes = "id" | "createdAt" | "updatedAt";
18
15
  export type VersusCoCreatorCreationAttributes = Optional<VersusCoCreatorAttributes, VersusCoCreatorOptionalAttributes>;
19
16
  export declare class VersusCoCreator extends Model<VersusCoCreatorAttributes, VersusCoCreatorCreationAttributes> implements VersusCoCreatorAttributes {
20
17
  versusId: string;
21
- appUserId?: string;
22
- guestUserId?: string;
23
- invitedEmail?: string;
24
18
  id: string;
25
19
  createdAt: Date;
26
20
  updatedAt: Date;
21
+ appUserId: string;
27
22
  appUser: AppUser;
28
23
  getAppUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
29
24
  setAppUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
30
25
  createAppUser: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
31
- guestUser: GuestUser;
32
- getGuestUser: Sequelize.BelongsToGetAssociationMixin<GuestUser>;
33
- setGuestUser: Sequelize.BelongsToSetAssociationMixin<GuestUser, GuestUserId>;
34
- createGuestUser: Sequelize.BelongsToCreateAssociationMixin<GuestUser>;
35
26
  versu: Versus;
36
27
  getVersu: Sequelize.BelongsToGetAssociationMixin<Versus>;
37
28
  setVersu: Sequelize.BelongsToSetAssociationMixin<Versus, VersusId>;
@@ -38,29 +38,6 @@ class VersusCoCreator extends sequelize_1.Model {
38
38
  },
39
39
  field: 'versus_id'
40
40
  },
41
- appUserId: {
42
- type: sequelize_1.DataTypes.UUID,
43
- allowNull: true,
44
- references: {
45
- model: 'app_user',
46
- key: 'id'
47
- },
48
- field: 'app_user_id'
49
- },
50
- guestUserId: {
51
- type: sequelize_1.DataTypes.UUID,
52
- allowNull: true,
53
- references: {
54
- model: 'guest_user',
55
- key: 'id'
56
- },
57
- field: 'guest_user_id'
58
- },
59
- invitedEmail: {
60
- type: sequelize_1.DataTypes.TEXT,
61
- allowNull: true,
62
- field: 'invited_email'
63
- },
64
41
  id: {
65
42
  type: sequelize_1.DataTypes.UUID,
66
43
  allowNull: false,
@@ -78,6 +55,15 @@ class VersusCoCreator extends sequelize_1.Model {
78
55
  allowNull: false,
79
56
  defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
80
57
  field: 'updated_at'
58
+ },
59
+ appUserId: {
60
+ type: sequelize_1.DataTypes.UUID,
61
+ allowNull: false,
62
+ references: {
63
+ model: 'app_user',
64
+ key: 'id'
65
+ },
66
+ field: 'app_user_id'
81
67
  }
82
68
  }, {
83
69
  sequelize,
@@ -92,15 +78,17 @@ class VersusCoCreator extends sequelize_1.Model {
92
78
  ]
93
79
  },
94
80
  {
95
- name: "idx_versus_co_creator_guest_user",
81
+ name: "idx_versus_co_creator_versus",
96
82
  fields: [
97
- { name: "guest_user_id" },
83
+ { name: "versus_id" },
98
84
  ]
99
85
  },
100
86
  {
101
- name: "idx_versus_co_creator_versus",
87
+ name: "uk_versus_co_creator_versus_app_user",
88
+ unique: true,
102
89
  fields: [
103
90
  { name: "versus_id" },
91
+ { name: "app_user_id" },
104
92
  ]
105
93
  },
106
94
  {
@@ -4,7 +4,6 @@ import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { CanonAlbum, CanonAlbumId } from './CanonAlbum';
5
5
  import type { CanonArtist, CanonArtistId } from './CanonArtist';
6
6
  import type { CanonTrack, CanonTrackId } from './CanonTrack';
7
- import type { GuestUser, GuestUserId } from './GuestUser';
8
7
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
9
8
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
10
9
  import type { PlatformTrack, PlatformTrackId } from './PlatformTrack';
@@ -27,11 +26,10 @@ export interface VersusOptionAttributes {
27
26
  updatedAt: Date;
28
27
  deleted: boolean;
29
28
  appUserId?: string;
30
- guestUserId?: string;
31
29
  }
32
30
  export type VersusOptionPk = "id";
33
31
  export type VersusOptionId = VersusOption[VersusOptionPk];
34
- export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt" | "appUserId" | "guestUserId";
32
+ export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt" | "appUserId";
35
33
  export type VersusOptionCreationAttributes = Optional<VersusOptionAttributes, VersusOptionOptionalAttributes>;
36
34
  export declare class VersusOption extends Model<VersusOptionAttributes, VersusOptionCreationAttributes> implements VersusOptionAttributes {
37
35
  versusId: string;
@@ -50,7 +48,6 @@ export declare class VersusOption extends Model<VersusOptionAttributes, VersusOp
50
48
  updatedAt: Date;
51
49
  deleted: boolean;
52
50
  appUserId?: string;
53
- guestUserId?: string;
54
51
  appUser: AppUser;
55
52
  getAppUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
56
53
  setAppUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
@@ -67,10 +64,6 @@ export declare class VersusOption extends Model<VersusOptionAttributes, VersusOp
67
64
  getCanonTrack: Sequelize.BelongsToGetAssociationMixin<CanonTrack>;
68
65
  setCanonTrack: Sequelize.BelongsToSetAssociationMixin<CanonTrack, CanonTrackId>;
69
66
  createCanonTrack: Sequelize.BelongsToCreateAssociationMixin<CanonTrack>;
70
- guestUser: GuestUser;
71
- getGuestUser: Sequelize.BelongsToGetAssociationMixin<GuestUser>;
72
- setGuestUser: Sequelize.BelongsToSetAssociationMixin<GuestUser, GuestUserId>;
73
- createGuestUser: Sequelize.BelongsToCreateAssociationMixin<GuestUser>;
74
67
  platformAlbum: PlatformAlbum;
75
68
  getPlatformAlbum: Sequelize.BelongsToGetAssociationMixin<PlatformAlbum>;
76
69
  setPlatformAlbum: Sequelize.BelongsToSetAssociationMixin<PlatformAlbum, PlatformAlbumId>;
@@ -147,15 +147,6 @@ class VersusOption extends sequelize_1.Model {
147
147
  key: 'id'
148
148
  },
149
149
  field: 'app_user_id'
150
- },
151
- guestUserId: {
152
- type: sequelize_1.DataTypes.UUID,
153
- allowNull: true,
154
- references: {
155
- model: 'guest_user',
156
- key: 'id'
157
- },
158
- field: 'guest_user_id'
159
150
  }
160
151
  }, {
161
152
  sequelize,
@@ -549,10 +549,6 @@ function initModels(sequelize) {
549
549
  FeedContentType.hasMany(UserEngagementFactor, { as: "userEngagementFactors", foreignKey: "contentTypeId" });
550
550
  JukeboxQueueEntry.belongsTo(GuestUser, { as: "trackAddedGuestUser", foreignKey: "trackAddedGuestUserId" });
551
551
  GuestUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedGuestUserId" });
552
- VersusCoCreator.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId" });
553
- GuestUser.hasMany(VersusCoCreator, { as: "versusCoCreators", foreignKey: "guestUserId" });
554
- VersusOption.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId" });
555
- GuestUser.hasMany(VersusOption, { as: "versusOptions", foreignKey: "guestUserId" });
556
552
  JukeboxSession.belongsTo(JukeboxAccessType, { as: "accessType", foreignKey: "accessTypeId" });
557
553
  JukeboxAccessType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "accessTypeId" });
558
554
  JukeboxUser.belongsTo(JukeboxQueueEntry, { as: "pausedQueueEntry", foreignKey: "pausedQueueEntryId" });
@@ -593,6 +589,10 @@ function initModels(sequelize) {
593
589
  JukeboxUserType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxUserTypeId" });
594
590
  UserBookmarks.belongsTo(MerchItem, { as: "merchItem", foreignKey: "merchItemId" });
595
591
  MerchItem.hasMany(UserBookmarks, { as: "userBookmarks", foreignKey: "merchItemId" });
592
+ UserComments.belongsTo(MerchItem, { as: "merchItem", foreignKey: "merchItemId" });
593
+ MerchItem.hasMany(UserComments, { as: "userComments", foreignKey: "merchItemId" });
594
+ UserLikes.belongsTo(MerchItem, { as: "merchItem", foreignKey: "merchItemId" });
595
+ MerchItem.hasMany(UserLikes, { as: "userLikes", foreignKey: "merchItemId" });
596
596
  MerchItem.belongsTo(MerchPlatform, { as: "merchPlatform", foreignKey: "merchPlatformId" });
597
597
  MerchPlatform.hasMany(MerchItem, { as: "merchItems", foreignKey: "merchPlatformId" });
598
598
  MerchOrchestration.belongsTo(MerchPlatform, { as: "merchPlatform", foreignKey: "merchPlatformId" });
@@ -603,6 +603,10 @@ function initModels(sequelize) {
603
603
  MerchType.hasMany(MerchOrchestration, { as: "merchOrchestrations", foreignKey: "merchTypeId" });
604
604
  UserBookmarks.belongsTo(NewsArticle, { as: "newsArticle", foreignKey: "newsArticleId" });
605
605
  NewsArticle.hasMany(UserBookmarks, { as: "userBookmarks", foreignKey: "newsArticleId" });
606
+ UserComments.belongsTo(NewsArticle, { as: "newsArticle", foreignKey: "newsArticleId" });
607
+ NewsArticle.hasMany(UserComments, { as: "userComments", foreignKey: "newsArticleId" });
608
+ UserLikes.belongsTo(NewsArticle, { as: "newsArticle", foreignKey: "newsArticleId" });
609
+ NewsArticle.hasMany(UserLikes, { as: "userLikes", foreignKey: "newsArticleId" });
606
610
  NewsArticle.belongsTo(NewsPlatform, { as: "newsPlatform", foreignKey: "newsPlatformId" });
607
611
  NewsPlatform.hasMany(NewsArticle, { as: "newsArticles", foreignKey: "newsPlatformId" });
608
612
  Notification.belongsTo(NotificationType, { as: "notificationType", foreignKey: "notificationTypeId" });
@@ -3,8 +3,6 @@ import { DataTypes, Model, Optional } from 'sequelize';
3
3
  import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry';
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
5
  import type { Versus, VersusId } from './Versus';
6
- import type { VersusCoCreator, VersusCoCreatorId } from './VersusCoCreator';
7
- import type { VersusOption, VersusOptionId } from './VersusOption';
8
6
 
9
7
  export interface GuestUserAttributes {
10
8
  jukeboxSessionId?: string;
@@ -44,30 +42,6 @@ export class GuestUser extends Model<GuestUserAttributes, GuestUserCreationAttri
44
42
  hasJukeboxQueueEntry!: Sequelize.HasManyHasAssociationMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
45
43
  hasJukeboxQueueEntries!: Sequelize.HasManyHasAssociationsMixin<JukeboxQueueEntry, JukeboxQueueEntryId>;
46
44
  countJukeboxQueueEntries!: Sequelize.HasManyCountAssociationsMixin;
47
- // GuestUser hasMany VersusCoCreator via guestUserId
48
- versusCoCreators!: VersusCoCreator[];
49
- getVersusCoCreators!: Sequelize.HasManyGetAssociationsMixin<VersusCoCreator>;
50
- setVersusCoCreators!: Sequelize.HasManySetAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
51
- addVersusCoCreator!: Sequelize.HasManyAddAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
52
- addVersusCoCreators!: Sequelize.HasManyAddAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
53
- createVersusCoCreator!: Sequelize.HasManyCreateAssociationMixin<VersusCoCreator>;
54
- removeVersusCoCreator!: Sequelize.HasManyRemoveAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
55
- removeVersusCoCreators!: Sequelize.HasManyRemoveAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
56
- hasVersusCoCreator!: Sequelize.HasManyHasAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
57
- hasVersusCoCreators!: Sequelize.HasManyHasAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
58
- countVersusCoCreators!: Sequelize.HasManyCountAssociationsMixin;
59
- // GuestUser hasMany VersusOption via guestUserId
60
- versusOptions!: VersusOption[];
61
- getVersusOptions!: Sequelize.HasManyGetAssociationsMixin<VersusOption>;
62
- setVersusOptions!: Sequelize.HasManySetAssociationsMixin<VersusOption, VersusOptionId>;
63
- addVersusOption!: Sequelize.HasManyAddAssociationMixin<VersusOption, VersusOptionId>;
64
- addVersusOptions!: Sequelize.HasManyAddAssociationsMixin<VersusOption, VersusOptionId>;
65
- createVersusOption!: Sequelize.HasManyCreateAssociationMixin<VersusOption>;
66
- removeVersusOption!: Sequelize.HasManyRemoveAssociationMixin<VersusOption, VersusOptionId>;
67
- removeVersusOptions!: Sequelize.HasManyRemoveAssociationsMixin<VersusOption, VersusOptionId>;
68
- hasVersusOption!: Sequelize.HasManyHasAssociationMixin<VersusOption, VersusOptionId>;
69
- hasVersusOptions!: Sequelize.HasManyHasAssociationsMixin<VersusOption, VersusOptionId>;
70
- countVersusOptions!: Sequelize.HasManyCountAssociationsMixin;
71
45
  // GuestUser belongsTo JukeboxSession via jukeboxSessionId
72
46
  jukeboxSession!: JukeboxSession;
73
47
  getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
@@ -4,6 +4,8 @@ import type { CanonArtist, CanonArtistId } from './CanonArtist';
4
4
  import type { MerchPlatform, MerchPlatformId } from './MerchPlatform';
5
5
  import type { MerchType, MerchTypeId } from './MerchType';
6
6
  import type { UserBookmarks, UserBookmarksId } from './UserBookmarks';
7
+ import type { UserComments, UserCommentsId } from './UserComments';
8
+ import type { UserLikes, UserLikesId } from './UserLikes';
7
9
 
8
10
  export interface MerchItemAttributes {
9
11
  canonArtistId: string;
@@ -56,6 +58,30 @@ export class MerchItem extends Model<MerchItemAttributes, MerchItemCreationAttri
56
58
  hasUserBookmark!: Sequelize.HasManyHasAssociationMixin<UserBookmarks, UserBookmarksId>;
57
59
  hasUserBookmarks!: Sequelize.HasManyHasAssociationsMixin<UserBookmarks, UserBookmarksId>;
58
60
  countUserBookmarks!: Sequelize.HasManyCountAssociationsMixin;
61
+ // MerchItem hasMany UserComments via merchItemId
62
+ userComments!: UserComments[];
63
+ getUserComments!: Sequelize.HasManyGetAssociationsMixin<UserComments>;
64
+ setUserComments!: Sequelize.HasManySetAssociationsMixin<UserComments, UserCommentsId>;
65
+ addUserComment!: Sequelize.HasManyAddAssociationMixin<UserComments, UserCommentsId>;
66
+ addUserComments!: Sequelize.HasManyAddAssociationsMixin<UserComments, UserCommentsId>;
67
+ createUserComment!: Sequelize.HasManyCreateAssociationMixin<UserComments>;
68
+ removeUserComment!: Sequelize.HasManyRemoveAssociationMixin<UserComments, UserCommentsId>;
69
+ removeUserComments!: Sequelize.HasManyRemoveAssociationsMixin<UserComments, UserCommentsId>;
70
+ hasUserComment!: Sequelize.HasManyHasAssociationMixin<UserComments, UserCommentsId>;
71
+ hasUserComments!: Sequelize.HasManyHasAssociationsMixin<UserComments, UserCommentsId>;
72
+ countUserComments!: Sequelize.HasManyCountAssociationsMixin;
73
+ // MerchItem hasMany UserLikes via merchItemId
74
+ userLikes!: UserLikes[];
75
+ getUserLikes!: Sequelize.HasManyGetAssociationsMixin<UserLikes>;
76
+ setUserLikes!: Sequelize.HasManySetAssociationsMixin<UserLikes, UserLikesId>;
77
+ addUserLike!: Sequelize.HasManyAddAssociationMixin<UserLikes, UserLikesId>;
78
+ addUserLikes!: Sequelize.HasManyAddAssociationsMixin<UserLikes, UserLikesId>;
79
+ createUserLike!: Sequelize.HasManyCreateAssociationMixin<UserLikes>;
80
+ removeUserLike!: Sequelize.HasManyRemoveAssociationMixin<UserLikes, UserLikesId>;
81
+ removeUserLikes!: Sequelize.HasManyRemoveAssociationsMixin<UserLikes, UserLikesId>;
82
+ hasUserLike!: Sequelize.HasManyHasAssociationMixin<UserLikes, UserLikesId>;
83
+ hasUserLikes!: Sequelize.HasManyHasAssociationsMixin<UserLikes, UserLikesId>;
84
+ countUserLikes!: Sequelize.HasManyCountAssociationsMixin;
59
85
  // MerchItem belongsTo MerchPlatform via merchPlatformId
60
86
  merchPlatform!: MerchPlatform;
61
87
  getMerchPlatform!: Sequelize.BelongsToGetAssociationMixin<MerchPlatform>;
@@ -3,6 +3,8 @@ import { DataTypes, Model, Optional } from 'sequelize';
3
3
  import type { CanonArtist, CanonArtistId } from './CanonArtist';
4
4
  import type { NewsPlatform, NewsPlatformId } from './NewsPlatform';
5
5
  import type { UserBookmarks, UserBookmarksId } from './UserBookmarks';
6
+ import type { UserComments, UserCommentsId } from './UserComments';
7
+ import type { UserLikes, UserLikesId } from './UserLikes';
6
8
 
7
9
  export interface NewsArticleAttributes {
8
10
  id: string;
@@ -51,6 +53,30 @@ export class NewsArticle extends Model<NewsArticleAttributes, NewsArticleCreatio
51
53
  hasUserBookmark!: Sequelize.HasManyHasAssociationMixin<UserBookmarks, UserBookmarksId>;
52
54
  hasUserBookmarks!: Sequelize.HasManyHasAssociationsMixin<UserBookmarks, UserBookmarksId>;
53
55
  countUserBookmarks!: Sequelize.HasManyCountAssociationsMixin;
56
+ // NewsArticle hasMany UserComments via newsArticleId
57
+ userComments!: UserComments[];
58
+ getUserComments!: Sequelize.HasManyGetAssociationsMixin<UserComments>;
59
+ setUserComments!: Sequelize.HasManySetAssociationsMixin<UserComments, UserCommentsId>;
60
+ addUserComment!: Sequelize.HasManyAddAssociationMixin<UserComments, UserCommentsId>;
61
+ addUserComments!: Sequelize.HasManyAddAssociationsMixin<UserComments, UserCommentsId>;
62
+ createUserComment!: Sequelize.HasManyCreateAssociationMixin<UserComments>;
63
+ removeUserComment!: Sequelize.HasManyRemoveAssociationMixin<UserComments, UserCommentsId>;
64
+ removeUserComments!: Sequelize.HasManyRemoveAssociationsMixin<UserComments, UserCommentsId>;
65
+ hasUserComment!: Sequelize.HasManyHasAssociationMixin<UserComments, UserCommentsId>;
66
+ hasUserComments!: Sequelize.HasManyHasAssociationsMixin<UserComments, UserCommentsId>;
67
+ countUserComments!: Sequelize.HasManyCountAssociationsMixin;
68
+ // NewsArticle hasMany UserLikes via newsArticleId
69
+ userLikes!: UserLikes[];
70
+ getUserLikes!: Sequelize.HasManyGetAssociationsMixin<UserLikes>;
71
+ setUserLikes!: Sequelize.HasManySetAssociationsMixin<UserLikes, UserLikesId>;
72
+ addUserLike!: Sequelize.HasManyAddAssociationMixin<UserLikes, UserLikesId>;
73
+ addUserLikes!: Sequelize.HasManyAddAssociationsMixin<UserLikes, UserLikesId>;
74
+ createUserLike!: Sequelize.HasManyCreateAssociationMixin<UserLikes>;
75
+ removeUserLike!: Sequelize.HasManyRemoveAssociationMixin<UserLikes, UserLikesId>;
76
+ removeUserLikes!: Sequelize.HasManyRemoveAssociationsMixin<UserLikes, UserLikesId>;
77
+ hasUserLike!: Sequelize.HasManyHasAssociationMixin<UserLikes, UserLikesId>;
78
+ hasUserLikes!: Sequelize.HasManyHasAssociationsMixin<UserLikes, UserLikesId>;
79
+ countUserLikes!: Sequelize.HasManyCountAssociationsMixin;
54
80
  // NewsArticle belongsTo NewsPlatform via newsPlatformId
55
81
  newsPlatform!: NewsPlatform;
56
82
  getNewsPlatform!: Sequelize.BelongsToGetAssociationMixin<NewsPlatform>;
@@ -2,6 +2,8 @@ import * as Sequelize from 'sequelize';
2
2
  import { DataTypes, Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+ import type { MerchItem, MerchItemId } from './MerchItem';
6
+ import type { NewsArticle, NewsArticleId } from './NewsArticle';
5
7
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
6
8
  import type { RadioShow, RadioShowId } from './RadioShow';
7
9
  import type { UserAbuseReports, UserAbuseReportsId } from './UserAbuseReports';
@@ -21,11 +23,13 @@ export interface UserCommentsAttributes {
21
23
  moderationScore?: number;
22
24
  moderationLevel?: string;
23
25
  strippedUrls?: object;
26
+ newsArticleId?: string;
27
+ merchItemId?: string;
24
28
  }
25
29
 
26
30
  export type UserCommentsPk = "id";
27
31
  export type UserCommentsId = UserComments[UserCommentsPk];
28
- export type UserCommentsOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "replyCommentId" | "createDate" | "updateDate" | "modifiedComment" | "moderationScore" | "moderationLevel" | "strippedUrls";
32
+ export type UserCommentsOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "replyCommentId" | "createDate" | "updateDate" | "modifiedComment" | "moderationScore" | "moderationLevel" | "strippedUrls" | "newsArticleId" | "merchItemId";
29
33
  export type UserCommentsCreationAttributes = Optional<UserCommentsAttributes, UserCommentsOptionalAttributes>;
30
34
 
31
35
  export class UserComments extends Model<UserCommentsAttributes, UserCommentsCreationAttributes> implements UserCommentsAttributes {
@@ -43,6 +47,8 @@ export class UserComments extends Model<UserCommentsAttributes, UserCommentsCrea
43
47
  moderationScore?: number;
44
48
  moderationLevel?: string;
45
49
  strippedUrls?: object;
50
+ newsArticleId?: string;
51
+ merchItemId?: string;
46
52
 
47
53
  // UserComments belongsTo AppUser via appUserId
48
54
  appUser!: AppUser;
@@ -54,6 +60,16 @@ export class UserComments extends Model<UserCommentsAttributes, UserCommentsCrea
54
60
  getJukebox!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
55
61
  setJukebox!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
56
62
  createJukebox!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
63
+ // UserComments belongsTo MerchItem via merchItemId
64
+ merchItem!: MerchItem;
65
+ getMerchItem!: Sequelize.BelongsToGetAssociationMixin<MerchItem>;
66
+ setMerchItem!: Sequelize.BelongsToSetAssociationMixin<MerchItem, MerchItemId>;
67
+ createMerchItem!: Sequelize.BelongsToCreateAssociationMixin<MerchItem>;
68
+ // UserComments belongsTo NewsArticle via newsArticleId
69
+ newsArticle!: NewsArticle;
70
+ getNewsArticle!: Sequelize.BelongsToGetAssociationMixin<NewsArticle>;
71
+ setNewsArticle!: Sequelize.BelongsToSetAssociationMixin<NewsArticle, NewsArticleId>;
72
+ createNewsArticle!: Sequelize.BelongsToCreateAssociationMixin<NewsArticle>;
57
73
  // UserComments belongsTo PlatformUserPlaylist via playlistId
58
74
  playlist!: PlatformUserPlaylist;
59
75
  getPlaylist!: Sequelize.BelongsToGetAssociationMixin<PlatformUserPlaylist>;
@@ -175,6 +191,24 @@ export class UserComments extends Model<UserCommentsAttributes, UserCommentsCrea
175
191
  type: DataTypes.JSONB,
176
192
  allowNull: true,
177
193
  field: 'stripped_urls'
194
+ },
195
+ newsArticleId: {
196
+ type: DataTypes.UUID,
197
+ allowNull: true,
198
+ references: {
199
+ model: 'news_article',
200
+ key: 'id'
201
+ },
202
+ field: 'news_article_id'
203
+ },
204
+ merchItemId: {
205
+ type: DataTypes.UUID,
206
+ allowNull: true,
207
+ references: {
208
+ model: 'merch_item',
209
+ key: 'id'
210
+ },
211
+ field: 'merch_item_id'
178
212
  }
179
213
  }, {
180
214
  sequelize,
@@ -188,6 +222,18 @@ export class UserComments extends Model<UserCommentsAttributes, UserCommentsCrea
188
222
  { name: "jukebox_id" },
189
223
  ]
190
224
  },
225
+ {
226
+ name: "idx_user_comments_merch_item",
227
+ fields: [
228
+ { name: "merch_item_id" },
229
+ ]
230
+ },
231
+ {
232
+ name: "idx_user_comments_news_article",
233
+ fields: [
234
+ { name: "news_article_id" },
235
+ ]
236
+ },
191
237
  {
192
238
  name: "idx_user_comments_playlist",
193
239
  fields: [
@@ -2,6 +2,8 @@ import * as Sequelize from 'sequelize';
2
2
  import { DataTypes, Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
+ import type { MerchItem, MerchItemId } from './MerchItem';
6
+ import type { NewsArticle, NewsArticleId } from './NewsArticle';
5
7
  import type { PlatformUserPlaylist, PlatformUserPlaylistId } from './PlatformUserPlaylist';
6
8
  import type { RadioShow, RadioShowId } from './RadioShow';
7
9
 
@@ -13,11 +15,13 @@ export interface UserLikesAttributes {
13
15
  id: string;
14
16
  createDate: Date;
15
17
  updateDate: Date;
18
+ merchItemId?: string;
19
+ newsArticleId?: string;
16
20
  }
17
21
 
18
22
  export type UserLikesPk = "id";
19
23
  export type UserLikesId = UserLikes[UserLikesPk];
20
- export type UserLikesOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "createDate" | "updateDate";
24
+ export type UserLikesOptionalAttributes = "jukeboxId" | "playlistId" | "radioShowId" | "id" | "createDate" | "updateDate" | "merchItemId" | "newsArticleId";
21
25
  export type UserLikesCreationAttributes = Optional<UserLikesAttributes, UserLikesOptionalAttributes>;
22
26
 
23
27
  export class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttributes> implements UserLikesAttributes {
@@ -28,6 +32,8 @@ export class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttri
28
32
  id!: string;
29
33
  createDate!: Date;
30
34
  updateDate!: Date;
35
+ merchItemId?: string;
36
+ newsArticleId?: string;
31
37
 
32
38
  // UserLikes belongsTo AppUser via appUserId
33
39
  appUser!: AppUser;
@@ -39,6 +45,16 @@ export class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttri
39
45
  getJukebox!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
40
46
  setJukebox!: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
41
47
  createJukebox!: Sequelize.BelongsToCreateAssociationMixin<JukeboxSession>;
48
+ // UserLikes belongsTo MerchItem via merchItemId
49
+ merchItem!: MerchItem;
50
+ getMerchItem!: Sequelize.BelongsToGetAssociationMixin<MerchItem>;
51
+ setMerchItem!: Sequelize.BelongsToSetAssociationMixin<MerchItem, MerchItemId>;
52
+ createMerchItem!: Sequelize.BelongsToCreateAssociationMixin<MerchItem>;
53
+ // UserLikes belongsTo NewsArticle via newsArticleId
54
+ newsArticle!: NewsArticle;
55
+ getNewsArticle!: Sequelize.BelongsToGetAssociationMixin<NewsArticle>;
56
+ setNewsArticle!: Sequelize.BelongsToSetAssociationMixin<NewsArticle, NewsArticleId>;
57
+ createNewsArticle!: Sequelize.BelongsToCreateAssociationMixin<NewsArticle>;
42
58
  // UserLikes belongsTo PlatformUserPlaylist via playlistId
43
59
  playlist!: PlatformUserPlaylist;
44
60
  getPlaylist!: Sequelize.BelongsToGetAssociationMixin<PlatformUserPlaylist>;
@@ -105,6 +121,24 @@ export class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttri
105
121
  allowNull: false,
106
122
  defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
107
123
  field: 'update_date'
124
+ },
125
+ merchItemId: {
126
+ type: DataTypes.UUID,
127
+ allowNull: true,
128
+ references: {
129
+ model: 'merch_item',
130
+ key: 'id'
131
+ },
132
+ field: 'merch_item_id'
133
+ },
134
+ newsArticleId: {
135
+ type: DataTypes.UUID,
136
+ allowNull: true,
137
+ references: {
138
+ model: 'news_article',
139
+ key: 'id'
140
+ },
141
+ field: 'news_article_id'
108
142
  }
109
143
  }, {
110
144
  sequelize,
@@ -118,6 +152,18 @@ export class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttri
118
152
  { name: "jukebox_id" },
119
153
  ]
120
154
  },
155
+ {
156
+ name: "idx_user_likes_merch_item",
157
+ fields: [
158
+ { name: "merch_item_id" },
159
+ ]
160
+ },
161
+ {
162
+ name: "idx_user_likes_news_article",
163
+ fields: [
164
+ { name: "news_article_id" },
165
+ ]
166
+ },
121
167
  {
122
168
  name: "idx_user_likes_playlist",
123
169
  fields: [
@@ -144,6 +190,22 @@ export class UserLikes extends Model<UserLikesAttributes, UserLikesCreationAttri
144
190
  { name: "jukebox_id" },
145
191
  ]
146
192
  },
193
+ {
194
+ name: "uq_user_likes_user_merch_item",
195
+ unique: true,
196
+ fields: [
197
+ { name: "app_user_id" },
198
+ { name: "merch_item_id" },
199
+ ]
200
+ },
201
+ {
202
+ name: "uq_user_likes_user_news_article",
203
+ unique: true,
204
+ fields: [
205
+ { name: "app_user_id" },
206
+ { name: "news_article_id" },
207
+ ]
208
+ },
147
209
  {
148
210
  name: "uq_user_likes_user_playlist",
149
211
  unique: true,
@@ -1,43 +1,33 @@
1
1
  import * as Sequelize from 'sequelize';
2
2
  import { DataTypes, Model, Optional } from 'sequelize';
3
3
  import type { AppUser, AppUserId } from './AppUser';
4
- import type { GuestUser, GuestUserId } from './GuestUser';
5
4
  import type { Versus, VersusId } from './Versus';
6
5
 
7
6
  export interface VersusCoCreatorAttributes {
8
7
  versusId: string;
9
- appUserId?: string;
10
- guestUserId?: string;
11
- invitedEmail?: string;
12
8
  id: string;
13
9
  createdAt: Date;
14
10
  updatedAt: Date;
11
+ appUserId: string;
15
12
  }
16
13
 
17
14
  export type VersusCoCreatorPk = "id";
18
15
  export type VersusCoCreatorId = VersusCoCreator[VersusCoCreatorPk];
19
- export type VersusCoCreatorOptionalAttributes = "appUserId" | "guestUserId" | "invitedEmail" | "id" | "createdAt" | "updatedAt";
16
+ export type VersusCoCreatorOptionalAttributes = "id" | "createdAt" | "updatedAt";
20
17
  export type VersusCoCreatorCreationAttributes = Optional<VersusCoCreatorAttributes, VersusCoCreatorOptionalAttributes>;
21
18
 
22
19
  export class VersusCoCreator extends Model<VersusCoCreatorAttributes, VersusCoCreatorCreationAttributes> implements VersusCoCreatorAttributes {
23
20
  versusId!: string;
24
- appUserId?: string;
25
- guestUserId?: string;
26
- invitedEmail?: string;
27
21
  id!: string;
28
22
  createdAt!: Date;
29
23
  updatedAt!: Date;
24
+ appUserId!: string;
30
25
 
31
26
  // VersusCoCreator belongsTo AppUser via appUserId
32
27
  appUser!: AppUser;
33
28
  getAppUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
34
29
  setAppUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
35
30
  createAppUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
36
- // VersusCoCreator belongsTo GuestUser via guestUserId
37
- guestUser!: GuestUser;
38
- getGuestUser!: Sequelize.BelongsToGetAssociationMixin<GuestUser>;
39
- setGuestUser!: Sequelize.BelongsToSetAssociationMixin<GuestUser, GuestUserId>;
40
- createGuestUser!: Sequelize.BelongsToCreateAssociationMixin<GuestUser>;
41
31
  // VersusCoCreator belongsTo Versus via versusId
42
32
  versu!: Versus;
43
33
  getVersu!: Sequelize.BelongsToGetAssociationMixin<Versus>;
@@ -55,29 +45,6 @@ export class VersusCoCreator extends Model<VersusCoCreatorAttributes, VersusCoCr
55
45
  },
56
46
  field: 'versus_id'
57
47
  },
58
- appUserId: {
59
- type: DataTypes.UUID,
60
- allowNull: true,
61
- references: {
62
- model: 'app_user',
63
- key: 'id'
64
- },
65
- field: 'app_user_id'
66
- },
67
- guestUserId: {
68
- type: DataTypes.UUID,
69
- allowNull: true,
70
- references: {
71
- model: 'guest_user',
72
- key: 'id'
73
- },
74
- field: 'guest_user_id'
75
- },
76
- invitedEmail: {
77
- type: DataTypes.TEXT,
78
- allowNull: true,
79
- field: 'invited_email'
80
- },
81
48
  id: {
82
49
  type: DataTypes.UUID,
83
50
  allowNull: false,
@@ -95,6 +62,15 @@ export class VersusCoCreator extends Model<VersusCoCreatorAttributes, VersusCoCr
95
62
  allowNull: false,
96
63
  defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
97
64
  field: 'updated_at'
65
+ },
66
+ appUserId: {
67
+ type: DataTypes.UUID,
68
+ allowNull: false,
69
+ references: {
70
+ model: 'app_user',
71
+ key: 'id'
72
+ },
73
+ field: 'app_user_id'
98
74
  }
99
75
  }, {
100
76
  sequelize,
@@ -109,15 +85,17 @@ export class VersusCoCreator extends Model<VersusCoCreatorAttributes, VersusCoCr
109
85
  ]
110
86
  },
111
87
  {
112
- name: "idx_versus_co_creator_guest_user",
88
+ name: "idx_versus_co_creator_versus",
113
89
  fields: [
114
- { name: "guest_user_id" },
90
+ { name: "versus_id" },
115
91
  ]
116
92
  },
117
93
  {
118
- name: "idx_versus_co_creator_versus",
94
+ name: "uk_versus_co_creator_versus_app_user",
95
+ unique: true,
119
96
  fields: [
120
97
  { name: "versus_id" },
98
+ { name: "app_user_id" },
121
99
  ]
122
100
  },
123
101
  {
@@ -4,7 +4,6 @@ import type { AppUser, AppUserId } from './AppUser';
4
4
  import type { CanonAlbum, CanonAlbumId } from './CanonAlbum';
5
5
  import type { CanonArtist, CanonArtistId } from './CanonArtist';
6
6
  import type { CanonTrack, CanonTrackId } from './CanonTrack';
7
- import type { GuestUser, GuestUserId } from './GuestUser';
8
7
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
9
8
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
10
9
  import type { PlatformTrack, PlatformTrackId } from './PlatformTrack';
@@ -28,12 +27,11 @@ export interface VersusOptionAttributes {
28
27
  updatedAt: Date;
29
28
  deleted: boolean;
30
29
  appUserId?: string;
31
- guestUserId?: string;
32
30
  }
33
31
 
34
32
  export type VersusOptionPk = "id";
35
33
  export type VersusOptionId = VersusOption[VersusOptionPk];
36
- export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt" | "appUserId" | "guestUserId";
34
+ export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt" | "appUserId";
37
35
  export type VersusOptionCreationAttributes = Optional<VersusOptionAttributes, VersusOptionOptionalAttributes>;
38
36
 
39
37
  export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCreationAttributes> implements VersusOptionAttributes {
@@ -53,7 +51,6 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
53
51
  updatedAt!: Date;
54
52
  deleted!: boolean;
55
53
  appUserId?: string;
56
- guestUserId?: string;
57
54
 
58
55
  // VersusOption belongsTo AppUser via appUserId
59
56
  appUser!: AppUser;
@@ -75,11 +72,6 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
75
72
  getCanonTrack!: Sequelize.BelongsToGetAssociationMixin<CanonTrack>;
76
73
  setCanonTrack!: Sequelize.BelongsToSetAssociationMixin<CanonTrack, CanonTrackId>;
77
74
  createCanonTrack!: Sequelize.BelongsToCreateAssociationMixin<CanonTrack>;
78
- // VersusOption belongsTo GuestUser via guestUserId
79
- guestUser!: GuestUser;
80
- getGuestUser!: Sequelize.BelongsToGetAssociationMixin<GuestUser>;
81
- setGuestUser!: Sequelize.BelongsToSetAssociationMixin<GuestUser, GuestUserId>;
82
- createGuestUser!: Sequelize.BelongsToCreateAssociationMixin<GuestUser>;
83
75
  // VersusOption belongsTo PlatformAlbum via platformAlbumId
84
76
  platformAlbum!: PlatformAlbum;
85
77
  getPlatformAlbum!: Sequelize.BelongsToGetAssociationMixin<PlatformAlbum>;
@@ -226,15 +218,6 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
226
218
  key: 'id'
227
219
  },
228
220
  field: 'app_user_id'
229
- },
230
- guestUserId: {
231
- type: DataTypes.UUID,
232
- allowNull: true,
233
- references: {
234
- model: 'guest_user',
235
- key: 'id'
236
- },
237
- field: 'guest_user_id'
238
221
  }
239
222
  }, {
240
223
  sequelize,
@@ -894,10 +894,6 @@ export function initModels(sequelize: Sequelize) {
894
894
  FeedContentType.hasMany(UserEngagementFactor, { as: "userEngagementFactors", foreignKey: "contentTypeId"});
895
895
  JukeboxQueueEntry.belongsTo(GuestUser, { as: "trackAddedGuestUser", foreignKey: "trackAddedGuestUserId"});
896
896
  GuestUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedGuestUserId"});
897
- VersusCoCreator.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId"});
898
- GuestUser.hasMany(VersusCoCreator, { as: "versusCoCreators", foreignKey: "guestUserId"});
899
- VersusOption.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId"});
900
- GuestUser.hasMany(VersusOption, { as: "versusOptions", foreignKey: "guestUserId"});
901
897
  JukeboxSession.belongsTo(JukeboxAccessType, { as: "accessType", foreignKey: "accessTypeId"});
902
898
  JukeboxAccessType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "accessTypeId"});
903
899
  JukeboxUser.belongsTo(JukeboxQueueEntry, { as: "pausedQueueEntry", foreignKey: "pausedQueueEntryId"});
@@ -938,6 +934,10 @@ export function initModels(sequelize: Sequelize) {
938
934
  JukeboxUserType.hasMany(JukeboxUser, { as: "jukeboxUsers", foreignKey: "jukeboxUserTypeId"});
939
935
  UserBookmarks.belongsTo(MerchItem, { as: "merchItem", foreignKey: "merchItemId"});
940
936
  MerchItem.hasMany(UserBookmarks, { as: "userBookmarks", foreignKey: "merchItemId"});
937
+ UserComments.belongsTo(MerchItem, { as: "merchItem", foreignKey: "merchItemId"});
938
+ MerchItem.hasMany(UserComments, { as: "userComments", foreignKey: "merchItemId"});
939
+ UserLikes.belongsTo(MerchItem, { as: "merchItem", foreignKey: "merchItemId"});
940
+ MerchItem.hasMany(UserLikes, { as: "userLikes", foreignKey: "merchItemId"});
941
941
  MerchItem.belongsTo(MerchPlatform, { as: "merchPlatform", foreignKey: "merchPlatformId"});
942
942
  MerchPlatform.hasMany(MerchItem, { as: "merchItems", foreignKey: "merchPlatformId"});
943
943
  MerchOrchestration.belongsTo(MerchPlatform, { as: "merchPlatform", foreignKey: "merchPlatformId"});
@@ -948,6 +948,10 @@ export function initModels(sequelize: Sequelize) {
948
948
  MerchType.hasMany(MerchOrchestration, { as: "merchOrchestrations", foreignKey: "merchTypeId"});
949
949
  UserBookmarks.belongsTo(NewsArticle, { as: "newsArticle", foreignKey: "newsArticleId"});
950
950
  NewsArticle.hasMany(UserBookmarks, { as: "userBookmarks", foreignKey: "newsArticleId"});
951
+ UserComments.belongsTo(NewsArticle, { as: "newsArticle", foreignKey: "newsArticleId"});
952
+ NewsArticle.hasMany(UserComments, { as: "userComments", foreignKey: "newsArticleId"});
953
+ UserLikes.belongsTo(NewsArticle, { as: "newsArticle", foreignKey: "newsArticleId"});
954
+ NewsArticle.hasMany(UserLikes, { as: "userLikes", foreignKey: "newsArticleId"});
951
955
  NewsArticle.belongsTo(NewsPlatform, { as: "newsPlatform", foreignKey: "newsPlatformId"});
952
956
  NewsPlatform.hasMany(NewsArticle, { as: "newsArticles", foreignKey: "newsPlatformId"});
953
957
  Notification.belongsTo(NotificationType, { as: "notificationType", foreignKey: "notificationTypeId"});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earbug/db-models",
3
- "version": "0.0.51",
3
+ "version": "0.0.53",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {