agrs-sequelize-sdk 1.1.60 → 1.1.62

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/AdSet.js CHANGED
@@ -1,3 +1,147 @@
1
+ // module.exports = (sequelize, DataTypes) => {
2
+ // const AdSet = sequelize.define(
3
+ // "AdSet",
4
+ // {
5
+ // AdSetID: {
6
+ // type: DataTypes.STRING,
7
+ // primaryKey: true,
8
+ // },
9
+ // AdSetName: {
10
+ // type: DataTypes.STRING,
11
+ // allowNull: true,
12
+ // },
13
+ // Status: {
14
+ // type: DataTypes.STRING,
15
+ // allowNull: true,
16
+ // },
17
+ // daily_budget: {
18
+ // type: DataTypes.INTEGER,
19
+ // allowNull: true,
20
+ // },
21
+ // start_time: {
22
+ // type: DataTypes.DATE,
23
+ // allowNull: true,
24
+ // },
25
+ // end_time: {
26
+ // type: DataTypes.DATE,
27
+ // allowNull: true,
28
+ // },
29
+ // targeting: {
30
+ // type: DataTypes.JSONB,
31
+ // allowNull: true,
32
+ // },
33
+ // promotedObject: {
34
+ // type: DataTypes.JSONB, // Storing promoted object as a JSON object
35
+ // allowNull: true,
36
+ // },
37
+ // BillingEvent: {
38
+ // type: DataTypes.STRING,
39
+ // allowNull: false,
40
+ // defaultValue: "impressions", // Default value for BillingEvent
41
+ // },
42
+ // OptimizationGoal: {
43
+ // type: DataTypes.STRING,
44
+ // allowNull: false,
45
+ // defaultValue: "offsite_conversions", // Default value for OptimizationGoal
46
+ // },
47
+ // Draft: {
48
+ // type: DataTypes.BOOLEAN,
49
+ // allowNull: true,
50
+ // defaultValue: false,
51
+ // },
52
+ // UserCreated: {
53
+ // type: DataTypes.STRING,
54
+ // allowNull: true,
55
+ // },
56
+ // publish: {
57
+ // type: DataTypes.BOOLEAN,
58
+ // allowNull: true,
59
+ // defaultValue: true,
60
+ // },
61
+ // CampaignID: {
62
+ // type: DataTypes.STRING,
63
+ // allowNull: false,
64
+ // references: {
65
+ // model: "Campaign",
66
+ // key: "CampaignID",
67
+ // },
68
+ // },
69
+ // effectiveStatus: {
70
+ // type: DataTypes.STRING,
71
+ // allowNull: true,
72
+ // },
73
+ // // add issues_info field
74
+ // issuesInfo: {
75
+ // type: DataTypes.JSONB,
76
+ // allowNull: true,
77
+ // },
78
+ // bid_strategy: {
79
+ // type: DataTypes.STRING,
80
+ // allowNull: true,
81
+ // },
82
+ // // bid amount
83
+ // bid_amount: {
84
+ // type: DataTypes.INTEGER,
85
+ // allowNull: true,
86
+ // },
87
+ // waiting: {
88
+ // type: DataTypes.BOOLEAN,
89
+ // defaultValue: false,
90
+ // },
91
+ // },
92
+ // {
93
+ // tableName: "AdSet",
94
+ // indexes: [
95
+ // {
96
+ // fields: ["CampaignID"], // Index on CampaignID for faster join
97
+ // },
98
+ // ],
99
+ // }
100
+ // );
101
+
102
+ // AdSet.associate = (models) => {
103
+ // AdSet.belongsTo(models.Campaign, { foreignKey: "CampaignID" });
104
+ // AdSet.hasMany(models.Ad, { foreignKey: "AdSetID" });
105
+ // };
106
+
107
+ // AdSet.addHook("beforeUpdate", async (adSet, options) => {
108
+ // if (adSet.changed("publish")) {
109
+ // if (adSet.previous("publish") === true && adSet.publish === false) {
110
+ // // Save current state to AdSetHistory
111
+ // await sequelize.models.AdSetHistory.create({
112
+ // AdSetID: adSet.AdSetID,
113
+ // DataSnapshot: adSet._previousDataValues, // Save the full AdSet data as JSON
114
+ // });
115
+ // } else if (
116
+ // adSet.previous("publish") === false &&
117
+ // adSet.publish === true
118
+ // ) {
119
+ // // Delete the latest history entry
120
+ // const latestHistory = await sequelize.models.AdSetHistory.findOne({
121
+ // where: { AdSetID: adSet.AdSetID },
122
+ // order: [["timestamp", "DESC"]], // Get the latest history entry
123
+ // });
124
+
125
+ // if (latestHistory) {
126
+ // await latestHistory.destroy();
127
+ // }
128
+ // }
129
+ // }
130
+ // });
131
+
132
+ // AdSet.addHook("afterCreate", async (adSet, options) => {
133
+ // if (adSet.publish === false) {
134
+ // // If publish is false on creation, save a snapshot to AdSetHistory
135
+ // await sequelize.models.AdSetHistory.create({
136
+ // AdSetID: adSet.AdSetID,
137
+ // DataSnapshot: adSet.toJSON(), // Save the full AdSet data as JSON
138
+ // });
139
+ // }
140
+ // });
141
+
142
+ // return AdSet;
143
+ // };
144
+
1
145
  module.exports = (sequelize, DataTypes) => {
2
146
  const AdSet = sequelize.define(
3
147
  "AdSet",
@@ -31,18 +175,18 @@ module.exports = (sequelize, DataTypes) => {
31
175
  allowNull: true,
32
176
  },
33
177
  promotedObject: {
34
- type: DataTypes.JSONB, // Storing promoted object as a JSON object
178
+ type: DataTypes.JSONB,
35
179
  allowNull: true,
36
180
  },
37
181
  BillingEvent: {
38
182
  type: DataTypes.STRING,
39
183
  allowNull: false,
40
- defaultValue: "impressions", // Default value for BillingEvent
184
+ defaultValue: "impressions",
41
185
  },
42
186
  OptimizationGoal: {
43
187
  type: DataTypes.STRING,
44
188
  allowNull: false,
45
- defaultValue: "offsite_conversions", // Default value for OptimizationGoal
189
+ defaultValue: "offsite_conversions",
46
190
  },
47
191
  Draft: {
48
192
  type: DataTypes.BOOLEAN,
@@ -70,7 +214,6 @@ module.exports = (sequelize, DataTypes) => {
70
214
  type: DataTypes.STRING,
71
215
  allowNull: true,
72
216
  },
73
- // add issues_info field
74
217
  issuesInfo: {
75
218
  type: DataTypes.JSONB,
76
219
  allowNull: true,
@@ -79,7 +222,6 @@ module.exports = (sequelize, DataTypes) => {
79
222
  type: DataTypes.STRING,
80
223
  allowNull: true,
81
224
  },
82
- // bid amount
83
225
  bid_amount: {
84
226
  type: DataTypes.INTEGER,
85
227
  allowNull: true,
@@ -93,7 +235,7 @@ module.exports = (sequelize, DataTypes) => {
93
235
  tableName: "AdSet",
94
236
  indexes: [
95
237
  {
96
- fields: ["CampaignID"], // Index on CampaignID for faster join
238
+ fields: ["CampaignID"],
97
239
  },
98
240
  ],
99
241
  }
@@ -102,24 +244,24 @@ module.exports = (sequelize, DataTypes) => {
102
244
  AdSet.associate = (models) => {
103
245
  AdSet.belongsTo(models.Campaign, { foreignKey: "CampaignID" });
104
246
  AdSet.hasMany(models.Ad, { foreignKey: "AdSetID" });
247
+ // Add this line to define the relationship with AdSetPerformance
248
+ AdSet.hasMany(models.AdSetPerformance, { foreignKey: "AdSetID" });
105
249
  };
106
250
 
107
251
  AdSet.addHook("beforeUpdate", async (adSet, options) => {
108
252
  if (adSet.changed("publish")) {
109
253
  if (adSet.previous("publish") === true && adSet.publish === false) {
110
- // Save current state to AdSetHistory
111
254
  await sequelize.models.AdSetHistory.create({
112
255
  AdSetID: adSet.AdSetID,
113
- DataSnapshot: adSet._previousDataValues, // Save the full AdSet data as JSON
256
+ DataSnapshot: adSet._previousDataValues,
114
257
  });
115
258
  } else if (
116
259
  adSet.previous("publish") === false &&
117
260
  adSet.publish === true
118
261
  ) {
119
- // Delete the latest history entry
120
262
  const latestHistory = await sequelize.models.AdSetHistory.findOne({
121
263
  where: { AdSetID: adSet.AdSetID },
122
- order: [["timestamp", "DESC"]], // Get the latest history entry
264
+ order: [["timestamp", "DESC"]],
123
265
  });
124
266
 
125
267
  if (latestHistory) {
@@ -131,13 +273,12 @@ module.exports = (sequelize, DataTypes) => {
131
273
 
132
274
  AdSet.addHook("afterCreate", async (adSet, options) => {
133
275
  if (adSet.publish === false) {
134
- // If publish is false on creation, save a snapshot to AdSetHistory
135
276
  await sequelize.models.AdSetHistory.create({
136
277
  AdSetID: adSet.AdSetID,
137
- DataSnapshot: adSet.toJSON(), // Save the full AdSet data as JSON
278
+ DataSnapshot: adSet.toJSON(),
138
279
  });
139
280
  }
140
281
  });
141
-
282
+
142
283
  return AdSet;
143
284
  };
@@ -79,6 +79,11 @@ module.exports = (sequelize, DataTypes) => {
79
79
  defaultValue: 0,
80
80
  // Calculated Return on Investment (ExternalRevenue / Spend)
81
81
  },
82
+ agrscid: {
83
+ type: DataTypes.STRING,
84
+ allowNull: true,
85
+ // Optional identifier for the AdSet, extracted from AdSet url if available
86
+ },
82
87
  },
83
88
  {
84
89
  tableName: "AdSetPerformance",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agrs-sequelize-sdk",
3
- "version": "1.1.60",
3
+ "version": "1.1.62",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "start": "node index.js",