@earbug/db-models 0.0.43 → 0.0.45

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
@@ -23,6 +23,7 @@ import type { UserLikes, UserLikesId } from './UserLikes';
23
23
  import type { UserMessages, UserMessagesId } from './UserMessages';
24
24
  import type { Versus, VersusId } from './Versus';
25
25
  import type { VersusCoCreator, VersusCoCreatorId } from './VersusCoCreator';
26
+ import type { VersusOption, VersusOptionId } from './VersusOption';
26
27
  export interface AppUserAttributes {
27
28
  email: string;
28
29
  firstName: string;
@@ -333,6 +334,17 @@ export declare class AppUser extends Model<AppUserAttributes, AppUserCreationAtt
333
334
  hasVersusCoCreator: Sequelize.HasManyHasAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
334
335
  hasVersusCoCreators: Sequelize.HasManyHasAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
335
336
  countVersusCoCreators: Sequelize.HasManyCountAssociationsMixin;
337
+ versusOptions: VersusOption[];
338
+ getVersusOptions: Sequelize.HasManyGetAssociationsMixin<VersusOption>;
339
+ setVersusOptions: Sequelize.HasManySetAssociationsMixin<VersusOption, VersusOptionId>;
340
+ addVersusOption: Sequelize.HasManyAddAssociationMixin<VersusOption, VersusOptionId>;
341
+ addVersusOptions: Sequelize.HasManyAddAssociationsMixin<VersusOption, VersusOptionId>;
342
+ createVersusOption: Sequelize.HasManyCreateAssociationMixin<VersusOption>;
343
+ removeVersusOption: Sequelize.HasManyRemoveAssociationMixin<VersusOption, VersusOptionId>;
344
+ removeVersusOptions: Sequelize.HasManyRemoveAssociationsMixin<VersusOption, VersusOptionId>;
345
+ hasVersusOption: Sequelize.HasManyHasAssociationMixin<VersusOption, VersusOptionId>;
346
+ hasVersusOptions: Sequelize.HasManyHasAssociationsMixin<VersusOption, VersusOptionId>;
347
+ countVersusOptions: Sequelize.HasManyCountAssociationsMixin;
336
348
  state: State;
337
349
  getState: Sequelize.BelongsToGetAssociationMixin<State>;
338
350
  setState: Sequelize.BelongsToSetAssociationMixin<State, StateId>;
@@ -28,13 +28,14 @@ export interface CanonArtistAttributes {
28
28
  lastImageHarvestAttempt?: Date;
29
29
  merchHarvestDay?: number;
30
30
  newsHarvestDay?: number;
31
- harvestPopularity?: number;
32
31
  lastGenreHarvestAttempt?: Date;
33
32
  genreHarvestCount: number;
33
+ popularityRank?: number;
34
+ popularityScore: number;
34
35
  }
35
36
  export type CanonArtistPk = "id";
36
37
  export type CanonArtistId = CanonArtist[CanonArtistPk];
37
- export type CanonArtistOptionalAttributes = "description" | "id" | "createDate" | "updateDate" | "hasThumbnailPhoto" | "images" | "lastImageHarvestAttempt" | "merchHarvestDay" | "newsHarvestDay" | "harvestPopularity" | "lastGenreHarvestAttempt" | "genreHarvestCount";
38
+ export type CanonArtistOptionalAttributes = "description" | "id" | "createDate" | "updateDate" | "hasThumbnailPhoto" | "images" | "lastImageHarvestAttempt" | "merchHarvestDay" | "newsHarvestDay" | "lastGenreHarvestAttempt" | "genreHarvestCount" | "popularityRank" | "popularityScore";
38
39
  export type CanonArtistCreationAttributes = Optional<CanonArtistAttributes, CanonArtistOptionalAttributes>;
39
40
  export declare class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreationAttributes> implements CanonArtistAttributes {
40
41
  name: string;
@@ -49,9 +50,10 @@ export declare class CanonArtist extends Model<CanonArtistAttributes, CanonArtis
49
50
  lastImageHarvestAttempt?: Date;
50
51
  merchHarvestDay?: number;
51
52
  newsHarvestDay?: number;
52
- harvestPopularity?: number;
53
53
  lastGenreHarvestAttempt?: Date;
54
54
  genreHarvestCount: number;
55
+ popularityRank?: number;
56
+ popularityScore: number;
55
57
  canonArtistAlbumRelations: CanonArtistAlbumRelation[];
56
58
  getCanonArtistAlbumRelations: Sequelize.HasManyGetAssociationsMixin<CanonArtistAlbumRelation>;
57
59
  setCanonArtistAlbumRelations: Sequelize.HasManySetAssociationsMixin<CanonArtistAlbumRelation, CanonArtistAlbumRelationId>;
@@ -91,11 +91,6 @@ class CanonArtist extends sequelize_1.Model {
91
91
  allowNull: true,
92
92
  field: 'news_harvest_day'
93
93
  },
94
- harvestPopularity: {
95
- type: sequelize_1.DataTypes.INTEGER,
96
- allowNull: true,
97
- field: 'harvest_popularity'
98
- },
99
94
  lastGenreHarvestAttempt: {
100
95
  type: sequelize_1.DataTypes.DATE,
101
96
  allowNull: true,
@@ -106,6 +101,17 @@ class CanonArtist extends sequelize_1.Model {
106
101
  allowNull: false,
107
102
  defaultValue: 0,
108
103
  field: 'genre_harvest_count'
104
+ },
105
+ popularityRank: {
106
+ type: sequelize_1.DataTypes.INTEGER,
107
+ allowNull: true,
108
+ field: 'popularity_rank'
109
+ },
110
+ popularityScore: {
111
+ type: sequelize_1.DataTypes.INTEGER,
112
+ allowNull: false,
113
+ defaultValue: 0,
114
+ field: 'popularity_score'
109
115
  }
110
116
  }, {
111
117
  sequelize,
@@ -4,6 +4,7 @@ import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
5
  import type { Versus, VersusId } from './Versus';
6
6
  import type { VersusCoCreator, VersusCoCreatorId } from './VersusCoCreator';
7
+ import type { VersusOption, VersusOptionId } from './VersusOption';
7
8
  export interface GuestUserAttributes {
8
9
  jukeboxSessionId?: string;
9
10
  firstName: string;
@@ -49,6 +50,17 @@ export declare class GuestUser extends Model<GuestUserAttributes, GuestUserCreat
49
50
  hasVersusCoCreator: Sequelize.HasManyHasAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
50
51
  hasVersusCoCreators: Sequelize.HasManyHasAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
51
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;
52
64
  jukeboxSession: JukeboxSession;
53
65
  getJukeboxSession: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
54
66
  setJukeboxSession: Sequelize.BelongsToSetAssociationMixin<JukeboxSession, JukeboxSessionId>;
@@ -1,8 +1,10 @@
1
1
  import * as Sequelize from 'sequelize';
2
2
  import { Model, Optional } from 'sequelize';
3
+ import type { AppUser, AppUserId } from './AppUser';
3
4
  import type { CanonAlbum, CanonAlbumId } from './CanonAlbum';
4
5
  import type { CanonArtist, CanonArtistId } from './CanonArtist';
5
6
  import type { CanonTrack, CanonTrackId } from './CanonTrack';
7
+ import type { GuestUser, GuestUserId } from './GuestUser';
6
8
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
7
9
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
8
10
  import type { PlatformTrack, PlatformTrackId } from './PlatformTrack';
@@ -23,10 +25,13 @@ export interface VersusOptionAttributes {
23
25
  id: string;
24
26
  createdAt: Date;
25
27
  updatedAt: Date;
28
+ deleted: boolean;
29
+ appUserId?: string;
30
+ guestUserId?: string;
26
31
  }
27
32
  export type VersusOptionPk = "id";
28
33
  export type VersusOptionId = VersusOption[VersusOptionPk];
29
- export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt";
34
+ export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt" | "appUserId" | "guestUserId";
30
35
  export type VersusOptionCreationAttributes = Optional<VersusOptionAttributes, VersusOptionOptionalAttributes>;
31
36
  export declare class VersusOption extends Model<VersusOptionAttributes, VersusOptionCreationAttributes> implements VersusOptionAttributes {
32
37
  versusId: string;
@@ -43,6 +48,13 @@ export declare class VersusOption extends Model<VersusOptionAttributes, VersusOp
43
48
  id: string;
44
49
  createdAt: Date;
45
50
  updatedAt: Date;
51
+ deleted: boolean;
52
+ appUserId?: string;
53
+ guestUserId?: string;
54
+ appUser: AppUser;
55
+ getAppUser: Sequelize.BelongsToGetAssociationMixin<AppUser>;
56
+ setAppUser: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
57
+ createAppUser: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
46
58
  canonAlbum: CanonAlbum;
47
59
  getCanonAlbum: Sequelize.BelongsToGetAssociationMixin<CanonAlbum>;
48
60
  setCanonAlbum: Sequelize.BelongsToSetAssociationMixin<CanonAlbum, CanonAlbumId>;
@@ -55,6 +67,10 @@ export declare class VersusOption extends Model<VersusOptionAttributes, VersusOp
55
67
  getCanonTrack: Sequelize.BelongsToGetAssociationMixin<CanonTrack>;
56
68
  setCanonTrack: Sequelize.BelongsToSetAssociationMixin<CanonTrack, CanonTrackId>;
57
69
  createCanonTrack: Sequelize.BelongsToCreateAssociationMixin<CanonTrack>;
70
+ guestUser: GuestUser;
71
+ getGuestUser: Sequelize.BelongsToGetAssociationMixin<GuestUser>;
72
+ setGuestUser: Sequelize.BelongsToSetAssociationMixin<GuestUser, GuestUserId>;
73
+ createGuestUser: Sequelize.BelongsToCreateAssociationMixin<GuestUser>;
58
74
  platformAlbum: PlatformAlbum;
59
75
  getPlatformAlbum: Sequelize.BelongsToGetAssociationMixin<PlatformAlbum>;
60
76
  setPlatformAlbum: Sequelize.BelongsToSetAssociationMixin<PlatformAlbum, PlatformAlbumId>;
@@ -133,6 +133,29 @@ class VersusOption extends sequelize_1.Model {
133
133
  allowNull: false,
134
134
  defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
135
135
  field: 'updated_at'
136
+ },
137
+ deleted: {
138
+ type: sequelize_1.DataTypes.BOOLEAN,
139
+ allowNull: false,
140
+ defaultValue: false
141
+ },
142
+ appUserId: {
143
+ type: sequelize_1.DataTypes.UUID,
144
+ allowNull: true,
145
+ references: {
146
+ model: 'app_user',
147
+ key: 'id'
148
+ },
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'
136
159
  }
137
160
  }, {
138
161
  sequelize,
@@ -146,6 +169,13 @@ class VersusOption extends sequelize_1.Model {
146
169
  { name: "versus_id" },
147
170
  ]
148
171
  },
172
+ {
173
+ name: "idx_versus_option_versus_deleted",
174
+ fields: [
175
+ { name: "versus_id" },
176
+ { name: "deleted" },
177
+ ]
178
+ },
149
179
  {
150
180
  name: "idx_versus_option_versus_sort",
151
181
  fields: [
@@ -460,6 +460,8 @@ function initModels(sequelize) {
460
460
  AppUser.hasMany(Versus, { as: "versus", foreignKey: "creatorUserId" });
461
461
  VersusCoCreator.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
462
462
  AppUser.hasMany(VersusCoCreator, { as: "versusCoCreators", foreignKey: "appUserId" });
463
+ VersusOption.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId" });
464
+ AppUser.hasMany(VersusOption, { as: "versusOptions", foreignKey: "appUserId" });
463
465
  CanonAlbumExternalReferenceRelation.belongsTo(CanonAlbum, { as: "canonAlbum", foreignKey: "canonAlbumId" });
464
466
  CanonAlbum.hasMany(CanonAlbumExternalReferenceRelation, { as: "canonAlbumExternalReferenceRelations", foreignKey: "canonAlbumId" });
465
467
  CanonAlbumImageHarvested.belongsTo(CanonAlbum, { as: "canonAlbum", foreignKey: "canonAlbumId" });
@@ -554,6 +556,8 @@ function initModels(sequelize) {
554
556
  GuestUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedGuestUserId" });
555
557
  VersusCoCreator.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId" });
556
558
  GuestUser.hasMany(VersusCoCreator, { as: "versusCoCreators", foreignKey: "guestUserId" });
559
+ VersusOption.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId" });
560
+ GuestUser.hasMany(VersusOption, { as: "versusOptions", foreignKey: "guestUserId" });
557
561
  JukeboxSession.belongsTo(JukeboxAccessType, { as: "accessType", foreignKey: "accessTypeId" });
558
562
  JukeboxAccessType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "accessTypeId" });
559
563
  JukeboxUser.belongsTo(JukeboxQueueEntry, { as: "pausedQueueEntry", foreignKey: "pausedQueueEntryId" });
package/models/AppUser.ts CHANGED
@@ -23,6 +23,7 @@ import type { UserLikes, UserLikesId } from './UserLikes';
23
23
  import type { UserMessages, UserMessagesId } from './UserMessages';
24
24
  import type { Versus, VersusId } from './Versus';
25
25
  import type { VersusCoCreator, VersusCoCreatorId } from './VersusCoCreator';
26
+ import type { VersusOption, VersusOptionId } from './VersusOption';
26
27
 
27
28
  export interface AppUserAttributes {
28
29
  email: string;
@@ -363,6 +364,18 @@ export class AppUser extends Model<AppUserAttributes, AppUserCreationAttributes>
363
364
  hasVersusCoCreator!: Sequelize.HasManyHasAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
364
365
  hasVersusCoCreators!: Sequelize.HasManyHasAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
365
366
  countVersusCoCreators!: Sequelize.HasManyCountAssociationsMixin;
367
+ // AppUser hasMany VersusOption via appUserId
368
+ versusOptions!: VersusOption[];
369
+ getVersusOptions!: Sequelize.HasManyGetAssociationsMixin<VersusOption>;
370
+ setVersusOptions!: Sequelize.HasManySetAssociationsMixin<VersusOption, VersusOptionId>;
371
+ addVersusOption!: Sequelize.HasManyAddAssociationMixin<VersusOption, VersusOptionId>;
372
+ addVersusOptions!: Sequelize.HasManyAddAssociationsMixin<VersusOption, VersusOptionId>;
373
+ createVersusOption!: Sequelize.HasManyCreateAssociationMixin<VersusOption>;
374
+ removeVersusOption!: Sequelize.HasManyRemoveAssociationMixin<VersusOption, VersusOptionId>;
375
+ removeVersusOptions!: Sequelize.HasManyRemoveAssociationsMixin<VersusOption, VersusOptionId>;
376
+ hasVersusOption!: Sequelize.HasManyHasAssociationMixin<VersusOption, VersusOptionId>;
377
+ hasVersusOptions!: Sequelize.HasManyHasAssociationsMixin<VersusOption, VersusOptionId>;
378
+ countVersusOptions!: Sequelize.HasManyCountAssociationsMixin;
366
379
  // AppUser belongsTo State via stateId
367
380
  state!: State;
368
381
  getState!: Sequelize.BelongsToGetAssociationMixin<State>;
@@ -29,14 +29,15 @@ export interface CanonArtistAttributes {
29
29
  lastImageHarvestAttempt?: Date;
30
30
  merchHarvestDay?: number;
31
31
  newsHarvestDay?: number;
32
- harvestPopularity?: number;
33
32
  lastGenreHarvestAttempt?: Date;
34
33
  genreHarvestCount: number;
34
+ popularityRank?: number;
35
+ popularityScore: number;
35
36
  }
36
37
 
37
38
  export type CanonArtistPk = "id";
38
39
  export type CanonArtistId = CanonArtist[CanonArtistPk];
39
- export type CanonArtistOptionalAttributes = "description" | "id" | "createDate" | "updateDate" | "hasThumbnailPhoto" | "images" | "lastImageHarvestAttempt" | "merchHarvestDay" | "newsHarvestDay" | "harvestPopularity" | "lastGenreHarvestAttempt" | "genreHarvestCount";
40
+ export type CanonArtistOptionalAttributes = "description" | "id" | "createDate" | "updateDate" | "hasThumbnailPhoto" | "images" | "lastImageHarvestAttempt" | "merchHarvestDay" | "newsHarvestDay" | "lastGenreHarvestAttempt" | "genreHarvestCount" | "popularityRank" | "popularityScore";
40
41
  export type CanonArtistCreationAttributes = Optional<CanonArtistAttributes, CanonArtistOptionalAttributes>;
41
42
 
42
43
  export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreationAttributes> implements CanonArtistAttributes {
@@ -52,9 +53,10 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
52
53
  lastImageHarvestAttempt?: Date;
53
54
  merchHarvestDay?: number;
54
55
  newsHarvestDay?: number;
55
- harvestPopularity?: number;
56
56
  lastGenreHarvestAttempt?: Date;
57
57
  genreHarvestCount!: number;
58
+ popularityRank?: number;
59
+ popularityScore!: number;
58
60
 
59
61
  // CanonArtist hasMany CanonArtistAlbumRelation via canonArtistId
60
62
  canonArtistAlbumRelations!: CanonArtistAlbumRelation[];
@@ -301,11 +303,6 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
301
303
  allowNull: true,
302
304
  field: 'news_harvest_day'
303
305
  },
304
- harvestPopularity: {
305
- type: DataTypes.INTEGER,
306
- allowNull: true,
307
- field: 'harvest_popularity'
308
- },
309
306
  lastGenreHarvestAttempt: {
310
307
  type: DataTypes.DATE,
311
308
  allowNull: true,
@@ -316,6 +313,17 @@ export class CanonArtist extends Model<CanonArtistAttributes, CanonArtistCreatio
316
313
  allowNull: false,
317
314
  defaultValue: 0,
318
315
  field: 'genre_harvest_count'
316
+ },
317
+ popularityRank: {
318
+ type: DataTypes.INTEGER,
319
+ allowNull: true,
320
+ field: 'popularity_rank'
321
+ },
322
+ popularityScore: {
323
+ type: DataTypes.INTEGER,
324
+ allowNull: false,
325
+ defaultValue: 0,
326
+ field: 'popularity_score'
319
327
  }
320
328
  }, {
321
329
  sequelize,
@@ -4,6 +4,7 @@ import type { JukeboxQueueEntry, JukeboxQueueEntryId } from './JukeboxQueueEntry
4
4
  import type { JukeboxSession, JukeboxSessionId } from './JukeboxSession';
5
5
  import type { Versus, VersusId } from './Versus';
6
6
  import type { VersusCoCreator, VersusCoCreatorId } from './VersusCoCreator';
7
+ import type { VersusOption, VersusOptionId } from './VersusOption';
7
8
 
8
9
  export interface GuestUserAttributes {
9
10
  jukeboxSessionId?: string;
@@ -55,6 +56,18 @@ export class GuestUser extends Model<GuestUserAttributes, GuestUserCreationAttri
55
56
  hasVersusCoCreator!: Sequelize.HasManyHasAssociationMixin<VersusCoCreator, VersusCoCreatorId>;
56
57
  hasVersusCoCreators!: Sequelize.HasManyHasAssociationsMixin<VersusCoCreator, VersusCoCreatorId>;
57
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;
58
71
  // GuestUser belongsTo JukeboxSession via jukeboxSessionId
59
72
  jukeboxSession!: JukeboxSession;
60
73
  getJukeboxSession!: Sequelize.BelongsToGetAssociationMixin<JukeboxSession>;
@@ -1,8 +1,10 @@
1
1
  import * as Sequelize from 'sequelize';
2
2
  import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { AppUser, AppUserId } from './AppUser';
3
4
  import type { CanonAlbum, CanonAlbumId } from './CanonAlbum';
4
5
  import type { CanonArtist, CanonArtistId } from './CanonArtist';
5
6
  import type { CanonTrack, CanonTrackId } from './CanonTrack';
7
+ import type { GuestUser, GuestUserId } from './GuestUser';
6
8
  import type { PlatformAlbum, PlatformAlbumId } from './PlatformAlbum';
7
9
  import type { PlatformArtist, PlatformArtistId } from './PlatformArtist';
8
10
  import type { PlatformTrack, PlatformTrackId } from './PlatformTrack';
@@ -24,11 +26,14 @@ export interface VersusOptionAttributes {
24
26
  id: string;
25
27
  createdAt: Date;
26
28
  updatedAt: Date;
29
+ deleted: boolean;
30
+ appUserId?: string;
31
+ guestUserId?: string;
27
32
  }
28
33
 
29
34
  export type VersusOptionPk = "id";
30
35
  export type VersusOptionId = VersusOption[VersusOptionPk];
31
- export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt";
36
+ export type VersusOptionOptionalAttributes = "canonTrackId" | "platformTrackId" | "canonAlbumId" | "platformAlbumId" | "canonArtistId" | "platformArtistId" | "voteScore" | "resultsScore" | "id" | "createdAt" | "updatedAt" | "appUserId" | "guestUserId";
32
37
  export type VersusOptionCreationAttributes = Optional<VersusOptionAttributes, VersusOptionOptionalAttributes>;
33
38
 
34
39
  export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCreationAttributes> implements VersusOptionAttributes {
@@ -46,7 +51,15 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
46
51
  id!: string;
47
52
  createdAt!: Date;
48
53
  updatedAt!: Date;
54
+ deleted!: boolean;
55
+ appUserId?: string;
56
+ guestUserId?: string;
49
57
 
58
+ // VersusOption belongsTo AppUser via appUserId
59
+ appUser!: AppUser;
60
+ getAppUser!: Sequelize.BelongsToGetAssociationMixin<AppUser>;
61
+ setAppUser!: Sequelize.BelongsToSetAssociationMixin<AppUser, AppUserId>;
62
+ createAppUser!: Sequelize.BelongsToCreateAssociationMixin<AppUser>;
50
63
  // VersusOption belongsTo CanonAlbum via canonAlbumId
51
64
  canonAlbum!: CanonAlbum;
52
65
  getCanonAlbum!: Sequelize.BelongsToGetAssociationMixin<CanonAlbum>;
@@ -62,6 +75,11 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
62
75
  getCanonTrack!: Sequelize.BelongsToGetAssociationMixin<CanonTrack>;
63
76
  setCanonTrack!: Sequelize.BelongsToSetAssociationMixin<CanonTrack, CanonTrackId>;
64
77
  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>;
65
83
  // VersusOption belongsTo PlatformAlbum via platformAlbumId
66
84
  platformAlbum!: PlatformAlbum;
67
85
  getPlatformAlbum!: Sequelize.BelongsToGetAssociationMixin<PlatformAlbum>;
@@ -194,6 +212,29 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
194
212
  allowNull: false,
195
213
  defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
196
214
  field: 'updated_at'
215
+ },
216
+ deleted: {
217
+ type: DataTypes.BOOLEAN,
218
+ allowNull: false,
219
+ defaultValue: false
220
+ },
221
+ appUserId: {
222
+ type: DataTypes.UUID,
223
+ allowNull: true,
224
+ references: {
225
+ model: 'app_user',
226
+ key: 'id'
227
+ },
228
+ 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'
197
238
  }
198
239
  }, {
199
240
  sequelize,
@@ -207,6 +248,13 @@ export class VersusOption extends Model<VersusOptionAttributes, VersusOptionCrea
207
248
  { name: "versus_id" },
208
249
  ]
209
250
  },
251
+ {
252
+ name: "idx_versus_option_versus_deleted",
253
+ fields: [
254
+ { name: "versus_id" },
255
+ { name: "deleted" },
256
+ ]
257
+ },
210
258
  {
211
259
  name: "idx_versus_option_versus_sort",
212
260
  fields: [
@@ -808,6 +808,8 @@ export function initModels(sequelize: Sequelize) {
808
808
  AppUser.hasMany(Versus, { as: "versus", foreignKey: "creatorUserId"});
809
809
  VersusCoCreator.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId"});
810
810
  AppUser.hasMany(VersusCoCreator, { as: "versusCoCreators", foreignKey: "appUserId"});
811
+ VersusOption.belongsTo(AppUser, { as: "appUser", foreignKey: "appUserId"});
812
+ AppUser.hasMany(VersusOption, { as: "versusOptions", foreignKey: "appUserId"});
811
813
  CanonAlbumExternalReferenceRelation.belongsTo(CanonAlbum, { as: "canonAlbum", foreignKey: "canonAlbumId"});
812
814
  CanonAlbum.hasMany(CanonAlbumExternalReferenceRelation, { as: "canonAlbumExternalReferenceRelations", foreignKey: "canonAlbumId"});
813
815
  CanonAlbumImageHarvested.belongsTo(CanonAlbum, { as: "canonAlbum", foreignKey: "canonAlbumId"});
@@ -902,6 +904,8 @@ export function initModels(sequelize: Sequelize) {
902
904
  GuestUser.hasMany(JukeboxQueueEntry, { as: "jukeboxQueueEntries", foreignKey: "trackAddedGuestUserId"});
903
905
  VersusCoCreator.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId"});
904
906
  GuestUser.hasMany(VersusCoCreator, { as: "versusCoCreators", foreignKey: "guestUserId"});
907
+ VersusOption.belongsTo(GuestUser, { as: "guestUser", foreignKey: "guestUserId"});
908
+ GuestUser.hasMany(VersusOption, { as: "versusOptions", foreignKey: "guestUserId"});
905
909
  JukeboxSession.belongsTo(JukeboxAccessType, { as: "accessType", foreignKey: "accessTypeId"});
906
910
  JukeboxAccessType.hasMany(JukeboxSession, { as: "jukeboxSessions", foreignKey: "accessTypeId"});
907
911
  JukeboxUser.belongsTo(JukeboxQueueEntry, { as: "pausedQueueEntry", foreignKey: "pausedQueueEntryId"});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@earbug/db-models",
3
- "version": "0.0.43",
3
+ "version": "0.0.45",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {