@plusscommunities/pluss-newsletter-aws 1.2.3 → 1.2.7

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,7 +1,9 @@
1
+ const { values } = require("../../feature.config");
2
+
1
3
  module.exports = {
2
- subject: `New Newsletter Submission: ___TITLE___`,
4
+ subject: `${values.textNewNewsletterSubmission}: ___TITLE___`,
3
5
  content: `<div style='margin-bottom: 40px; font-size: 14px; line-height: 23px; color: #3e4245;'>
4
- ___NAME___ has submitted a new newsletter post for review.
6
+ ___NAME___ ${values.textHasSubmittedANewNewsletterPost}
5
7
  </div>
6
8
  <div style='margin-bottom: 16px; font-size: 22px; line-height: 30px; color: #0a2246; font-weight: bold;'>
7
9
  ___TITLE___
@@ -1,10 +1,10 @@
1
1
  const values = {
2
2
  entityKey: "news",
3
3
  serviceKey: "newsletter",
4
+ updateKey: "news",
4
5
  tableKeyNewsletterEntries: "NewsletterEntries",
5
6
  tableKeyNewsletterSubmissions: "NewsletterSubmissions",
6
7
  tableKeyNewsletterUserEntries: "NewsletterUserEntries",
7
- tableKeyNewsletterEntries: "NewsletterEntries",
8
8
  tableNameNewsletterEntries: "newsletterentries",
9
9
  tableNameNewsletterSubmissions: "newslettersubmissions",
10
10
  tableNameNewsletterUserEntries: "newsletteruserentries",
@@ -19,6 +19,9 @@ const values = {
19
19
  notificationRejectNewsSubmission: "RejectNewsSubmission",
20
20
  notificationNewsletterPublished: "NewsletterPublished",
21
21
  routeEntityPath: "/news/article/:id",
22
+ textNewNewsletterSubmission: "New Newsletter Submission",
23
+ textHasSubmittedANewNewsletterPost:
24
+ "has submitted a new newsletter post for review.",
22
25
  };
23
26
  exports.values = values;
24
27
 
package/feature.config.js CHANGED
@@ -1,10 +1,10 @@
1
1
  const values = {
2
2
  entityKey: "news",
3
3
  serviceKey: "newsletter",
4
+ updateKey: "news",
4
5
  tableKeyNewsletterEntries: "NewsletterEntries",
5
6
  tableKeyNewsletterSubmissions: "NewsletterSubmissions",
6
7
  tableKeyNewsletterUserEntries: "NewsletterUserEntries",
7
- tableKeyNewsletterEntries: "NewsletterEntries",
8
8
  tableNameNewsletterEntries: "newsletterentries",
9
9
  tableNameNewsletterSubmissions: "newslettersubmissions",
10
10
  tableNameNewsletterUserEntries: "newsletteruserentries",
@@ -19,6 +19,9 @@ const values = {
19
19
  notificationRejectNewsSubmission: "RejectNewsSubmission",
20
20
  notificationNewsletterPublished: "NewsletterPublished",
21
21
  routeEntityPath: "/news/article/:id",
22
+ textNewNewsletterSubmission: "New Newsletter Submission",
23
+ textHasSubmittedANewNewsletterPost:
24
+ "has submitted a new newsletter post for review.",
22
25
  };
23
26
  exports.values = values;
24
27
 
@@ -0,0 +1,329 @@
1
+ const values = {
2
+ entityKey: "newsNoticeBoard",
3
+ serviceKey: "newsletterNoticeBoard",
4
+ updateKey: "newsNoticeBoard",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesNoticeBoard",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsNoticeBoard",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesNoticeBoard",
8
+ tableNameNewsletterEntries: "newsletterentriesNoticeBoard",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsNoticeBoard",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesNoticeBoard",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailNoticeBoard",
12
+ permissionNewsletter: "newsletterNoticeBoard",
13
+ permissionNewsletterSubmit: "newsletterSubmitNoticeBoard",
14
+ activityAddNewsSubmission: "AddNewsSubmissionNoticeBoard",
15
+ activityAddNews: "AddNewsNoticeBoard",
16
+ activityDeleteNews: "DeleteNewsNoticeBoard",
17
+ activityEditNews: "EditNewsNoticeBoard",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionNoticeBoard",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionNoticeBoard",
20
+ notificationNewsletterPublished: "NewsletterPublishedNoticeBoard",
21
+ routeEntityPath: "/newsNoticeBoard/article/:id",
22
+ textNewNewsletterSubmission: "New Notice Board Submission",
23
+ textHasSubmittedANewNewsletterPost:
24
+ "has submitted a new notice board post for review.",
25
+ };
26
+ exports.values = values;
27
+
28
+ exports.permissions = [
29
+ values.permissionNewsletter,
30
+ values.permissionNewsletterSubmit,
31
+ ];
32
+
33
+ exports.entity = {
34
+ key: values.entityKey,
35
+ permission: values.permissionNewsletter,
36
+ table: values.tableNameNewsletterEntries,
37
+ id: "RowId",
38
+ path: values.routeEntityPath,
39
+ };
40
+
41
+ exports.serverless = {
42
+ name: values.serviceKey,
43
+ apis: [
44
+ {
45
+ name: "addNewsletterEntry",
46
+ file: "addNewsletterEntry",
47
+ function: "addNewsletterEntry",
48
+ memorySize: 1024,
49
+ timeout: 30,
50
+ path: "add",
51
+ method: "post",
52
+ headers: ["Content-Type", "authkey"],
53
+ },
54
+ {
55
+ name: "editNewsletterEntry",
56
+ file: "editNewsletterEntry",
57
+ function: "editNewsletterEntry",
58
+ memorySize: 128,
59
+ timeout: 10,
60
+ path: "edit",
61
+ method: "post",
62
+ headers: ["Content-Type", "authkey"],
63
+ },
64
+ {
65
+ name: "editNewsletterSubmission",
66
+ file: "editNewsletterSubmission",
67
+ function: "editNewsletterSubmission",
68
+ memorySize: 128,
69
+ timeout: 10,
70
+ path: "editSubmission",
71
+ method: "post",
72
+ headers: ["Content-Type", "authkey"],
73
+ },
74
+ {
75
+ name: "getNewsletterEntry",
76
+ file: "getNewsletterEntry",
77
+ function: "getNewsletterEntry",
78
+ memorySize: 128,
79
+ timeout: 10,
80
+ path: "get/{id}",
81
+ method: "get",
82
+ headers: ["Content-Type", "authkey"],
83
+ },
84
+ {
85
+ name: "getNewsletterEntries",
86
+ file: "getNewsletterEntries",
87
+ function: "getNewsletterEntries",
88
+ memorySize: 1024,
89
+ timeout: 30,
90
+ path: "get",
91
+ method: "get",
92
+ headers: ["Content-Type", "authkey"],
93
+ },
94
+ {
95
+ name: "getFeaturedNewsletterEntries",
96
+ file: "getFeaturedNewsletterEntries",
97
+ function: "getFeaturedNewsletterEntries",
98
+ memorySize: 128,
99
+ timeout: 10,
100
+ path: "getFeatured",
101
+ method: "get",
102
+ headers: ["Content-Type", "authkey"],
103
+ },
104
+ {
105
+ name: "getRecentNewsletterEntries",
106
+ file: "getRecentNewsletterEntries",
107
+ function: "getRecentNewsletterEntries",
108
+ memorySize: 128,
109
+ timeout: 10,
110
+ path: "recent",
111
+ method: "get",
112
+ headers: ["Content-Type", "authkey"],
113
+ },
114
+ {
115
+ name: "searchAvailableNews",
116
+ file: "searchAvailableNews",
117
+ function: "searchAvailableNews",
118
+ memorySize: 128,
119
+ timeout: 10,
120
+ path: "content/search",
121
+ method: "get",
122
+ headers: ["Content-Type", "authkey"],
123
+ },
124
+ {
125
+ name: "getAvailableNews",
126
+ file: "getAvailableNews",
127
+ function: "getAvailableNews",
128
+ memorySize: 128,
129
+ timeout: 10,
130
+ path: "content/get",
131
+ method: "get",
132
+ headers: ["Content-Type", "authkey"],
133
+ },
134
+ {
135
+ name: "getPublishedEntries",
136
+ file: "getPublishedEntries",
137
+ function: "getPublishedEntries",
138
+ memorySize: 128,
139
+ timeout: 10,
140
+ path: "content/specific",
141
+ method: "get",
142
+ headers: ["Content-Type", "authkey"],
143
+ },
144
+ {
145
+ name: "getPublishedAvailableNews",
146
+ file: "getPublishedAvailableNews",
147
+ function: "getPublishedAvailableNews",
148
+ memorySize: 128,
149
+ timeout: 10,
150
+ path: "content/published",
151
+ method: "get",
152
+ headers: ["Content-Type", "authkey"],
153
+ },
154
+ {
155
+ name: "deleteNewsletterEntry",
156
+ file: "deleteNewsletterEntry",
157
+ function: "deleteNewsletterEntry",
158
+ memorySize: 128,
159
+ timeout: 10,
160
+ path: "remove",
161
+ method: "post",
162
+ headers: ["Content-Type", "authkey"],
163
+ },
164
+ {
165
+ name: "hasNewsletterAccess",
166
+ file: "hasNewsletterAccess",
167
+ function: "hasNewsletterAccess",
168
+ memorySize: 128,
169
+ timeout: 10,
170
+ path: "access",
171
+ method: "get",
172
+ headers: ["Content-Type", "authkey"],
173
+ },
174
+ {
175
+ name: "getNewsletterSubmissions",
176
+ file: "getNewsletterSubmissions",
177
+ function: "getNewsletterSubmissions",
178
+ memorySize: 128,
179
+ timeout: 10,
180
+ path: "submissions/get",
181
+ method: "get",
182
+ headers: ["Content-Type", "authkey"],
183
+ },
184
+ {
185
+ name: "getNewsletterSubmission",
186
+ file: "getNewsletterSubmission",
187
+ function: "getNewsletterSubmission",
188
+ memorySize: 128,
189
+ timeout: 10,
190
+ path: "submissions/get/{id}",
191
+ method: "get",
192
+ headers: ["Content-Type", "authkey"],
193
+ },
194
+ {
195
+ name: "handleNewsletterSubmission",
196
+ file: "handleNewsletterSubmission",
197
+ function: "handleNewsletterSubmission",
198
+ memorySize: 128,
199
+ timeout: 10,
200
+ path: "submissions/handle",
201
+ method: "post",
202
+ headers: ["Content-Type", "authkey"],
203
+ },
204
+ {
205
+ name: "getSubmissionCount",
206
+ file: "getSubmissionCount",
207
+ function: "getSubmissionCount",
208
+ memorySize: 128,
209
+ timeout: 10,
210
+ path: "submissions/count",
211
+ method: "get",
212
+ headers: ["Content-Type", "authkey"],
213
+ },
214
+ {
215
+ name: "getTaggedNews",
216
+ file: "getTaggedNews",
217
+ function: "getTaggedNews",
218
+ memorySize: 128,
219
+ timeout: 10,
220
+ path: "tagged/get",
221
+ method: "get",
222
+ headers: ["Content-Type", "authkey"],
223
+ },
224
+ ],
225
+ triggers: [
226
+ {
227
+ name: "newsletterChanged",
228
+ file: "newsletterChanged",
229
+ function: "newsletterChanged",
230
+ memorySize: 2048,
231
+ timeout: 30,
232
+ table: values.tableKeyNewsletterEntries,
233
+ },
234
+ ],
235
+ schedules: [
236
+ {
237
+ name: "watchNewsletter",
238
+ file: "watchNewsletter",
239
+ function: "watchNewsletter",
240
+ memorySize: "2048",
241
+ timeout: "300",
242
+ rate: "1/5 * * * ? *",
243
+ },
244
+ ],
245
+ tables: [
246
+ {
247
+ key: values.tableKeyNewsletterEntries,
248
+ name: values.tableNameNewsletterEntries,
249
+ attributes: [
250
+ { name: "RowId", type: "S" },
251
+ { name: "Site", type: "S" },
252
+ { name: "UnixTimestampReverse", type: "N" },
253
+ { name: "FeaturedExpiry", type: "N" },
254
+ { name: "SourceId", type: "S" },
255
+ { name: "UnsentNotification", type: "S" },
256
+ { name: "UnixTimestamp", type: "N" },
257
+ ],
258
+ id: "RowId",
259
+ indexes: [
260
+ {
261
+ name: "NewsletterEntriesSiteTimestampIndex",
262
+ keys: [
263
+ { name: "Site", type: "HASH" },
264
+ { name: "UnixTimestampReverse", type: "RANGE" },
265
+ ],
266
+ },
267
+ {
268
+ name: "NewsletterEntriesSiteFeaturedExpiryIndex",
269
+ keys: [
270
+ { name: "Site", type: "HASH" },
271
+ { name: "FeaturedExpiry", type: "RANGE" },
272
+ ],
273
+ },
274
+ {
275
+ name: "NewsletterEntriesSiteSourceIdIndex",
276
+ keys: [
277
+ { name: "Site", type: "HASH" },
278
+ { name: "SourceId", type: "RANGE" },
279
+ ],
280
+ },
281
+ {
282
+ name: "NewsletterEntriesUnsentNotiIndex",
283
+ keys: [
284
+ { name: "UnsentNotification", type: "HASH" },
285
+ { name: "UnixTimestamp", type: "RANGE" },
286
+ ],
287
+ },
288
+ ],
289
+ },
290
+ {
291
+ key: values.tableKeyNewsletterSubmissions,
292
+ name: values.tableNameNewsletterSubmissions,
293
+ attributes: [
294
+ { name: "RowId", type: "S" },
295
+ { name: "Site", type: "S" },
296
+ { name: "UnixTimestampReverse", type: "N" },
297
+ ],
298
+ id: "RowId",
299
+ indexes: [
300
+ {
301
+ name: "NewsletterSubmissionsSiteTimestampIndex",
302
+ keys: [
303
+ { name: "Site", type: "HASH" },
304
+ { name: "UnixTimestampReverse", type: "RANGE" },
305
+ ],
306
+ },
307
+ ],
308
+ },
309
+ {
310
+ key: values.tableKeyNewsletterUserEntries,
311
+ name: values.tableNameNewsletterUserEntries,
312
+ attributes: [
313
+ { name: "RowId", type: "S" },
314
+ { name: "UserId", type: "S" },
315
+ { name: "UnixTimestampReverse", type: "N" },
316
+ ],
317
+ id: "RowId",
318
+ indexes: [
319
+ {
320
+ name: "NewsletterUserEntriesUserIdTimestampIndex",
321
+ keys: [
322
+ { name: "UserId", type: "HASH" },
323
+ { name: "UnixTimestampReverse", type: "RANGE" },
324
+ ],
325
+ },
326
+ ],
327
+ },
328
+ ],
329
+ };
@@ -0,0 +1,329 @@
1
+ const values = {
2
+ entityKey: "newsSharing",
3
+ serviceKey: "newsletterSharing",
4
+ updateKey: "newsSharing",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesSharing1",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsSharing1",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesSharing1",
8
+ tableNameNewsletterEntries: "newsletterentriesSharing1",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsSharing1",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesSharing1",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailSharing",
12
+ permissionNewsletter: "newsletterSharing",
13
+ permissionNewsletterSubmit: "newsletterSubmitSharing",
14
+ activityAddNewsSubmission: "AddNewsSubmissionSharing",
15
+ activityAddNews: "AddNewsSharing",
16
+ activityDeleteNews: "DeleteNewsSharing",
17
+ activityEditNews: "EditNewsSharing",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionSharing",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionSharing",
20
+ notificationNewsletterPublished: "NewsletterPublishedSharing",
21
+ routeEntityPath: "/newsSharing/article/:id",
22
+ textNewNewsletterSubmission: "New Sharing Submission",
23
+ textHasSubmittedANewNewsletterPost:
24
+ "has submitted a new sharing post for review.",
25
+ };
26
+ exports.values = values;
27
+
28
+ exports.permissions = [
29
+ values.permissionNewsletter,
30
+ values.permissionNewsletterSubmit,
31
+ ];
32
+
33
+ exports.entity = {
34
+ key: values.entityKey,
35
+ permission: values.permissionNewsletter,
36
+ table: values.tableNameNewsletterEntries,
37
+ id: "RowId",
38
+ path: values.routeEntityPath,
39
+ };
40
+
41
+ exports.serverless = {
42
+ name: values.serviceKey,
43
+ apis: [
44
+ {
45
+ name: "addNewsletterEntry",
46
+ file: "addNewsletterEntry",
47
+ function: "addNewsletterEntry",
48
+ memorySize: 1024,
49
+ timeout: 30,
50
+ path: "add",
51
+ method: "post",
52
+ headers: ["Content-Type", "authkey"],
53
+ },
54
+ {
55
+ name: "editNewsletterEntry",
56
+ file: "editNewsletterEntry",
57
+ function: "editNewsletterEntry",
58
+ memorySize: 128,
59
+ timeout: 10,
60
+ path: "edit",
61
+ method: "post",
62
+ headers: ["Content-Type", "authkey"],
63
+ },
64
+ {
65
+ name: "editNewsletterSubmission",
66
+ file: "editNewsletterSubmission",
67
+ function: "editNewsletterSubmission",
68
+ memorySize: 128,
69
+ timeout: 10,
70
+ path: "editSubmission",
71
+ method: "post",
72
+ headers: ["Content-Type", "authkey"],
73
+ },
74
+ {
75
+ name: "getNewsletterEntry",
76
+ file: "getNewsletterEntry",
77
+ function: "getNewsletterEntry",
78
+ memorySize: 128,
79
+ timeout: 10,
80
+ path: "get/{id}",
81
+ method: "get",
82
+ headers: ["Content-Type", "authkey"],
83
+ },
84
+ {
85
+ name: "getNewsletterEntries",
86
+ file: "getNewsletterEntries",
87
+ function: "getNewsletterEntries",
88
+ memorySize: 1024,
89
+ timeout: 30,
90
+ path: "get",
91
+ method: "get",
92
+ headers: ["Content-Type", "authkey"],
93
+ },
94
+ {
95
+ name: "getFeaturedNewsletterEntries",
96
+ file: "getFeaturedNewsletterEntries",
97
+ function: "getFeaturedNewsletterEntries",
98
+ memorySize: 128,
99
+ timeout: 10,
100
+ path: "getFeatured",
101
+ method: "get",
102
+ headers: ["Content-Type", "authkey"],
103
+ },
104
+ {
105
+ name: "getRecentNewsletterEntries",
106
+ file: "getRecentNewsletterEntries",
107
+ function: "getRecentNewsletterEntries",
108
+ memorySize: 128,
109
+ timeout: 10,
110
+ path: "recent",
111
+ method: "get",
112
+ headers: ["Content-Type", "authkey"],
113
+ },
114
+ {
115
+ name: "searchAvailableNews",
116
+ file: "searchAvailableNews",
117
+ function: "searchAvailableNews",
118
+ memorySize: 128,
119
+ timeout: 10,
120
+ path: "content/search",
121
+ method: "get",
122
+ headers: ["Content-Type", "authkey"],
123
+ },
124
+ {
125
+ name: "getAvailableNews",
126
+ file: "getAvailableNews",
127
+ function: "getAvailableNews",
128
+ memorySize: 128,
129
+ timeout: 10,
130
+ path: "content/get",
131
+ method: "get",
132
+ headers: ["Content-Type", "authkey"],
133
+ },
134
+ {
135
+ name: "getPublishedEntries",
136
+ file: "getPublishedEntries",
137
+ function: "getPublishedEntries",
138
+ memorySize: 128,
139
+ timeout: 10,
140
+ path: "content/specific",
141
+ method: "get",
142
+ headers: ["Content-Type", "authkey"],
143
+ },
144
+ {
145
+ name: "getPublishedAvailableNews",
146
+ file: "getPublishedAvailableNews",
147
+ function: "getPublishedAvailableNews",
148
+ memorySize: 128,
149
+ timeout: 10,
150
+ path: "content/published",
151
+ method: "get",
152
+ headers: ["Content-Type", "authkey"],
153
+ },
154
+ {
155
+ name: "deleteNewsletterEntry",
156
+ file: "deleteNewsletterEntry",
157
+ function: "deleteNewsletterEntry",
158
+ memorySize: 128,
159
+ timeout: 10,
160
+ path: "remove",
161
+ method: "post",
162
+ headers: ["Content-Type", "authkey"],
163
+ },
164
+ {
165
+ name: "hasNewsletterAccess",
166
+ file: "hasNewsletterAccess",
167
+ function: "hasNewsletterAccess",
168
+ memorySize: 128,
169
+ timeout: 10,
170
+ path: "access",
171
+ method: "get",
172
+ headers: ["Content-Type", "authkey"],
173
+ },
174
+ {
175
+ name: "getNewsletterSubmissions",
176
+ file: "getNewsletterSubmissions",
177
+ function: "getNewsletterSubmissions",
178
+ memorySize: 128,
179
+ timeout: 10,
180
+ path: "submissions/get",
181
+ method: "get",
182
+ headers: ["Content-Type", "authkey"],
183
+ },
184
+ {
185
+ name: "getNewsletterSubmission",
186
+ file: "getNewsletterSubmission",
187
+ function: "getNewsletterSubmission",
188
+ memorySize: 128,
189
+ timeout: 10,
190
+ path: "submissions/get/{id}",
191
+ method: "get",
192
+ headers: ["Content-Type", "authkey"],
193
+ },
194
+ {
195
+ name: "handleNewsletterSubmission",
196
+ file: "handleNewsletterSubmission",
197
+ function: "handleNewsletterSubmission",
198
+ memorySize: 128,
199
+ timeout: 10,
200
+ path: "submissions/handle",
201
+ method: "post",
202
+ headers: ["Content-Type", "authkey"],
203
+ },
204
+ {
205
+ name: "getSubmissionCount",
206
+ file: "getSubmissionCount",
207
+ function: "getSubmissionCount",
208
+ memorySize: 128,
209
+ timeout: 10,
210
+ path: "submissions/count",
211
+ method: "get",
212
+ headers: ["Content-Type", "authkey"],
213
+ },
214
+ {
215
+ name: "getTaggedNews",
216
+ file: "getTaggedNews",
217
+ function: "getTaggedNews",
218
+ memorySize: 128,
219
+ timeout: 10,
220
+ path: "tagged/get",
221
+ method: "get",
222
+ headers: ["Content-Type", "authkey"],
223
+ },
224
+ ],
225
+ triggers: [
226
+ {
227
+ name: "newsletterChanged",
228
+ file: "newsletterChanged",
229
+ function: "newsletterChanged",
230
+ memorySize: 2048,
231
+ timeout: 30,
232
+ table: values.tableKeyNewsletterEntries,
233
+ },
234
+ ],
235
+ schedules: [
236
+ {
237
+ name: "watchNewsletter",
238
+ file: "watchNewsletter",
239
+ function: "watchNewsletter",
240
+ memorySize: "2048",
241
+ timeout: "300",
242
+ rate: "1/5 * * * ? *",
243
+ },
244
+ ],
245
+ tables: [
246
+ {
247
+ key: values.tableKeyNewsletterEntries,
248
+ name: values.tableNameNewsletterEntries,
249
+ attributes: [
250
+ { name: "RowId", type: "S" },
251
+ { name: "Site", type: "S" },
252
+ { name: "UnixTimestampReverse", type: "N" },
253
+ { name: "FeaturedExpiry", type: "N" },
254
+ { name: "SourceId", type: "S" },
255
+ { name: "UnsentNotification", type: "S" },
256
+ { name: "UnixTimestamp", type: "N" },
257
+ ],
258
+ id: "RowId",
259
+ indexes: [
260
+ {
261
+ name: "NewsletterEntriesSiteTimestampIndex",
262
+ keys: [
263
+ { name: "Site", type: "HASH" },
264
+ { name: "UnixTimestampReverse", type: "RANGE" },
265
+ ],
266
+ },
267
+ {
268
+ name: "NewsletterEntriesSiteFeaturedExpiryIndex",
269
+ keys: [
270
+ { name: "Site", type: "HASH" },
271
+ { name: "FeaturedExpiry", type: "RANGE" },
272
+ ],
273
+ },
274
+ {
275
+ name: "NewsletterEntriesSiteSourceIdIndex",
276
+ keys: [
277
+ { name: "Site", type: "HASH" },
278
+ { name: "SourceId", type: "RANGE" },
279
+ ],
280
+ },
281
+ {
282
+ name: "NewsletterEntriesUnsentNotiIndex",
283
+ keys: [
284
+ { name: "UnsentNotification", type: "HASH" },
285
+ { name: "UnixTimestamp", type: "RANGE" },
286
+ ],
287
+ },
288
+ ],
289
+ },
290
+ {
291
+ key: values.tableKeyNewsletterSubmissions,
292
+ name: values.tableNameNewsletterSubmissions,
293
+ attributes: [
294
+ { name: "RowId", type: "S" },
295
+ { name: "Site", type: "S" },
296
+ { name: "UnixTimestampReverse", type: "N" },
297
+ ],
298
+ id: "RowId",
299
+ indexes: [
300
+ {
301
+ name: "NewsletterSubmissionsSiteTimestampIndex",
302
+ keys: [
303
+ { name: "Site", type: "HASH" },
304
+ { name: "UnixTimestampReverse", type: "RANGE" },
305
+ ],
306
+ },
307
+ ],
308
+ },
309
+ {
310
+ key: values.tableKeyNewsletterUserEntries,
311
+ name: values.tableNameNewsletterUserEntries,
312
+ attributes: [
313
+ { name: "RowId", type: "S" },
314
+ { name: "UserId", type: "S" },
315
+ { name: "UnixTimestampReverse", type: "N" },
316
+ ],
317
+ id: "RowId",
318
+ indexes: [
319
+ {
320
+ name: "NewsletterUserEntriesUserIdTimestampIndex",
321
+ keys: [
322
+ { name: "UserId", type: "HASH" },
323
+ { name: "UnixTimestampReverse", type: "RANGE" },
324
+ ],
325
+ },
326
+ ],
327
+ },
328
+ ],
329
+ };
@@ -1,10 +1,10 @@
1
1
  const values = {
2
2
  entityKey: "newsTest",
3
3
  serviceKey: "newsletterTest",
4
+ updateKey: "newsTest",
4
5
  tableKeyNewsletterEntries: "NewsletterEntriesTest",
5
6
  tableKeyNewsletterSubmissions: "NewsletterSubmissionsTest",
6
7
  tableKeyNewsletterUserEntries: "NewsletterUserEntriesTest",
7
- tableKeyNewsletterEntries: "NewsletterEntriesTest",
8
8
  tableNameNewsletterEntries: "newsletterentriesTest",
9
9
  tableNameNewsletterSubmissions: "newslettersubmissionsTest",
10
10
  tableNameNewsletterUserEntries: "newsletteruserentriesTest",
@@ -19,6 +19,9 @@ const values = {
19
19
  notificationRejectNewsSubmission: "RejectNewsSubmissionTest",
20
20
  notificationNewsletterPublished: "NewsletterPublishedTest",
21
21
  routeEntityPath: "/newsTest/article/:id",
22
+ textNewNewsletterSubmission: "New Newsletter Test Submission",
23
+ textHasSubmittedANewNewsletterPost:
24
+ "has submitted a new newsletter test post for review.",
22
25
  };
23
26
  exports.values = values;
24
27
 
@@ -0,0 +1,329 @@
1
+ const values = {
2
+ entityKey: "newsTraining",
3
+ serviceKey: "newsletterTraining",
4
+ updateKey: "newsTraining",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesTraining",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsTraining",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesTraining",
8
+ tableNameNewsletterEntries: "newsletterentriesTraining",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsTraining",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesTraining",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailTraining",
12
+ permissionNewsletter: "newsletterTraining",
13
+ permissionNewsletterSubmit: "newsletterSubmitTraining",
14
+ activityAddNewsSubmission: "AddNewsSubmissionTraining",
15
+ activityAddNews: "AddNewsTraining",
16
+ activityDeleteNews: "DeleteNewsTraining",
17
+ activityEditNews: "EditNewsTraining",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionTraining",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionTraining",
20
+ notificationNewsletterPublished: "NewsletterPublishedTraining",
21
+ routeEntityPath: "/newsTraining/article/:id",
22
+ textNewNewsletterSubmission: "Training Submission",
23
+ textHasSubmittedANewNewsletterPost:
24
+ "has submitted a new training for review.",
25
+ };
26
+ exports.values = values;
27
+
28
+ exports.permissions = [
29
+ values.permissionNewsletter,
30
+ values.permissionNewsletterSubmit,
31
+ ];
32
+
33
+ exports.entity = {
34
+ key: values.entityKey,
35
+ permission: values.permissionNewsletter,
36
+ table: values.tableNameNewsletterEntries,
37
+ id: "RowId",
38
+ path: values.routeEntityPath,
39
+ };
40
+
41
+ exports.serverless = {
42
+ name: values.serviceKey,
43
+ apis: [
44
+ {
45
+ name: "addNewsletterEntry",
46
+ file: "addNewsletterEntry",
47
+ function: "addNewsletterEntry",
48
+ memorySize: 1024,
49
+ timeout: 30,
50
+ path: "add",
51
+ method: "post",
52
+ headers: ["Content-Type", "authkey"],
53
+ },
54
+ {
55
+ name: "editNewsletterEntry",
56
+ file: "editNewsletterEntry",
57
+ function: "editNewsletterEntry",
58
+ memorySize: 128,
59
+ timeout: 10,
60
+ path: "edit",
61
+ method: "post",
62
+ headers: ["Content-Type", "authkey"],
63
+ },
64
+ {
65
+ name: "editNewsletterSubmission",
66
+ file: "editNewsletterSubmission",
67
+ function: "editNewsletterSubmission",
68
+ memorySize: 128,
69
+ timeout: 10,
70
+ path: "editSubmission",
71
+ method: "post",
72
+ headers: ["Content-Type", "authkey"],
73
+ },
74
+ {
75
+ name: "getNewsletterEntry",
76
+ file: "getNewsletterEntry",
77
+ function: "getNewsletterEntry",
78
+ memorySize: 128,
79
+ timeout: 10,
80
+ path: "get/{id}",
81
+ method: "get",
82
+ headers: ["Content-Type", "authkey"],
83
+ },
84
+ {
85
+ name: "getNewsletterEntries",
86
+ file: "getNewsletterEntries",
87
+ function: "getNewsletterEntries",
88
+ memorySize: 1024,
89
+ timeout: 30,
90
+ path: "get",
91
+ method: "get",
92
+ headers: ["Content-Type", "authkey"],
93
+ },
94
+ {
95
+ name: "getFeaturedNewsletterEntries",
96
+ file: "getFeaturedNewsletterEntries",
97
+ function: "getFeaturedNewsletterEntries",
98
+ memorySize: 128,
99
+ timeout: 10,
100
+ path: "getFeatured",
101
+ method: "get",
102
+ headers: ["Content-Type", "authkey"],
103
+ },
104
+ {
105
+ name: "getRecentNewsletterEntries",
106
+ file: "getRecentNewsletterEntries",
107
+ function: "getRecentNewsletterEntries",
108
+ memorySize: 128,
109
+ timeout: 10,
110
+ path: "recent",
111
+ method: "get",
112
+ headers: ["Content-Type", "authkey"],
113
+ },
114
+ {
115
+ name: "searchAvailableNews",
116
+ file: "searchAvailableNews",
117
+ function: "searchAvailableNews",
118
+ memorySize: 128,
119
+ timeout: 10,
120
+ path: "content/search",
121
+ method: "get",
122
+ headers: ["Content-Type", "authkey"],
123
+ },
124
+ {
125
+ name: "getAvailableNews",
126
+ file: "getAvailableNews",
127
+ function: "getAvailableNews",
128
+ memorySize: 128,
129
+ timeout: 10,
130
+ path: "content/get",
131
+ method: "get",
132
+ headers: ["Content-Type", "authkey"],
133
+ },
134
+ {
135
+ name: "getPublishedEntries",
136
+ file: "getPublishedEntries",
137
+ function: "getPublishedEntries",
138
+ memorySize: 128,
139
+ timeout: 10,
140
+ path: "content/specific",
141
+ method: "get",
142
+ headers: ["Content-Type", "authkey"],
143
+ },
144
+ {
145
+ name: "getPublishedAvailableNews",
146
+ file: "getPublishedAvailableNews",
147
+ function: "getPublishedAvailableNews",
148
+ memorySize: 128,
149
+ timeout: 10,
150
+ path: "content/published",
151
+ method: "get",
152
+ headers: ["Content-Type", "authkey"],
153
+ },
154
+ {
155
+ name: "deleteNewsletterEntry",
156
+ file: "deleteNewsletterEntry",
157
+ function: "deleteNewsletterEntry",
158
+ memorySize: 128,
159
+ timeout: 10,
160
+ path: "remove",
161
+ method: "post",
162
+ headers: ["Content-Type", "authkey"],
163
+ },
164
+ {
165
+ name: "hasNewsletterAccess",
166
+ file: "hasNewsletterAccess",
167
+ function: "hasNewsletterAccess",
168
+ memorySize: 128,
169
+ timeout: 10,
170
+ path: "access",
171
+ method: "get",
172
+ headers: ["Content-Type", "authkey"],
173
+ },
174
+ {
175
+ name: "getNewsletterSubmissions",
176
+ file: "getNewsletterSubmissions",
177
+ function: "getNewsletterSubmissions",
178
+ memorySize: 128,
179
+ timeout: 10,
180
+ path: "submissions/get",
181
+ method: "get",
182
+ headers: ["Content-Type", "authkey"],
183
+ },
184
+ {
185
+ name: "getNewsletterSubmission",
186
+ file: "getNewsletterSubmission",
187
+ function: "getNewsletterSubmission",
188
+ memorySize: 128,
189
+ timeout: 10,
190
+ path: "submissions/get/{id}",
191
+ method: "get",
192
+ headers: ["Content-Type", "authkey"],
193
+ },
194
+ {
195
+ name: "handleNewsletterSubmission",
196
+ file: "handleNewsletterSubmission",
197
+ function: "handleNewsletterSubmission",
198
+ memorySize: 128,
199
+ timeout: 10,
200
+ path: "submissions/handle",
201
+ method: "post",
202
+ headers: ["Content-Type", "authkey"],
203
+ },
204
+ {
205
+ name: "getSubmissionCount",
206
+ file: "getSubmissionCount",
207
+ function: "getSubmissionCount",
208
+ memorySize: 128,
209
+ timeout: 10,
210
+ path: "submissions/count",
211
+ method: "get",
212
+ headers: ["Content-Type", "authkey"],
213
+ },
214
+ {
215
+ name: "getTaggedNews",
216
+ file: "getTaggedNews",
217
+ function: "getTaggedNews",
218
+ memorySize: 128,
219
+ timeout: 10,
220
+ path: "tagged/get",
221
+ method: "get",
222
+ headers: ["Content-Type", "authkey"],
223
+ },
224
+ ],
225
+ triggers: [
226
+ {
227
+ name: "newsletterChanged",
228
+ file: "newsletterChanged",
229
+ function: "newsletterChanged",
230
+ memorySize: 2048,
231
+ timeout: 30,
232
+ table: values.tableKeyNewsletterEntries,
233
+ },
234
+ ],
235
+ schedules: [
236
+ {
237
+ name: "watchNewsletter",
238
+ file: "watchNewsletter",
239
+ function: "watchNewsletter",
240
+ memorySize: "2048",
241
+ timeout: "300",
242
+ rate: "1/5 * * * ? *",
243
+ },
244
+ ],
245
+ tables: [
246
+ {
247
+ key: values.tableKeyNewsletterEntries,
248
+ name: values.tableNameNewsletterEntries,
249
+ attributes: [
250
+ { name: "RowId", type: "S" },
251
+ { name: "Site", type: "S" },
252
+ { name: "UnixTimestampReverse", type: "N" },
253
+ { name: "FeaturedExpiry", type: "N" },
254
+ { name: "SourceId", type: "S" },
255
+ { name: "UnsentNotification", type: "S" },
256
+ { name: "UnixTimestamp", type: "N" },
257
+ ],
258
+ id: "RowId",
259
+ indexes: [
260
+ {
261
+ name: "NewsletterEntriesSiteTimestampIndex",
262
+ keys: [
263
+ { name: "Site", type: "HASH" },
264
+ { name: "UnixTimestampReverse", type: "RANGE" },
265
+ ],
266
+ },
267
+ {
268
+ name: "NewsletterEntriesSiteFeaturedExpiryIndex",
269
+ keys: [
270
+ { name: "Site", type: "HASH" },
271
+ { name: "FeaturedExpiry", type: "RANGE" },
272
+ ],
273
+ },
274
+ {
275
+ name: "NewsletterEntriesSiteSourceIdIndex",
276
+ keys: [
277
+ { name: "Site", type: "HASH" },
278
+ { name: "SourceId", type: "RANGE" },
279
+ ],
280
+ },
281
+ {
282
+ name: "NewsletterEntriesUnsentNotiIndex",
283
+ keys: [
284
+ { name: "UnsentNotification", type: "HASH" },
285
+ { name: "UnixTimestamp", type: "RANGE" },
286
+ ],
287
+ },
288
+ ],
289
+ },
290
+ {
291
+ key: values.tableKeyNewsletterSubmissions,
292
+ name: values.tableNameNewsletterSubmissions,
293
+ attributes: [
294
+ { name: "RowId", type: "S" },
295
+ { name: "Site", type: "S" },
296
+ { name: "UnixTimestampReverse", type: "N" },
297
+ ],
298
+ id: "RowId",
299
+ indexes: [
300
+ {
301
+ name: "NewsletterSubmissionsSiteTimestampIndex",
302
+ keys: [
303
+ { name: "Site", type: "HASH" },
304
+ { name: "UnixTimestampReverse", type: "RANGE" },
305
+ ],
306
+ },
307
+ ],
308
+ },
309
+ {
310
+ key: values.tableKeyNewsletterUserEntries,
311
+ name: values.tableNameNewsletterUserEntries,
312
+ attributes: [
313
+ { name: "RowId", type: "S" },
314
+ { name: "UserId", type: "S" },
315
+ { name: "UnixTimestampReverse", type: "N" },
316
+ ],
317
+ id: "RowId",
318
+ indexes: [
319
+ {
320
+ name: "NewsletterUserEntriesUserIdTimestampIndex",
321
+ keys: [
322
+ { name: "UserId", type: "HASH" },
323
+ { name: "UnixTimestampReverse", type: "RANGE" },
324
+ ],
325
+ },
326
+ ],
327
+ },
328
+ ],
329
+ };
@@ -176,6 +176,6 @@ module.exports.newsletterChanged = (event, context, callback) => {
176
176
  site = previousData.Site;
177
177
  }
178
178
 
179
- logUpdate(site, values.entityKey);
179
+ logUpdate(site, values.updateKey);
180
180
  });
181
181
  };
package/package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "name": "@plusscommunities/pluss-newsletter-aws",
3
- "version": "1.2.3",
2
+ "name": "@plusscommunities/pluss-newsletter-aws-sharing",
3
+ "version": "1.2.7",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-newsletter-aws",
3
- "version": "1.2.3",
3
+ "version": "1.2.7",
4
4
  "description": "Extension package to enable newsletter on Pluss Communities Platform",
5
5
  "scripts": {
6
6
  "gc": "node ../../tools/gc ./",
@@ -14,7 +14,9 @@
14
14
  "upload:cp": "npm run core && npm run patch && npm run upload",
15
15
  "copy:add": "run(){ ext=${1:-default}; test -f feature.config.$ext.js || cp feature.config.default.js feature.config.$ext.js; }; run",
16
16
  "copy:get": "echo $npm_package_name",
17
- "copy:set": "run(){ target='\\@plusscommunities\\/pluss-newsletter-aws'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f feature.config.$ext.js && cp -f feature.config.$ext.js feature.config.js; sed -i '' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run"
17
+ "copy:set": "run(){ target='\\@plusscommunities\\/pluss-newsletter-aws'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f feature.config.$ext.js && cp -f feature.config.$ext.js feature.config.js; sed -i '' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
18
+ "copy:deploy": "for file in `ls ./feature.config.*.js`; do dup=`echo $file | sed 's/.*feature\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run deploy; done; npm run copy:set; npm run gs;",
19
+ "copy:upload": "npm run patch; for file in `ls ./feature.config.*.js`; do dup=`echo $file | sed 's/.*feature\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run upload; done; npm run copy:set;"
18
20
  },
19
21
  "author": "Phillip Suh",
20
22
  "license": "ISC",