agrs-sequelize-sdk 1.1.37 → 1.1.39

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/models/Pages.js CHANGED
@@ -1,74 +1,74 @@
1
- module.exports = (sequelize, DataTypes) => {
2
- const Pages = sequelize.define(
3
- "Pages",
4
- {
5
- id: {
6
- type: DataTypes.UUID,
7
- defaultValue: DataTypes.UUIDV4,
8
- primaryKey: true,
9
- },
10
- name: {
11
- type: DataTypes.STRING,
12
- allowNull: false,
13
- },
14
- code: {
15
- type: DataTypes.STRING,
16
- allowNull: false,
17
- unique: true,
18
- },
19
- link: {
20
- type: DataTypes.STRING,
21
- allowNull: true,
22
- },
23
- feedProvider: {
24
- type: DataTypes.ARRAY(DataTypes.STRING),
25
- allowNull: false,
26
- defaultValue: [], // Default value is an empty array
27
- },
28
- tasks: {
29
- type: DataTypes.ARRAY(DataTypes.STRING),
30
- allowNull: false,
31
- defaultValue: [], // Default value is an empty array
32
- },
33
- is_published:{
34
- type: DataTypes.BOOLEAN,
35
- allowNull: false,
36
- defaultValue: true,
37
- },
38
- Category: {
39
- type: DataTypes.STRING,
40
- allowNull: true,
41
- },
42
- Owner: {
43
- type: DataTypes.STRING,
44
- allowNull: true,
45
- },
46
- Status:{
47
- type: DataTypes.STRING,
48
- allowNull: true,
49
- },
50
- AdLibrary:{
51
- type: DataTypes.STRING,
52
- allowNull: true,
53
- },
54
- BusinessManager: {
55
- type: DataTypes.STRING,
56
- allowNull: true,
57
- },
58
- Users: {
59
- type: DataTypes.ARRAY(DataTypes.STRING),
60
- allowNull: false,
61
- defaultValue: [],
62
- },
63
- Archived: {
64
- type: DataTypes.BOOLEAN,
65
- allowNull: true,
66
- },
67
- },
68
- {
69
- tableName: "Pages",
70
- }
71
- );
72
-
73
- return Pages;
1
+ module.exports = (sequelize, DataTypes) => {
2
+ const Pages = sequelize.define(
3
+ "Pages",
4
+ {
5
+ id: {
6
+ type: DataTypes.UUID,
7
+ defaultValue: DataTypes.UUIDV4,
8
+ primaryKey: true,
9
+ },
10
+ name: {
11
+ type: DataTypes.STRING,
12
+ allowNull: false,
13
+ },
14
+ code: {
15
+ type: DataTypes.STRING,
16
+ allowNull: false,
17
+ unique: true,
18
+ },
19
+ link: {
20
+ type: DataTypes.STRING,
21
+ allowNull: true,
22
+ },
23
+ feedProvider: {
24
+ type: DataTypes.ARRAY(DataTypes.STRING),
25
+ allowNull: false,
26
+ defaultValue: [], // Default value is an empty array
27
+ },
28
+ tasks: {
29
+ type: DataTypes.ARRAY(DataTypes.STRING),
30
+ allowNull: false,
31
+ defaultValue: [], // Default value is an empty array
32
+ },
33
+ is_published:{
34
+ type: DataTypes.BOOLEAN,
35
+ allowNull: false,
36
+ defaultValue: true,
37
+ },
38
+ Category: {
39
+ type: DataTypes.STRING,
40
+ allowNull: true,
41
+ },
42
+ Owner: {
43
+ type: DataTypes.STRING,
44
+ allowNull: true,
45
+ },
46
+ Status:{
47
+ type: DataTypes.STRING,
48
+ allowNull: true,
49
+ },
50
+ AdLibrary:{
51
+ type: DataTypes.STRING,
52
+ allowNull: true,
53
+ },
54
+ BusinessManager: {
55
+ type: DataTypes.STRING,
56
+ allowNull: true,
57
+ },
58
+ Users: {
59
+ type: DataTypes.ARRAY(DataTypes.STRING),
60
+ allowNull: false,
61
+ defaultValue: [],
62
+ },
63
+ Archived: {
64
+ type: DataTypes.BOOLEAN,
65
+ allowNull: true,
66
+ },
67
+ },
68
+ {
69
+ tableName: "Pages",
70
+ }
71
+ );
72
+
73
+ return Pages;
74
74
  };
@@ -1,46 +1,46 @@
1
- module.exports = (sequelize, DataTypes) => {
2
- const PipelineExecution = sequelize.define(
3
- "PipelineExecution",
4
- {
5
- id: {
6
- type: DataTypes.UUID,
7
- defaultValue: DataTypes.UUIDV4,
8
- primaryKey: true,
9
- },
10
- startTime: {
11
- type: DataTypes.DATE,
12
- allowNull: false,
13
- },
14
- endTime: {
15
- type: DataTypes.DATE,
16
- allowNull: false,
17
- },
18
- status: {
19
- type: DataTypes.ENUM("success", "failed"),
20
- allowNull: false,
21
- },
22
- fbDaysBack: {
23
- type: DataTypes.INTEGER,
24
- allowNull: true,
25
- },
26
- codeFuelDaysBack: {
27
- type: DataTypes.INTEGER,
28
- allowNull: true,
29
- },
30
- tonicDaysBack: {
31
- type: DataTypes.INTEGER,
32
- allowNull: true,
33
- },
34
- error: {
35
- type: DataTypes.TEXT,
36
- allowNull: true,
37
- },
38
- },
39
- {
40
- tableName: "pipeline_executions",
41
- timestamps: true,
42
- }
43
- );
44
-
45
- return PipelineExecution;
46
- };
1
+ module.exports = (sequelize, DataTypes) => {
2
+ const PipelineExecution = sequelize.define(
3
+ "PipelineExecution",
4
+ {
5
+ id: {
6
+ type: DataTypes.UUID,
7
+ defaultValue: DataTypes.UUIDV4,
8
+ primaryKey: true,
9
+ },
10
+ startTime: {
11
+ type: DataTypes.DATE,
12
+ allowNull: false,
13
+ },
14
+ endTime: {
15
+ type: DataTypes.DATE,
16
+ allowNull: false,
17
+ },
18
+ status: {
19
+ type: DataTypes.ENUM("success", "failed"),
20
+ allowNull: false,
21
+ },
22
+ fbDaysBack: {
23
+ type: DataTypes.INTEGER,
24
+ allowNull: true,
25
+ },
26
+ codeFuelDaysBack: {
27
+ type: DataTypes.INTEGER,
28
+ allowNull: true,
29
+ },
30
+ tonicDaysBack: {
31
+ type: DataTypes.INTEGER,
32
+ allowNull: true,
33
+ },
34
+ error: {
35
+ type: DataTypes.TEXT,
36
+ allowNull: true,
37
+ },
38
+ },
39
+ {
40
+ tableName: "pipeline_executions",
41
+ timestamps: true,
42
+ }
43
+ );
44
+
45
+ return PipelineExecution;
46
+ };
@@ -0,0 +1,209 @@
1
+ module.exports = (sequelize, DataTypes) => {
2
+ const RSOCFeedCampaign = sequelize.define(
3
+ "RSOCFeedCampaign",
4
+ {
5
+ AGRS_CID: {
6
+ type: DataTypes.STRING,
7
+ allowNull: false,
8
+ unique: true,
9
+ primaryKey: true,
10
+ },
11
+ AGRSAID: {
12
+ type: DataTypes.STRING,
13
+ allowNull: false,
14
+ comment: "Foreign key referencing Article.AGRSAID",
15
+ },
16
+ articleName: {
17
+ type: DataTypes.STRING,
18
+ allowNull: false,
19
+ comment: "Name of the associated article",
20
+ },
21
+ channelId: {
22
+ type: DataTypes.STRING,
23
+ allowNull: false,
24
+ comment: "Foreign key referencing Channel.channelId",
25
+ },
26
+ styleId: {
27
+ type: DataTypes.STRING,
28
+ allowNull: true,
29
+ comment: "Style ID (stid) inherited from Channel",
30
+ },
31
+ assignee: {
32
+ type: DataTypes.STRING,
33
+ allowNull: false,
34
+ },
35
+ status: {
36
+ type: DataTypes.STRING,
37
+ allowNull: false,
38
+ },
39
+ country: {
40
+ type: DataTypes.STRING,
41
+ allowNull: false,
42
+ },
43
+ vertical: {
44
+ type: DataTypes.STRING,
45
+ allowNull: false,
46
+ },
47
+ freeText: {
48
+ type: DataTypes.TEXT,
49
+ allowNull: true,
50
+ },
51
+ campaignName: {
52
+ type: DataTypes.STRING,
53
+ allowNull: false,
54
+ },
55
+ campaignId: {
56
+ type: DataTypes.STRING,
57
+ allowNull: true,
58
+ },
59
+ keywords: {
60
+ type: DataTypes.ARRAY(DataTypes.STRING),
61
+ allowNull: true,
62
+ },
63
+ finalLink: {
64
+ type: DataTypes.STRING(1024),
65
+ allowNull: true,
66
+ },
67
+ redirectLink: {
68
+ type: DataTypes.STRING(1024),
69
+ allowNull: true,
70
+ },
71
+ pixelId: {
72
+ type: DataTypes.STRING(1024),
73
+ allowNull: true,
74
+ },
75
+ token: {
76
+ type: DataTypes.STRING(1024),
77
+ allowNull: true,
78
+ },
79
+ accountId: {
80
+ type: DataTypes.STRING,
81
+ allowNull: false,
82
+ },
83
+ feedName: {
84
+ type: DataTypes.STRING,
85
+ allowNull: true,
86
+ defaultValue: "RSOC",
87
+ },
88
+ adTitle: {
89
+ type: DataTypes.STRING,
90
+ allowNull: true,
91
+ },
92
+ domain: {
93
+ type: DataTypes.STRING,
94
+ allowNull: true,
95
+ },
96
+ feedProvider: {
97
+ type: DataTypes.STRING,
98
+ allowNull: false,
99
+ defaultValue: "RSOC",
100
+ },
101
+ createdCampaignAt: {
102
+ type: DataTypes.DATE,
103
+ allowNull: true,
104
+ defaultValue: DataTypes.NOW,
105
+ },
106
+ draft: {
107
+ type: DataTypes.BOOLEAN,
108
+ allowNull: true,
109
+ defaultValue: false,
110
+ },
111
+ createdAt: {
112
+ type: DataTypes.DATE,
113
+ defaultValue: DataTypes.NOW,
114
+ },
115
+ updatedAt: {
116
+ type: DataTypes.DATE,
117
+ defaultValue: DataTypes.NOW,
118
+ },
119
+ },
120
+ {
121
+ tableName: "rsoc_feed_campaigns",
122
+ timestamps: true,
123
+ }
124
+ );
125
+
126
+ RSOCFeedCampaign.associate = (models) => {
127
+ RSOCFeedCampaign.belongsTo(models.Article, {
128
+ foreignKey: "AGRSAID",
129
+ targetKey: "AGRSAID",
130
+ as: "Article",
131
+ constraints: false,
132
+ });
133
+
134
+ RSOCFeedCampaign.belongsTo(models.Channel, {
135
+ foreignKey: "channelId",
136
+ targetKey: "channelId",
137
+ as: "Channel",
138
+ constraints: false,
139
+ });
140
+ };
141
+
142
+ RSOCFeedCampaign.beforeCreate(async (campaign) => {
143
+ const AGRS_CID = campaign.getDataValue("AGRS_CID");
144
+ if (AGRS_CID) {
145
+ const redirectLink = `https://ktwrjqdfv.com/${AGRS_CID}?campaign_name={{campaign.name}}&adset_name={{adset.name}}&ad_name={{ad.name}}&campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}_${AGRS_CID}&placement={{placement}}&site_source={{site_source}}&fbclid={{fbclid}}`;
146
+ campaign.setDataValue("redirectLink", redirectLink);
147
+ }
148
+
149
+ const channel = await sequelize.models.Channel.findOne({
150
+ where: { channelId: campaign.channelId },
151
+ });
152
+ if (channel) {
153
+ const connectedCampaigns = channel.connectedCampaigns || [];
154
+ if (!connectedCampaigns.includes(campaign.AGRS_CID)) {
155
+ connectedCampaigns.push(campaign.AGRS_CID);
156
+ await channel.update({ connectedCampaigns });
157
+ }
158
+ }
159
+ });
160
+
161
+ RSOCFeedCampaign.beforeUpdate(async (campaign) => {
162
+ if (campaign.changed("AGRS_CID")) {
163
+ const AGRS_CID = campaign.getDataValue("AGRS_CID");
164
+ if (AGRS_CID) {
165
+ const redirectLink = `https://ktwrjqdfv.com/${AGRS_CID}?campaign_name={{campaign.name}}&adset_name={{adset.name}}&ad_name={{ad.name}}&campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}_${AGRS_CID}&placement={{placement}}&site_source={{site_source}}&fbclid={{fbclid}}`;
166
+ campaign.setDataValue("redirectLink", redirectLink);
167
+ }
168
+ }
169
+
170
+ if (campaign.changed("channelId")) {
171
+ const oldChannelId = campaign.previous("channelId");
172
+ const newChannelId = campaign.channelId;
173
+
174
+ if (oldChannelId) {
175
+ const oldChannel = await sequelize.models.Channel.findOne({
176
+ where: { channelId: oldChannelId },
177
+ });
178
+ if (oldChannel) {
179
+ const connectedCampaigns = oldChannel.connectedCampaigns || [];
180
+ const updatedCampaigns = connectedCampaigns.filter(
181
+ (id) => id !== campaign.AGRS_CID
182
+ );
183
+ await oldChannel.update({ connectedCampaigns: updatedCampaigns });
184
+ }
185
+ }
186
+
187
+ const newChannel = await sequelize.models.Channel.findOne({
188
+ where: { channelId: newChannelId },
189
+ });
190
+ if (newChannel) {
191
+ const connectedCampaigns = newChannel.connectedCampaigns || [];
192
+ if (!connectedCampaigns.includes(campaign.AGRS_CID)) {
193
+ connectedCampaigns.push(campaign.AGRS_CID);
194
+ await newChannel.update({ connectedCampaigns });
195
+ }
196
+ }
197
+ }
198
+ });
199
+
200
+ RSOCFeedCampaign.beforeSave(async (campaign) => {
201
+ const AGRS_CID = campaign.getDataValue("AGRS_CID");
202
+ if (AGRS_CID && !campaign.getDataValue("redirectLink")) {
203
+ const redirectLink = `https://ktwrjqdfv.com/${AGRS_CID}?campaign_name={{campaign.name}}&adset_name={{adset.name}}&ad_name={{ad.name}}&campaign_id={{campaign.id}}&adset_id={{adset.id}}&ad_id={{ad.id}}_${AGRS_CID}&placement={{placement}}&site_source={{site_source}}&fbclid={{fbclid}}`;
204
+ campaign.setDataValue("redirectLink", redirectLink);
205
+ }
206
+ });
207
+
208
+ return RSOCFeedCampaign;
209
+ };
@@ -1,56 +1,56 @@
1
- module.exports = (sequelize, DataTypes) => {
2
- const RulesValues = sequelize.define(
3
- "RulesValues",
4
- {
5
- id: {
6
- type: DataTypes.UUID,
7
- defaultValue: DataTypes.UUIDV4,
8
- primaryKey: true,
9
- },
10
- name: {
11
- type: DataTypes.STRING,
12
- allowNull: false,
13
- },
14
- code: {
15
- type: DataTypes.STRING,
16
- allowNull: false,
17
- unique: true,
18
- },
19
- permissions: {
20
- type: DataTypes.ARRAY(DataTypes.STRING),
21
- allowNull: false,
22
- defaultValue: [],
23
- },
24
- feature: {
25
- type: DataTypes.STRING,
26
- allowNull: true,
27
- },
28
- parentId: {
29
- type: DataTypes.UUID,
30
- allowNull: true,
31
- references: {
32
- model: "RulesValues",
33
- key: "id",
34
- },
35
- onDelete: "CASCADE",
36
- },
37
- },
38
- {
39
- tableName: "RulesValues",
40
- }
41
- );
42
-
43
- // Self-referential association to define sub-rules
44
- RulesValues.hasMany(RulesValues, {
45
- as: "subRules",
46
- foreignKey: "parentId",
47
- onDelete: "CASCADE",
48
- });
49
-
50
- RulesValues.belongsTo(RulesValues, {
51
- as: "parentRule",
52
- foreignKey: "parentId",
53
- });
54
-
55
- return RulesValues;
56
- };
1
+ module.exports = (sequelize, DataTypes) => {
2
+ const RulesValues = sequelize.define(
3
+ "RulesValues",
4
+ {
5
+ id: {
6
+ type: DataTypes.UUID,
7
+ defaultValue: DataTypes.UUIDV4,
8
+ primaryKey: true,
9
+ },
10
+ name: {
11
+ type: DataTypes.STRING,
12
+ allowNull: false,
13
+ },
14
+ code: {
15
+ type: DataTypes.STRING,
16
+ allowNull: false,
17
+ unique: true,
18
+ },
19
+ permissions: {
20
+ type: DataTypes.ARRAY(DataTypes.STRING),
21
+ allowNull: false,
22
+ defaultValue: [],
23
+ },
24
+ feature: {
25
+ type: DataTypes.STRING,
26
+ allowNull: true,
27
+ },
28
+ parentId: {
29
+ type: DataTypes.UUID,
30
+ allowNull: true,
31
+ references: {
32
+ model: "RulesValues",
33
+ key: "id",
34
+ },
35
+ onDelete: "CASCADE",
36
+ },
37
+ },
38
+ {
39
+ tableName: "RulesValues",
40
+ }
41
+ );
42
+
43
+ // Self-referential association to define sub-rules
44
+ RulesValues.hasMany(RulesValues, {
45
+ as: "subRules",
46
+ foreignKey: "parentId",
47
+ onDelete: "CASCADE",
48
+ });
49
+
50
+ RulesValues.belongsTo(RulesValues, {
51
+ as: "parentRule",
52
+ foreignKey: "parentId",
53
+ });
54
+
55
+ return RulesValues;
56
+ };
package/models/Users.js CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  module.exports = (sequelize, DataTypes) => {
3
2
  const Users = sequelize.define(
4
3
  "Users",
@@ -75,11 +74,38 @@ module.exports = (sequelize, DataTypes) => {
75
74
  type: DataTypes.STRING, // Array of organization IDs
76
75
  allowNull: true,
77
76
  },
77
+ access_all_files: {
78
+ type: DataTypes.BOOLEAN,
79
+ allowNull: true,
80
+ },
81
+ managed_by: {
82
+ type: DataTypes.UUID, // A UUID to store the ID of the user who manages this user
83
+ allowNull: true,
84
+ references: {
85
+ model: 'Users',
86
+ key: 'id',
87
+ },
88
+ },
78
89
  },
79
90
  {
80
91
  tableName: "Users",
81
92
  }
82
93
  );
83
94
 
95
+ // Define associations for managed_by relationship
96
+ Users.associate = (models) => {
97
+ // A user can manage many users
98
+ Users.hasMany(models.Users, {
99
+ foreignKey: 'managed_by',
100
+ as: 'managedUsers',
101
+ });
102
+
103
+ // A user can only be managed by one user
104
+ Users.belongsTo(models.Users, {
105
+ foreignKey: 'managed_by',
106
+ as: 'manager',
107
+ });
108
+ };
109
+
84
110
  return Users;
85
- };
111
+ };
@@ -1,26 +1,26 @@
1
- module.exports = (sequelize, DataTypes) => {
2
- const Vertical = sequelize.define(
3
- "Vertical",
4
- {
5
- id: {
6
- type: DataTypes.UUID,
7
- defaultValue: DataTypes.UUIDV4,
8
- primaryKey: true,
9
- },
10
- name: {
11
- type: DataTypes.STRING,
12
- allowNull: false,
13
- },
14
- code: {
15
- type: DataTypes.STRING,
16
- allowNull: false,
17
- unique: true,
18
- },
19
- },
20
- {
21
- tableName: "Vertical",
22
- }
23
- );
24
-
25
- return Vertical;
1
+ module.exports = (sequelize, DataTypes) => {
2
+ const Vertical = sequelize.define(
3
+ "Vertical",
4
+ {
5
+ id: {
6
+ type: DataTypes.UUID,
7
+ defaultValue: DataTypes.UUIDV4,
8
+ primaryKey: true,
9
+ },
10
+ name: {
11
+ type: DataTypes.STRING,
12
+ allowNull: false,
13
+ },
14
+ code: {
15
+ type: DataTypes.STRING,
16
+ allowNull: false,
17
+ unique: true,
18
+ },
19
+ },
20
+ {
21
+ tableName: "Vertical",
22
+ }
23
+ );
24
+
25
+ return Vertical;
26
26
  };