agrs-sequelize-sdk 1.2.68 → 1.2.70

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.
@@ -1,145 +1,145 @@
1
- module.exports = (sequelize, DataTypes) => {
2
- const Campaign = sequelize.define(
3
- "Campaign",
4
- {
5
- CampaignID: {
6
- type: DataTypes.STRING,
7
- primaryKey: true,
8
- },
9
- CampaignName: {
10
- type: DataTypes.STRING,
11
- allowNull: true,
12
- },
13
- pixelId: {
14
- type: DataTypes.STRING,
15
- allowNull: true,
16
- },
17
- customEventType: {
18
- type: DataTypes.STRING,
19
- allowNull: false,
20
- defaultValue: "PURCHASE",
21
- },
22
- objective: {
23
- type: DataTypes.STRING,
24
- allowNull: false,
25
- defaultValue: "OUTCOME_SALES",
26
- },
27
- status: {
28
- type: DataTypes.STRING,
29
- allowNull: true,
30
- },
31
- AdAccountID: {
32
- type: DataTypes.STRING,
33
- allowNull: false,
34
- references: {
35
- model: "AdAccount",
36
- key: "AdAccountID",
37
- },
38
- },
39
- CreatedTime: {
40
- type: DataTypes.DATE,
41
- allowNull: false,
42
- },
43
- CampaignDelivery: {
44
- type: DataTypes.STRING,
45
- allowNull: true,
46
- },
47
- DailyBudget: {
48
- type: DataTypes.INTEGER,
49
- allowNull: true,
50
- },
51
- Draft: {
52
- type: DataTypes.BOOLEAN,
53
- allowNull: true,
54
- defaultValue: false,
55
- },
56
- publish: {
57
- type: DataTypes.BOOLEAN,
58
- allowNull: true,
59
- defaultValue: true,
60
- },
61
- UserCreated: {
62
- type: DataTypes.STRING,
63
- allowNull: true,
64
- },
65
- special_ad_categories: {
66
- type: DataTypes.ARRAY(DataTypes.STRING),
67
- allowNull: true,
68
- },
69
- effectiveStatus: {
70
- type: DataTypes.STRING,
71
- allowNull: true,
72
- },
73
- issuesInfo: {
74
- type: DataTypes.JSONB,
75
- allowNull: true,
76
- },
77
- waiting: {
78
- type: DataTypes.BOOLEAN,
79
- defaultValue: false,
80
- },
81
- policy_status: {
82
- type: DataTypes.STRING,
83
- allowNull: true,
84
- comment: "Facebook policy status: APPROVED, DENIED, PENDING, etc."
85
- },
86
- policy_rejection_reason: {
87
- type: DataTypes.TEXT,
88
- allowNull: true,
89
- comment: "Detailed reason for policy rejection"
90
- },
91
- },
92
- {
93
- tableName: "Campaign",
94
- indexes: [
95
- {
96
- fields: ["AdAccountID"], // Index on AdAccountID for faster joins
97
- },
98
- ],
99
- }
100
- );
101
-
102
- // Define associations
103
- Campaign.associate = (models) => {
104
- Campaign.belongsTo(models.AdAccount, { foreignKey: "AdAccountID" });
105
- Campaign.hasMany(models.AdSet, { foreignKey: "CampaignID" });
106
- };
107
-
108
- // Combined beforeUpdate hook
109
- Campaign.addHook("beforeUpdate", async (campaign, options) => {
110
- if (campaign.changed("publish")) {
111
- if (campaign.previous("publish") === true && campaign.publish === false) {
112
- // Save current state to CampaignHistory
113
- await sequelize.models.CampaignHistory.create({
114
- CampaignID: campaign.CampaignID,
115
- DataSnapshot: campaign._previousDataValues, // Store current state as JSON
116
- });
117
- } else if (
118
- campaign.previous("publish") === false &&
119
- campaign.publish === true
120
- ) {
121
- // Delete the latest history entry
122
- const latestHistory = await sequelize.models.CampaignHistory.findOne({
123
- where: { CampaignID: campaign.CampaignID },
124
- order: [["timestamp", "DESC"]], // Get the latest history entry
125
- });
126
-
127
- if (latestHistory) {
128
- await latestHistory.destroy(); // Delete the latest history entry
129
- }
130
- }
131
- }
132
- });
133
-
134
- Campaign.addHook("afterCreate", async (campaign, options) => {
135
- if (campaign.publish === false) {
136
- // If publish is false on creation, save a snapshot to CampaignHistory
137
- await sequelize.models.CampaignHistory.create({
138
- CampaignID: campaign.CampaignID,
139
- DataSnapshot: campaign.toJSON(), // Save current state
140
- });
141
- }
142
- });
143
-
144
- return Campaign;
145
- };
1
+ module.exports = (sequelize, DataTypes) => {
2
+ const Campaign = sequelize.define(
3
+ "Campaign",
4
+ {
5
+ CampaignID: {
6
+ type: DataTypes.STRING,
7
+ primaryKey: true,
8
+ },
9
+ CampaignName: {
10
+ type: DataTypes.STRING,
11
+ allowNull: true,
12
+ },
13
+ pixelId: {
14
+ type: DataTypes.STRING,
15
+ allowNull: true,
16
+ },
17
+ customEventType: {
18
+ type: DataTypes.STRING,
19
+ allowNull: false,
20
+ defaultValue: "PURCHASE",
21
+ },
22
+ objective: {
23
+ type: DataTypes.STRING,
24
+ allowNull: false,
25
+ defaultValue: "OUTCOME_SALES",
26
+ },
27
+ status: {
28
+ type: DataTypes.STRING,
29
+ allowNull: true,
30
+ },
31
+ AdAccountID: {
32
+ type: DataTypes.STRING,
33
+ allowNull: false,
34
+ references: {
35
+ model: "AdAccount",
36
+ key: "AdAccountID",
37
+ },
38
+ },
39
+ CreatedTime: {
40
+ type: DataTypes.DATE,
41
+ allowNull: false,
42
+ },
43
+ CampaignDelivery: {
44
+ type: DataTypes.STRING,
45
+ allowNull: true,
46
+ },
47
+ DailyBudget: {
48
+ type: DataTypes.INTEGER,
49
+ allowNull: true,
50
+ },
51
+ Draft: {
52
+ type: DataTypes.BOOLEAN,
53
+ allowNull: true,
54
+ defaultValue: false,
55
+ },
56
+ publish: {
57
+ type: DataTypes.BOOLEAN,
58
+ allowNull: true,
59
+ defaultValue: true,
60
+ },
61
+ UserCreated: {
62
+ type: DataTypes.STRING,
63
+ allowNull: true,
64
+ },
65
+ special_ad_categories: {
66
+ type: DataTypes.ARRAY(DataTypes.STRING),
67
+ allowNull: true,
68
+ },
69
+ effectiveStatus: {
70
+ type: DataTypes.STRING,
71
+ allowNull: true,
72
+ },
73
+ issuesInfo: {
74
+ type: DataTypes.JSONB,
75
+ allowNull: true,
76
+ },
77
+ waiting: {
78
+ type: DataTypes.BOOLEAN,
79
+ defaultValue: false,
80
+ },
81
+ policy_status: {
82
+ type: DataTypes.STRING,
83
+ allowNull: true,
84
+ comment: "Facebook policy status: APPROVED, DENIED, PENDING, etc."
85
+ },
86
+ policy_rejection_reason: {
87
+ type: DataTypes.TEXT,
88
+ allowNull: true,
89
+ comment: "Detailed reason for policy rejection"
90
+ },
91
+ },
92
+ {
93
+ tableName: "Campaign",
94
+ indexes: [
95
+ {
96
+ fields: ["AdAccountID"], // Index on AdAccountID for faster joins
97
+ },
98
+ ],
99
+ }
100
+ );
101
+
102
+ // Define associations
103
+ Campaign.associate = (models) => {
104
+ Campaign.belongsTo(models.AdAccount, { foreignKey: "AdAccountID" });
105
+ Campaign.hasMany(models.AdSet, { foreignKey: "CampaignID" });
106
+ };
107
+
108
+ // Combined beforeUpdate hook
109
+ Campaign.addHook("beforeUpdate", async (campaign, options) => {
110
+ if (campaign.changed("publish")) {
111
+ if (campaign.previous("publish") === true && campaign.publish === false) {
112
+ // Save current state to CampaignHistory
113
+ await sequelize.models.CampaignHistory.create({
114
+ CampaignID: campaign.CampaignID,
115
+ DataSnapshot: campaign._previousDataValues, // Store current state as JSON
116
+ });
117
+ } else if (
118
+ campaign.previous("publish") === false &&
119
+ campaign.publish === true
120
+ ) {
121
+ // Delete the latest history entry
122
+ const latestHistory = await sequelize.models.CampaignHistory.findOne({
123
+ where: { CampaignID: campaign.CampaignID },
124
+ order: [["timestamp", "DESC"]], // Get the latest history entry
125
+ });
126
+
127
+ if (latestHistory) {
128
+ await latestHistory.destroy(); // Delete the latest history entry
129
+ }
130
+ }
131
+ }
132
+ });
133
+
134
+ Campaign.addHook("afterCreate", async (campaign, options) => {
135
+ if (campaign.publish === false) {
136
+ // If publish is false on creation, save a snapshot to CampaignHistory
137
+ await sequelize.models.CampaignHistory.create({
138
+ CampaignID: campaign.CampaignID,
139
+ DataSnapshot: campaign.toJSON(), // Save current state
140
+ });
141
+ }
142
+ });
143
+
144
+ return Campaign;
145
+ };