@earbug/db-models 0.0.62 → 0.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/.dockerignore +10 -0
  2. package/.github/workflows/publish.yaml +303 -0
  3. package/.nvmrc +1 -0
  4. package/Dockerfile.generate +19 -0
  5. package/model_options.json +3 -0
  6. package/models/AccessControlPreference.ts +53 -0
  7. package/models/AffinityRelationshipType.ts +96 -0
  8. package/models/AffinityTier.ts +131 -0
  9. package/models/AppUser.ts +577 -0
  10. package/models/AppUserDevice.ts +101 -0
  11. package/models/AppUserDeviceClassicBackup20260906.ts +66 -0
  12. package/models/AppUserFollowRelation.ts +128 -0
  13. package/models/AppUserPlatformRelation.ts +150 -0
  14. package/models/CanonAlbum.ts +229 -0
  15. package/models/CanonAlbumExternalReferenceRelation.ts +92 -0
  16. package/models/CanonAlbumGenreRelation.ts +86 -0
  17. package/models/CanonAlbumLabelRelation.ts +86 -0
  18. package/models/CanonAlbumTrackRelation.ts +92 -0
  19. package/models/CanonArtist.ts +356 -0
  20. package/models/CanonArtistAlbumRelation.ts +92 -0
  21. package/models/CanonArtistExternalReferenceRelation.ts +92 -0
  22. package/models/CanonArtistGenreRelation.ts +86 -0
  23. package/models/CanonArtistMemberRelation.ts +86 -0
  24. package/models/CanonArtistTrackRelation.ts +92 -0
  25. package/models/CanonGenre.ts +273 -0
  26. package/models/CanonGenreExternalReferenceRelation.ts +92 -0
  27. package/models/CanonLabel.ts +129 -0
  28. package/models/CanonLabelExternalReferenceRelation.ts +92 -0
  29. package/models/CanonMember.ts +130 -0
  30. package/models/CanonMemberExternalReferenceRelation.ts +99 -0
  31. package/models/CanonToPlatformAlbumRelation.ts +92 -0
  32. package/models/CanonToPlatformArtistRelation.ts +92 -0
  33. package/models/CanonToPlatformGenreRelation.ts +86 -0
  34. package/models/CanonToPlatformTrackRelation.ts +92 -0
  35. package/models/CanonTrack.ts +232 -0
  36. package/models/ConfigParam.ts +62 -0
  37. package/models/ExternalReference.ts +201 -0
  38. package/models/FeedConfig.ts +65 -0
  39. package/models/FeedContentType.ts +124 -0
  40. package/models/GuestUser.ts +137 -0
  41. package/models/JukeboxAccessType.ts +60 -0
  42. package/models/JukeboxCanonGenreRelation.ts +108 -0
  43. package/models/JukeboxInvite.ts +125 -0
  44. package/models/JukeboxQueueEntry.ts +247 -0
  45. package/models/JukeboxQueueMode.ts +60 -0
  46. package/models/JukeboxSession.ts +334 -0
  47. package/models/JukeboxSessionArtistAffinity.ts +136 -0
  48. package/models/JukeboxSessionGenreAffinity.ts +136 -0
  49. package/models/JukeboxStatus.ts +58 -0
  50. package/models/JukeboxTerminationCondition.ts +60 -0
  51. package/models/JukeboxType.ts +60 -0
  52. package/models/JukeboxUser.ts +182 -0
  53. package/models/JukeboxUserType.ts +58 -0
  54. package/models/KnexMigrations.ts +60 -0
  55. package/models/KnexMigrationsLock.ts +48 -0
  56. package/models/MerchItem.ts +198 -0
  57. package/models/MerchOrchestration.ts +130 -0
  58. package/models/MerchPlatform.ts +95 -0
  59. package/models/MerchType.ts +89 -0
  60. package/models/MetricsDaily.ts +79 -0
  61. package/models/MetricsEvent.ts +124 -0
  62. package/models/NewsArticle.ts +177 -0
  63. package/models/NewsPlatform.ts +76 -0
  64. package/models/NewsSite.ts +75 -0
  65. package/models/Notification.ts +214 -0
  66. package/models/NotificationType.ts +66 -0
  67. package/models/PauseStatusType.ts +58 -0
  68. package/models/Platform.ts +189 -0
  69. package/models/PlatformAlbum.ts +398 -0
  70. package/models/PlatformAlbumGenreRelation.ts +86 -0
  71. package/models/PlatformAlbumTrackRelation.ts +92 -0
  72. package/models/PlatformArtist.ts +358 -0
  73. package/models/PlatformArtistAlbumRelation.ts +92 -0
  74. package/models/PlatformArtistGenreRelation.ts +86 -0
  75. package/models/PlatformArtistTrackRelation.ts +92 -0
  76. package/models/PlatformGenre.ts +194 -0
  77. package/models/PlatformTrack.ts +339 -0
  78. package/models/PlatformTrackGenreRelation.ts +86 -0
  79. package/models/PlatformUserAlbum.ts +152 -0
  80. package/models/PlatformUserAlbumTrack.ts +138 -0
  81. package/models/PlatformUserPlaylist.ts +260 -0
  82. package/models/PlatformUserPlaylistArtistAffinity.ts +136 -0
  83. package/models/PlatformUserPlaylistGenreAffinity.ts +136 -0
  84. package/models/PlatformUserPlaylistTrack.ts +162 -0
  85. package/models/PlaybackStatus.ts +47 -0
  86. package/models/PlaybackStatusType.ts +58 -0
  87. package/models/RadioShow.ts +209 -0
  88. package/models/RadioShowGenres.ts +107 -0
  89. package/models/RadioShowMedia.ts +181 -0
  90. package/models/RadioShowPlacement.ts +115 -0
  91. package/models/RadioShowPublishRequests.ts +86 -0
  92. package/models/State.ts +86 -0
  93. package/models/TrackDeletionReason.ts +58 -0
  94. package/models/UnmatchedAlbum.ts +66 -0
  95. package/models/UnmatchedArtist.ts +81 -0
  96. package/models/UserAbuseReports.ts +232 -0
  97. package/models/UserAffinity.ts +117 -0
  98. package/models/UserArtistAffinity.ts +136 -0
  99. package/models/UserBookmarks.ts +235 -0
  100. package/models/UserComments.ts +271 -0
  101. package/models/UserContacts.ts +155 -0
  102. package/models/UserEngagementFactor.ts +109 -0
  103. package/models/UserGenreAffinity.ts +136 -0
  104. package/models/UserLikes.ts +235 -0
  105. package/models/UserMessages.ts +189 -0
  106. package/models/Versus.ts +438 -0
  107. package/models/VersusAccessType.ts +66 -0
  108. package/models/VersusCoCreator.ts +111 -0
  109. package/models/VersusCreatorScope.ts +66 -0
  110. package/models/VersusEndMode.ts +66 -0
  111. package/models/VersusEndTimerDuration.ts +81 -0
  112. package/models/VersusEndVoteThreshold.ts +67 -0
  113. package/models/VersusEntityKind.ts +79 -0
  114. package/models/VersusOption.ts +258 -0
  115. package/models/VersusPublishIssue.ts +146 -0
  116. package/models/VersusQuestion.ts +123 -0
  117. package/models/VersusQuestionVariableType.ts +66 -0
  118. package/models/VersusVote.ts +99 -0
  119. package/models/VersusVotingListType.ts +66 -0
  120. package/models/VersusVotingMode.ts +66 -0
  121. package/models/index.ts +3 -0
  122. package/models/init-models.ts +1259 -0
  123. package/models/initDb.ts +72 -0
  124. package/models/rdsCaBundle.ts +5 -0
  125. package/package.json +2 -5
  126. package/scripts/generate-and-upload.mjs +123 -0
  127. package/scripts/update-rds-ca-bundle.mjs +44 -0
  128. package/tsconfig.json +52 -0
@@ -0,0 +1,130 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { CanonArtist, CanonArtistId } from './CanonArtist';
4
+ import type { MerchPlatform, MerchPlatformId } from './MerchPlatform';
5
+ import type { MerchType, MerchTypeId } from './MerchType';
6
+
7
+ export interface MerchOrchestrationAttributes {
8
+ id: string;
9
+ canonArtistId: string;
10
+ merchTypeId: string;
11
+ merchPlatformId: string;
12
+ errorMessage?: string;
13
+ lastHarvestDate?: Date;
14
+ createDate: Date;
15
+ updateDate: Date;
16
+ }
17
+
18
+ export type MerchOrchestrationPk = "id";
19
+ export type MerchOrchestrationId = MerchOrchestration[MerchOrchestrationPk];
20
+ export type MerchOrchestrationOptionalAttributes = "id" | "errorMessage" | "lastHarvestDate" | "createDate" | "updateDate";
21
+ export type MerchOrchestrationCreationAttributes = Optional<MerchOrchestrationAttributes, MerchOrchestrationOptionalAttributes>;
22
+
23
+ export class MerchOrchestration extends Model<MerchOrchestrationAttributes, MerchOrchestrationCreationAttributes> implements MerchOrchestrationAttributes {
24
+ id!: string;
25
+ canonArtistId!: string;
26
+ merchTypeId!: string;
27
+ merchPlatformId!: string;
28
+ errorMessage?: string;
29
+ lastHarvestDate?: Date;
30
+ createDate!: Date;
31
+ updateDate!: Date;
32
+
33
+ // MerchOrchestration belongsTo CanonArtist via canonArtistId
34
+ canonArtist!: CanonArtist;
35
+ getCanonArtist!: Sequelize.BelongsToGetAssociationMixin<CanonArtist>;
36
+ setCanonArtist!: Sequelize.BelongsToSetAssociationMixin<CanonArtist, CanonArtistId>;
37
+ createCanonArtist!: Sequelize.BelongsToCreateAssociationMixin<CanonArtist>;
38
+ // MerchOrchestration belongsTo MerchPlatform via merchPlatformId
39
+ merchPlatform!: MerchPlatform;
40
+ getMerchPlatform!: Sequelize.BelongsToGetAssociationMixin<MerchPlatform>;
41
+ setMerchPlatform!: Sequelize.BelongsToSetAssociationMixin<MerchPlatform, MerchPlatformId>;
42
+ createMerchPlatform!: Sequelize.BelongsToCreateAssociationMixin<MerchPlatform>;
43
+ // MerchOrchestration belongsTo MerchType via merchTypeId
44
+ merchType!: MerchType;
45
+ getMerchType!: Sequelize.BelongsToGetAssociationMixin<MerchType>;
46
+ setMerchType!: Sequelize.BelongsToSetAssociationMixin<MerchType, MerchTypeId>;
47
+ createMerchType!: Sequelize.BelongsToCreateAssociationMixin<MerchType>;
48
+
49
+ static initModel(sequelize: Sequelize.Sequelize): typeof MerchOrchestration {
50
+ return MerchOrchestration.init({
51
+ id: {
52
+ type: DataTypes.UUID,
53
+ allowNull: false,
54
+ defaultValue: DataTypes.UUIDV4,
55
+ primaryKey: true
56
+ },
57
+ canonArtistId: {
58
+ type: DataTypes.UUID,
59
+ allowNull: false,
60
+ references: {
61
+ model: 'canon_artist',
62
+ key: 'id'
63
+ },
64
+ field: 'canon_artist_id'
65
+ },
66
+ merchTypeId: {
67
+ type: DataTypes.UUID,
68
+ allowNull: false,
69
+ references: {
70
+ model: 'merch_type',
71
+ key: 'id'
72
+ },
73
+ field: 'merch_type_id'
74
+ },
75
+ merchPlatformId: {
76
+ type: DataTypes.UUID,
77
+ allowNull: false,
78
+ references: {
79
+ model: 'merch_platform',
80
+ key: 'id'
81
+ },
82
+ field: 'merch_platform_id'
83
+ },
84
+ errorMessage: {
85
+ type: DataTypes.TEXT,
86
+ allowNull: true,
87
+ field: 'error_message'
88
+ },
89
+ lastHarvestDate: {
90
+ type: DataTypes.DATE,
91
+ allowNull: true,
92
+ field: 'last_harvest_date'
93
+ },
94
+ createDate: {
95
+ type: DataTypes.DATE,
96
+ allowNull: false,
97
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
98
+ field: 'create_date'
99
+ },
100
+ updateDate: {
101
+ type: DataTypes.DATE,
102
+ allowNull: false,
103
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
104
+ field: 'update_date'
105
+ }
106
+ }, {
107
+ sequelize,
108
+ tableName: 'merch_orchestration',
109
+ schema: 'eb',
110
+ timestamps: false,
111
+ indexes: [
112
+ {
113
+ name: "idx_merch_orchestration_composite",
114
+ fields: [
115
+ { name: "canon_artist_id" },
116
+ { name: "merch_type_id" },
117
+ { name: "merch_platform_id" },
118
+ ]
119
+ },
120
+ {
121
+ name: "merch_orchestration_pkey",
122
+ unique: true,
123
+ fields: [
124
+ { name: "id" },
125
+ ]
126
+ },
127
+ ]
128
+ });
129
+ }
130
+ }
@@ -0,0 +1,95 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { MerchItem, MerchItemId } from './MerchItem';
4
+ import type { MerchOrchestration, MerchOrchestrationId } from './MerchOrchestration';
5
+
6
+ export interface MerchPlatformAttributes {
7
+ id: string;
8
+ name: string;
9
+ host: string;
10
+ createDate: Date;
11
+ updateDate: Date;
12
+ }
13
+
14
+ export type MerchPlatformPk = "id";
15
+ export type MerchPlatformId = MerchPlatform[MerchPlatformPk];
16
+ export type MerchPlatformOptionalAttributes = "id" | "createDate" | "updateDate";
17
+ export type MerchPlatformCreationAttributes = Optional<MerchPlatformAttributes, MerchPlatformOptionalAttributes>;
18
+
19
+ export class MerchPlatform extends Model<MerchPlatformAttributes, MerchPlatformCreationAttributes> implements MerchPlatformAttributes {
20
+ id!: string;
21
+ name!: string;
22
+ host!: string;
23
+ createDate!: Date;
24
+ updateDate!: Date;
25
+
26
+ // MerchPlatform hasMany MerchItem via merchPlatformId
27
+ merchItems!: MerchItem[];
28
+ getMerchItems!: Sequelize.HasManyGetAssociationsMixin<MerchItem>;
29
+ setMerchItems!: Sequelize.HasManySetAssociationsMixin<MerchItem, MerchItemId>;
30
+ addMerchItem!: Sequelize.HasManyAddAssociationMixin<MerchItem, MerchItemId>;
31
+ addMerchItems!: Sequelize.HasManyAddAssociationsMixin<MerchItem, MerchItemId>;
32
+ createMerchItem!: Sequelize.HasManyCreateAssociationMixin<MerchItem>;
33
+ removeMerchItem!: Sequelize.HasManyRemoveAssociationMixin<MerchItem, MerchItemId>;
34
+ removeMerchItems!: Sequelize.HasManyRemoveAssociationsMixin<MerchItem, MerchItemId>;
35
+ hasMerchItem!: Sequelize.HasManyHasAssociationMixin<MerchItem, MerchItemId>;
36
+ hasMerchItems!: Sequelize.HasManyHasAssociationsMixin<MerchItem, MerchItemId>;
37
+ countMerchItems!: Sequelize.HasManyCountAssociationsMixin;
38
+ // MerchPlatform hasMany MerchOrchestration via merchPlatformId
39
+ merchOrchestrations!: MerchOrchestration[];
40
+ getMerchOrchestrations!: Sequelize.HasManyGetAssociationsMixin<MerchOrchestration>;
41
+ setMerchOrchestrations!: Sequelize.HasManySetAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
42
+ addMerchOrchestration!: Sequelize.HasManyAddAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
43
+ addMerchOrchestrations!: Sequelize.HasManyAddAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
44
+ createMerchOrchestration!: Sequelize.HasManyCreateAssociationMixin<MerchOrchestration>;
45
+ removeMerchOrchestration!: Sequelize.HasManyRemoveAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
46
+ removeMerchOrchestrations!: Sequelize.HasManyRemoveAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
47
+ hasMerchOrchestration!: Sequelize.HasManyHasAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
48
+ hasMerchOrchestrations!: Sequelize.HasManyHasAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
49
+ countMerchOrchestrations!: Sequelize.HasManyCountAssociationsMixin;
50
+
51
+ static initModel(sequelize: Sequelize.Sequelize): typeof MerchPlatform {
52
+ return MerchPlatform.init({
53
+ id: {
54
+ type: DataTypes.UUID,
55
+ allowNull: false,
56
+ defaultValue: DataTypes.UUIDV4,
57
+ primaryKey: true
58
+ },
59
+ name: {
60
+ type: DataTypes.TEXT,
61
+ allowNull: false
62
+ },
63
+ host: {
64
+ type: DataTypes.TEXT,
65
+ allowNull: false
66
+ },
67
+ createDate: {
68
+ type: DataTypes.DATE,
69
+ allowNull: false,
70
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
71
+ field: 'create_date'
72
+ },
73
+ updateDate: {
74
+ type: DataTypes.DATE,
75
+ allowNull: false,
76
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
77
+ field: 'update_date'
78
+ }
79
+ }, {
80
+ sequelize,
81
+ tableName: 'merch_platform',
82
+ schema: 'eb',
83
+ timestamps: false,
84
+ indexes: [
85
+ {
86
+ name: "merch_platform_pkey",
87
+ unique: true,
88
+ fields: [
89
+ { name: "id" },
90
+ ]
91
+ },
92
+ ]
93
+ });
94
+ }
95
+ }
@@ -0,0 +1,89 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { MerchItem, MerchItemId } from './MerchItem';
4
+ import type { MerchOrchestration, MerchOrchestrationId } from './MerchOrchestration';
5
+
6
+ export interface MerchTypeAttributes {
7
+ id: string;
8
+ description: string;
9
+ createDate: Date;
10
+ updateDate: Date;
11
+ }
12
+
13
+ export type MerchTypePk = "id";
14
+ export type MerchTypeId = MerchType[MerchTypePk];
15
+ export type MerchTypeOptionalAttributes = "id" | "createDate" | "updateDate";
16
+ export type MerchTypeCreationAttributes = Optional<MerchTypeAttributes, MerchTypeOptionalAttributes>;
17
+
18
+ export class MerchType extends Model<MerchTypeAttributes, MerchTypeCreationAttributes> implements MerchTypeAttributes {
19
+ id!: string;
20
+ description!: string;
21
+ createDate!: Date;
22
+ updateDate!: Date;
23
+
24
+ // MerchType hasMany MerchItem via merchTypeId
25
+ merchItems!: MerchItem[];
26
+ getMerchItems!: Sequelize.HasManyGetAssociationsMixin<MerchItem>;
27
+ setMerchItems!: Sequelize.HasManySetAssociationsMixin<MerchItem, MerchItemId>;
28
+ addMerchItem!: Sequelize.HasManyAddAssociationMixin<MerchItem, MerchItemId>;
29
+ addMerchItems!: Sequelize.HasManyAddAssociationsMixin<MerchItem, MerchItemId>;
30
+ createMerchItem!: Sequelize.HasManyCreateAssociationMixin<MerchItem>;
31
+ removeMerchItem!: Sequelize.HasManyRemoveAssociationMixin<MerchItem, MerchItemId>;
32
+ removeMerchItems!: Sequelize.HasManyRemoveAssociationsMixin<MerchItem, MerchItemId>;
33
+ hasMerchItem!: Sequelize.HasManyHasAssociationMixin<MerchItem, MerchItemId>;
34
+ hasMerchItems!: Sequelize.HasManyHasAssociationsMixin<MerchItem, MerchItemId>;
35
+ countMerchItems!: Sequelize.HasManyCountAssociationsMixin;
36
+ // MerchType hasMany MerchOrchestration via merchTypeId
37
+ merchOrchestrations!: MerchOrchestration[];
38
+ getMerchOrchestrations!: Sequelize.HasManyGetAssociationsMixin<MerchOrchestration>;
39
+ setMerchOrchestrations!: Sequelize.HasManySetAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
40
+ addMerchOrchestration!: Sequelize.HasManyAddAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
41
+ addMerchOrchestrations!: Sequelize.HasManyAddAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
42
+ createMerchOrchestration!: Sequelize.HasManyCreateAssociationMixin<MerchOrchestration>;
43
+ removeMerchOrchestration!: Sequelize.HasManyRemoveAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
44
+ removeMerchOrchestrations!: Sequelize.HasManyRemoveAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
45
+ hasMerchOrchestration!: Sequelize.HasManyHasAssociationMixin<MerchOrchestration, MerchOrchestrationId>;
46
+ hasMerchOrchestrations!: Sequelize.HasManyHasAssociationsMixin<MerchOrchestration, MerchOrchestrationId>;
47
+ countMerchOrchestrations!: Sequelize.HasManyCountAssociationsMixin;
48
+
49
+ static initModel(sequelize: Sequelize.Sequelize): typeof MerchType {
50
+ return MerchType.init({
51
+ id: {
52
+ type: DataTypes.UUID,
53
+ allowNull: false,
54
+ defaultValue: DataTypes.UUIDV4,
55
+ primaryKey: true
56
+ },
57
+ description: {
58
+ type: DataTypes.TEXT,
59
+ allowNull: false
60
+ },
61
+ createDate: {
62
+ type: DataTypes.DATE,
63
+ allowNull: false,
64
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
65
+ field: 'create_date'
66
+ },
67
+ updateDate: {
68
+ type: DataTypes.DATE,
69
+ allowNull: false,
70
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
71
+ field: 'update_date'
72
+ }
73
+ }, {
74
+ sequelize,
75
+ tableName: 'merch_type',
76
+ schema: 'eb',
77
+ timestamps: false,
78
+ indexes: [
79
+ {
80
+ name: "merch_type_pkey",
81
+ unique: true,
82
+ fields: [
83
+ { name: "id" },
84
+ ]
85
+ },
86
+ ]
87
+ });
88
+ }
89
+ }
@@ -0,0 +1,79 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+
4
+ export interface MetricsDailyAttributes {
5
+ day?: string;
6
+ eventType: string;
7
+ createdAt: Date;
8
+ updatedAt: Date;
9
+ metrics?: object;
10
+ }
11
+
12
+ export type MetricsDailyOptionalAttributes = "day" | "createdAt" | "updatedAt" | "metrics";
13
+ export type MetricsDailyCreationAttributes = Optional<MetricsDailyAttributes, MetricsDailyOptionalAttributes>;
14
+
15
+ export class MetricsDaily extends Model<MetricsDailyAttributes, MetricsDailyCreationAttributes> implements MetricsDailyAttributes {
16
+ day?: string;
17
+ eventType!: string;
18
+ createdAt!: Date;
19
+ updatedAt!: Date;
20
+ metrics?: object;
21
+
22
+
23
+ static initModel(sequelize: Sequelize.Sequelize): typeof MetricsDaily {
24
+ return MetricsDaily.init({
25
+ day: {
26
+ type: DataTypes.DATEONLY,
27
+ allowNull: true
28
+ },
29
+ eventType: {
30
+ type: DataTypes.TEXT,
31
+ allowNull: false,
32
+ field: 'event_type'
33
+ },
34
+ createdAt: {
35
+ type: DataTypes.DATE,
36
+ allowNull: false,
37
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
38
+ field: 'created_at'
39
+ },
40
+ updatedAt: {
41
+ type: DataTypes.DATE,
42
+ allowNull: false,
43
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
44
+ field: 'updated_at'
45
+ },
46
+ metrics: {
47
+ type: DataTypes.JSONB,
48
+ allowNull: true
49
+ }
50
+ }, {
51
+ sequelize,
52
+ tableName: 'metrics_daily',
53
+ schema: 'eb',
54
+ timestamps: false,
55
+ indexes: [
56
+ {
57
+ name: "metrics_daily_day_event_type_unique",
58
+ unique: true,
59
+ fields: [
60
+ { name: "day" },
61
+ { name: "event_type" },
62
+ ]
63
+ },
64
+ {
65
+ name: "metrics_daily_event_type_index",
66
+ fields: [
67
+ { name: "event_type" },
68
+ ]
69
+ },
70
+ {
71
+ name: "metricsdaily_day_idx",
72
+ fields: [
73
+ { name: "day" },
74
+ ]
75
+ },
76
+ ]
77
+ });
78
+ }
79
+ }
@@ -0,0 +1,124 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+
4
+ export interface MetricsEventAttributes {
5
+ eventType: string;
6
+ appUserId: string;
7
+ sessionId: string;
8
+ devicePlatformId: number;
9
+ createdAt: Date;
10
+ meta?: object;
11
+ objectId?: string;
12
+ id: string;
13
+ }
14
+
15
+ export type MetricsEventPk = "id";
16
+ export type MetricsEventId = MetricsEvent[MetricsEventPk];
17
+ export type MetricsEventOptionalAttributes = "createdAt" | "meta" | "objectId" | "id";
18
+ export type MetricsEventCreationAttributes = Optional<MetricsEventAttributes, MetricsEventOptionalAttributes>;
19
+
20
+ export class MetricsEvent extends Model<MetricsEventAttributes, MetricsEventCreationAttributes> implements MetricsEventAttributes {
21
+ eventType!: string;
22
+ appUserId!: string;
23
+ sessionId!: string;
24
+ devicePlatformId!: number;
25
+ createdAt!: Date;
26
+ meta?: object;
27
+ objectId?: string;
28
+ id!: string;
29
+
30
+
31
+ static initModel(sequelize: Sequelize.Sequelize): typeof MetricsEvent {
32
+ return MetricsEvent.init({
33
+ eventType: {
34
+ type: DataTypes.TEXT,
35
+ allowNull: false,
36
+ field: 'event_type'
37
+ },
38
+ appUserId: {
39
+ type: DataTypes.UUID,
40
+ allowNull: false,
41
+ field: 'app_user_id'
42
+ },
43
+ sessionId: {
44
+ type: DataTypes.TEXT,
45
+ allowNull: false,
46
+ field: 'session_id'
47
+ },
48
+ devicePlatformId: {
49
+ type: DataTypes.SMALLINT,
50
+ allowNull: false,
51
+ field: 'device_platform_id'
52
+ },
53
+ createdAt: {
54
+ type: DataTypes.DATE,
55
+ allowNull: false,
56
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
57
+ field: 'created_at'
58
+ },
59
+ meta: {
60
+ type: DataTypes.JSONB,
61
+ allowNull: true
62
+ },
63
+ objectId: {
64
+ type: DataTypes.UUID,
65
+ allowNull: true,
66
+ field: 'object_id'
67
+ },
68
+ id: {
69
+ type: DataTypes.UUID,
70
+ allowNull: false,
71
+ defaultValue: Sequelize.Sequelize.fn('uuid_generate_v1'),
72
+ primaryKey: true
73
+ }
74
+ }, {
75
+ sequelize,
76
+ tableName: 'metrics_event',
77
+ schema: 'eb',
78
+ timestamps: false,
79
+ indexes: [
80
+ {
81
+ name: "metrics_created_idx",
82
+ fields: [
83
+ { name: "created_at" },
84
+ ]
85
+ },
86
+ {
87
+ name: "metrics_dev_plat_idx",
88
+ fields: [
89
+ { name: "device_platform_id" },
90
+ ]
91
+ },
92
+ {
93
+ name: "metrics_object_idx",
94
+ fields: [
95
+ { name: "object_id" },
96
+ ]
97
+ },
98
+ {
99
+ name: "metrics_session_idx",
100
+ fields: [
101
+ { name: "session_id" },
102
+ ]
103
+ },
104
+ {
105
+ name: "metrics_status_idx",
106
+ fields: [
107
+ ]
108
+ },
109
+ {
110
+ name: "metrics_type_idx",
111
+ fields: [
112
+ { name: "event_type" },
113
+ ]
114
+ },
115
+ {
116
+ name: "metrics_user_idx",
117
+ fields: [
118
+ { name: "app_user_id" },
119
+ ]
120
+ },
121
+ ]
122
+ });
123
+ }
124
+ }
@@ -0,0 +1,177 @@
1
+ import * as Sequelize from 'sequelize';
2
+ import { DataTypes, Model, Optional } from 'sequelize';
3
+ import type { CanonArtist, CanonArtistId } from './CanonArtist';
4
+ import type { NewsPlatform, NewsPlatformId } from './NewsPlatform';
5
+ import type { UserBookmarks, UserBookmarksId } from './UserBookmarks';
6
+ import type { UserComments, UserCommentsId } from './UserComments';
7
+ import type { UserLikes, UserLikesId } from './UserLikes';
8
+
9
+ export interface NewsArticleAttributes {
10
+ id: string;
11
+ canonArtistId: string;
12
+ newsPlatformId: string;
13
+ title: string;
14
+ description: string;
15
+ articleUrl: string;
16
+ photoUrl: string;
17
+ articlePublishDate: Date;
18
+ createDate: Date;
19
+ updateDate: Date;
20
+ }
21
+
22
+ export type NewsArticlePk = "id";
23
+ export type NewsArticleId = NewsArticle[NewsArticlePk];
24
+ export type NewsArticleOptionalAttributes = "id" | "articlePublishDate" | "createDate" | "updateDate";
25
+ export type NewsArticleCreationAttributes = Optional<NewsArticleAttributes, NewsArticleOptionalAttributes>;
26
+
27
+ export class NewsArticle extends Model<NewsArticleAttributes, NewsArticleCreationAttributes> implements NewsArticleAttributes {
28
+ id!: string;
29
+ canonArtistId!: string;
30
+ newsPlatformId!: string;
31
+ title!: string;
32
+ description!: string;
33
+ articleUrl!: string;
34
+ photoUrl!: string;
35
+ articlePublishDate!: Date;
36
+ createDate!: Date;
37
+ updateDate!: Date;
38
+
39
+ // NewsArticle belongsTo CanonArtist via canonArtistId
40
+ canonArtist!: CanonArtist;
41
+ getCanonArtist!: Sequelize.BelongsToGetAssociationMixin<CanonArtist>;
42
+ setCanonArtist!: Sequelize.BelongsToSetAssociationMixin<CanonArtist, CanonArtistId>;
43
+ createCanonArtist!: Sequelize.BelongsToCreateAssociationMixin<CanonArtist>;
44
+ // NewsArticle hasMany UserBookmarks via newsArticleId
45
+ userBookmarks!: UserBookmarks[];
46
+ getUserBookmarks!: Sequelize.HasManyGetAssociationsMixin<UserBookmarks>;
47
+ setUserBookmarks!: Sequelize.HasManySetAssociationsMixin<UserBookmarks, UserBookmarksId>;
48
+ addUserBookmark!: Sequelize.HasManyAddAssociationMixin<UserBookmarks, UserBookmarksId>;
49
+ addUserBookmarks!: Sequelize.HasManyAddAssociationsMixin<UserBookmarks, UserBookmarksId>;
50
+ createUserBookmark!: Sequelize.HasManyCreateAssociationMixin<UserBookmarks>;
51
+ removeUserBookmark!: Sequelize.HasManyRemoveAssociationMixin<UserBookmarks, UserBookmarksId>;
52
+ removeUserBookmarks!: Sequelize.HasManyRemoveAssociationsMixin<UserBookmarks, UserBookmarksId>;
53
+ hasUserBookmark!: Sequelize.HasManyHasAssociationMixin<UserBookmarks, UserBookmarksId>;
54
+ hasUserBookmarks!: Sequelize.HasManyHasAssociationsMixin<UserBookmarks, UserBookmarksId>;
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;
80
+ // NewsArticle belongsTo NewsPlatform via newsPlatformId
81
+ newsPlatform!: NewsPlatform;
82
+ getNewsPlatform!: Sequelize.BelongsToGetAssociationMixin<NewsPlatform>;
83
+ setNewsPlatform!: Sequelize.BelongsToSetAssociationMixin<NewsPlatform, NewsPlatformId>;
84
+ createNewsPlatform!: Sequelize.BelongsToCreateAssociationMixin<NewsPlatform>;
85
+
86
+ static initModel(sequelize: Sequelize.Sequelize): typeof NewsArticle {
87
+ return NewsArticle.init({
88
+ id: {
89
+ type: DataTypes.UUID,
90
+ allowNull: false,
91
+ defaultValue: DataTypes.UUIDV4,
92
+ primaryKey: true
93
+ },
94
+ canonArtistId: {
95
+ type: DataTypes.UUID,
96
+ allowNull: false,
97
+ references: {
98
+ model: 'canon_artist',
99
+ key: 'id'
100
+ },
101
+ field: 'canon_artist_id'
102
+ },
103
+ newsPlatformId: {
104
+ type: DataTypes.UUID,
105
+ allowNull: false,
106
+ references: {
107
+ model: 'news_platform',
108
+ key: 'id'
109
+ },
110
+ field: 'news_platform_id'
111
+ },
112
+ title: {
113
+ type: DataTypes.TEXT,
114
+ allowNull: false
115
+ },
116
+ description: {
117
+ type: DataTypes.TEXT,
118
+ allowNull: false
119
+ },
120
+ articleUrl: {
121
+ type: DataTypes.TEXT,
122
+ allowNull: false,
123
+ field: 'article_url'
124
+ },
125
+ photoUrl: {
126
+ type: DataTypes.TEXT,
127
+ allowNull: false,
128
+ field: 'photo_url'
129
+ },
130
+ articlePublishDate: {
131
+ type: DataTypes.DATE,
132
+ allowNull: false,
133
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
134
+ field: 'article_publish_date'
135
+ },
136
+ createDate: {
137
+ type: DataTypes.DATE,
138
+ allowNull: false,
139
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
140
+ field: 'create_date'
141
+ },
142
+ updateDate: {
143
+ type: DataTypes.DATE,
144
+ allowNull: false,
145
+ defaultValue: Sequelize.Sequelize.literal('CURRENT_TIMESTAMP'),
146
+ field: 'update_date'
147
+ }
148
+ }, {
149
+ sequelize,
150
+ tableName: 'news_article',
151
+ schema: 'eb',
152
+ timestamps: false,
153
+ indexes: [
154
+ {
155
+ name: "idx_news_article_artist",
156
+ fields: [
157
+ { name: "canon_artist_id" },
158
+ ]
159
+ },
160
+ {
161
+ name: "idx_news_article_artist_publish_date",
162
+ fields: [
163
+ { name: "canon_artist_id" },
164
+ { name: "article_publish_date", order: "DESC" },
165
+ ]
166
+ },
167
+ {
168
+ name: "news_article_pkey",
169
+ unique: true,
170
+ fields: [
171
+ { name: "id" },
172
+ ]
173
+ },
174
+ ]
175
+ });
176
+ }
177
+ }