agrs-sequelize-sdk 1.1.60 → 1.1.61
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 +154 -13
- package/package.json +1 -1
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,
|
|
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",
|
|
184
|
+
defaultValue: "impressions",
|
|
41
185
|
},
|
|
42
186
|
OptimizationGoal: {
|
|
43
187
|
type: DataTypes.STRING,
|
|
44
188
|
allowNull: false,
|
|
45
|
-
defaultValue: "offsite_conversions",
|
|
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"],
|
|
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,
|
|
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"]],
|
|
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(),
|
|
278
|
+
DataSnapshot: adSet.toJSON(),
|
|
138
279
|
});
|
|
139
280
|
}
|
|
140
281
|
});
|
|
141
|
-
|
|
282
|
+
|
|
142
283
|
return AdSet;
|
|
143
284
|
};
|