@plusscommunities/pluss-newsletter-aws-projects 1.3.5

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.
Files changed (70) hide show
  1. package/addNewsletterEntry.js +155 -0
  2. package/common/db/activity/publishActivity.js +3 -0
  3. package/common/db/common/deleteRef.js +3 -0
  4. package/common/db/common/editRef.js +3 -0
  5. package/common/db/common/getRef.js +3 -0
  6. package/common/db/common/indexQuery.js +3 -0
  7. package/common/db/common/indexQueryRecursive.js +3 -0
  8. package/common/db/common/updateAttribute.js +3 -0
  9. package/common/db/common/updateRef.js +3 -0
  10. package/common/db/linkedUsers/getLinkedTo.js +3 -0
  11. package/common/db/notifications/publishNotifications.js +3 -0
  12. package/common/db/strings/logUpdate.js +3 -0
  13. package/common/db/users/getUser.js +3 -0
  14. package/common/helper/audience/filterByAudienceType.js +3 -0
  15. package/common/helper/audience/filterOnAudienceType.js +3 -0
  16. package/common/helper/audience/getAudience.js +3 -0
  17. package/common/helper/audience/getMatchingAudienceTypes.js +3 -0
  18. package/common/helper/auth/getSessionUser.js +3 -0
  19. package/common/helper/auth/validateMasterAuth.js +3 -0
  20. package/common/helper/auth/validateSiteAccess.js +3 -0
  21. package/common/helper/auth/validateUserLoggedIn.js +3 -0
  22. package/common/helper/generateJsonResponse.js +3 -0
  23. package/common/helper/getUserPreview.js +3 -0
  24. package/common/helper/getUserPreviewFromHeader.js +3 -0
  25. package/common/helper/index.js +9 -0
  26. package/common/helper/opengraph/getOpenGraph.js +30 -0
  27. package/common/helper/requestToSource.js +3 -0
  28. package/common/helper/sendEmail.js +3 -0
  29. package/common/templates/newsletterSubmissionEmail.js +14 -0
  30. package/config/index.js +8 -0
  31. package/config.json +1 -0
  32. package/deleteNewsletterEntry.js +75 -0
  33. package/editNewsletterEntry.js +93 -0
  34. package/editNewsletterSubmission.js +65 -0
  35. package/feature.config.awards.js +340 -0
  36. package/feature.config.coaching.js +341 -0
  37. package/feature.config.curatedposts.js +341 -0
  38. package/feature.config.default.js +341 -0
  39. package/feature.config.headoffice.js +341 -0
  40. package/feature.config.js +340 -0
  41. package/feature.config.menu.js +340 -0
  42. package/feature.config.noticeboard.js +341 -0
  43. package/feature.config.personaldev.js +341 -0
  44. package/feature.config.products.js +340 -0
  45. package/feature.config.projects.js +340 -0
  46. package/feature.config.sales.js +340 -0
  47. package/feature.config.sharing.js +341 -0
  48. package/feature.config.training.js +341 -0
  49. package/getAvailableNews.js +52 -0
  50. package/getFeaturedNewsletterEntries.js +93 -0
  51. package/getNews.js +77 -0
  52. package/getNewsletterEntries.js +123 -0
  53. package/getNewsletterEntry.js +36 -0
  54. package/getNewsletterSubmission.js +33 -0
  55. package/getNewsletterSubmissions.js +56 -0
  56. package/getPublishedAvailableNews.js +47 -0
  57. package/getPublishedEntries.js +68 -0
  58. package/getRecentNewsletterEntries.js +107 -0
  59. package/getSubmissionCount.js +44 -0
  60. package/getTaggedNews.js +116 -0
  61. package/handleNewsletterSubmission.js +100 -0
  62. package/hasNewsletterAccess.js +56 -0
  63. package/helper/checkUpdateSource.js +70 -0
  64. package/initConfig.js +4 -0
  65. package/newsletterChanged.js +182 -0
  66. package/package-lock.json +3093 -0
  67. package/package.json +48 -0
  68. package/searchAvailableNews.js +64 -0
  69. package/serverless.yml +453 -0
  70. package/watchNewsletter.js +84 -0
@@ -0,0 +1,340 @@
1
+ const values = {
2
+ entityKey: "newsAwards",
3
+ serviceKey: "newsletterAwards",
4
+ updateKey: "newsAwards",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesAwards",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsAwards",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesAwards",
8
+ tableNameNewsletterEntries: "newsletterentriesAwards",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsAwards",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesAwards",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailAwards",
12
+ permissionNewsletter: "newsletterAwards",
13
+ permissionNewsletterSubmit: "newsletterSubmitAwards",
14
+ activityAddNewsSubmission: "AddNewsSubmissionAwards",
15
+ activityAddNews: "AddNewsAwards",
16
+ activityDeleteNews: "DeleteNewsAwards",
17
+ activityEditNews: "EditNewsAwards",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionAwards",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionAwards",
20
+ notificationNewsletterPublished: "NewsletterPublishedAwards",
21
+ routeEntityPath: "/newsAwards/article/:id",
22
+ screenNewsletterPost: "newsletterPostAwards",
23
+ textNewNewsletterSubmission: "New Award Submission",
24
+ textHasSubmittedANewNewsletterPost: "has submitted a new award 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
+ webPath: values.routeEntityPath,
39
+ appPath: values.screenNewsletterPost,
40
+ };
41
+
42
+ exports.serverless = {
43
+ name: values.serviceKey,
44
+ apis: [
45
+ {
46
+ name: "addNewsletterEntry",
47
+ file: "addNewsletterEntry",
48
+ function: "addNewsletterEntry",
49
+ memorySize: 1024,
50
+ timeout: 30,
51
+ path: "add",
52
+ method: "post",
53
+ headers: ["Content-Type", "authkey"],
54
+ },
55
+ {
56
+ name: "editNewsletterEntry",
57
+ file: "editNewsletterEntry",
58
+ function: "editNewsletterEntry",
59
+ memorySize: 128,
60
+ timeout: 10,
61
+ path: "edit",
62
+ method: "post",
63
+ headers: ["Content-Type", "authkey"],
64
+ },
65
+ {
66
+ name: "editNewsletterSubmission",
67
+ file: "editNewsletterSubmission",
68
+ function: "editNewsletterSubmission",
69
+ memorySize: 128,
70
+ timeout: 10,
71
+ path: "editSubmission",
72
+ method: "post",
73
+ headers: ["Content-Type", "authkey"],
74
+ },
75
+ {
76
+ name: "getNewsletterEntry",
77
+ file: "getNewsletterEntry",
78
+ function: "getNewsletterEntry",
79
+ memorySize: 128,
80
+ timeout: 10,
81
+ path: "get/{id}",
82
+ method: "get",
83
+ headers: ["Content-Type", "authkey"],
84
+ },
85
+ {
86
+ name: "getNews",
87
+ file: "getNews",
88
+ function: "getNews",
89
+ memorySize: 128,
90
+ timeout: 10,
91
+ path: "get2/{action}",
92
+ method: "get",
93
+ headers: ["Content-Type", "authkey"],
94
+ },
95
+ {
96
+ name: "getNewsletterEntries",
97
+ file: "getNewsletterEntries",
98
+ function: "getNewsletterEntries",
99
+ memorySize: 1024,
100
+ timeout: 30,
101
+ path: "get",
102
+ method: "get",
103
+ headers: ["Content-Type", "authkey"],
104
+ },
105
+ {
106
+ name: "getFeaturedNewsletterEntries",
107
+ file: "getFeaturedNewsletterEntries",
108
+ function: "getFeaturedNewsletterEntries",
109
+ memorySize: 128,
110
+ timeout: 10,
111
+ path: "getFeatured",
112
+ method: "get",
113
+ headers: ["Content-Type", "authkey"],
114
+ },
115
+ {
116
+ name: "getRecentNewsletterEntries",
117
+ file: "getRecentNewsletterEntries",
118
+ function: "getRecentNewsletterEntries",
119
+ memorySize: 128,
120
+ timeout: 10,
121
+ path: "recent",
122
+ method: "get",
123
+ headers: ["Content-Type", "authkey"],
124
+ },
125
+ {
126
+ name: "searchAvailableNews",
127
+ file: "searchAvailableNews",
128
+ function: "searchAvailableNews",
129
+ memorySize: 128,
130
+ timeout: 10,
131
+ path: "content/search",
132
+ method: "get",
133
+ headers: ["Content-Type", "authkey"],
134
+ },
135
+ {
136
+ name: "getAvailableNews",
137
+ file: "getAvailableNews",
138
+ function: "getAvailableNews",
139
+ memorySize: 128,
140
+ timeout: 10,
141
+ path: "content/get",
142
+ method: "get",
143
+ headers: ["Content-Type", "authkey"],
144
+ },
145
+ {
146
+ name: "getPublishedEntries",
147
+ file: "getPublishedEntries",
148
+ function: "getPublishedEntries",
149
+ memorySize: 128,
150
+ timeout: 10,
151
+ path: "content/specific",
152
+ method: "get",
153
+ headers: ["Content-Type", "authkey"],
154
+ },
155
+ {
156
+ name: "getPublishedAvailableNews",
157
+ file: "getPublishedAvailableNews",
158
+ function: "getPublishedAvailableNews",
159
+ memorySize: 128,
160
+ timeout: 10,
161
+ path: "content/published",
162
+ method: "get",
163
+ headers: ["Content-Type", "authkey"],
164
+ },
165
+ {
166
+ name: "deleteNewsletterEntry",
167
+ file: "deleteNewsletterEntry",
168
+ function: "deleteNewsletterEntry",
169
+ memorySize: 128,
170
+ timeout: 10,
171
+ path: "remove",
172
+ method: "post",
173
+ headers: ["Content-Type", "authkey"],
174
+ },
175
+ {
176
+ name: "hasNewsletterAccess",
177
+ file: "hasNewsletterAccess",
178
+ function: "hasNewsletterAccess",
179
+ memorySize: 128,
180
+ timeout: 10,
181
+ path: "access",
182
+ method: "get",
183
+ headers: ["Content-Type", "authkey"],
184
+ },
185
+ {
186
+ name: "getNewsletterSubmissions",
187
+ file: "getNewsletterSubmissions",
188
+ function: "getNewsletterSubmissions",
189
+ memorySize: 128,
190
+ timeout: 10,
191
+ path: "submissions/get",
192
+ method: "get",
193
+ headers: ["Content-Type", "authkey"],
194
+ },
195
+ {
196
+ name: "getNewsletterSubmission",
197
+ file: "getNewsletterSubmission",
198
+ function: "getNewsletterSubmission",
199
+ memorySize: 128,
200
+ timeout: 10,
201
+ path: "submissions/get/{id}",
202
+ method: "get",
203
+ headers: ["Content-Type", "authkey"],
204
+ },
205
+ {
206
+ name: "handleNewsletterSubmission",
207
+ file: "handleNewsletterSubmission",
208
+ function: "handleNewsletterSubmission",
209
+ memorySize: 128,
210
+ timeout: 10,
211
+ path: "submissions/handle",
212
+ method: "post",
213
+ headers: ["Content-Type", "authkey"],
214
+ },
215
+ {
216
+ name: "getSubmissionCount",
217
+ file: "getSubmissionCount",
218
+ function: "getSubmissionCount",
219
+ memorySize: 128,
220
+ timeout: 10,
221
+ path: "submissions/count",
222
+ method: "get",
223
+ headers: ["Content-Type", "authkey"],
224
+ },
225
+ {
226
+ name: "getTaggedNews",
227
+ file: "getTaggedNews",
228
+ function: "getTaggedNews",
229
+ memorySize: 128,
230
+ timeout: 10,
231
+ path: "tagged/get",
232
+ method: "get",
233
+ headers: ["Content-Type", "authkey"],
234
+ },
235
+ ],
236
+ triggers: [
237
+ {
238
+ name: "newsletterChanged",
239
+ file: "newsletterChanged",
240
+ function: "newsletterChanged",
241
+ memorySize: 2048,
242
+ timeout: 30,
243
+ table: values.tableKeyNewsletterEntries,
244
+ },
245
+ ],
246
+ schedules: [
247
+ {
248
+ name: "watchNewsletter",
249
+ file: "watchNewsletter",
250
+ function: "watchNewsletter",
251
+ memorySize: "2048",
252
+ timeout: "300",
253
+ rate: "1/5 * * * ? *",
254
+ },
255
+ ],
256
+ tables: [
257
+ {
258
+ key: values.tableKeyNewsletterEntries,
259
+ name: values.tableNameNewsletterEntries,
260
+ attributes: [
261
+ { name: "RowId", type: "S" },
262
+ { name: "Site", type: "S" },
263
+ { name: "UnixTimestampReverse", type: "N" },
264
+ { name: "FeaturedExpiry", type: "N" },
265
+ { name: "SourceId", type: "S" },
266
+ { name: "UnsentNotification", type: "S" },
267
+ { name: "UnixTimestamp", type: "N" },
268
+ ],
269
+ id: "RowId",
270
+ indexes: [
271
+ {
272
+ name: "NewsletterEntriesSiteTimestampIndex",
273
+ keys: [
274
+ { name: "Site", type: "HASH" },
275
+ { name: "UnixTimestampReverse", type: "RANGE" },
276
+ ],
277
+ },
278
+ {
279
+ name: "NewsletterEntriesSiteFeaturedExpiryIndex",
280
+ keys: [
281
+ { name: "Site", type: "HASH" },
282
+ { name: "FeaturedExpiry", type: "RANGE" },
283
+ ],
284
+ },
285
+ {
286
+ name: "NewsletterEntriesSiteSourceIdIndex",
287
+ keys: [
288
+ { name: "Site", type: "HASH" },
289
+ { name: "SourceId", type: "RANGE" },
290
+ ],
291
+ },
292
+ {
293
+ name: "NewsletterEntriesUnsentNotiIndex",
294
+ keys: [
295
+ { name: "UnsentNotification", type: "HASH" },
296
+ { name: "UnixTimestamp", type: "RANGE" },
297
+ ],
298
+ },
299
+ ],
300
+ },
301
+ {
302
+ key: values.tableKeyNewsletterSubmissions,
303
+ name: values.tableNameNewsletterSubmissions,
304
+ attributes: [
305
+ { name: "RowId", type: "S" },
306
+ { name: "Site", type: "S" },
307
+ { name: "UnixTimestampReverse", type: "N" },
308
+ ],
309
+ id: "RowId",
310
+ indexes: [
311
+ {
312
+ name: "NewsletterSubmissionsSiteTimestampIndex",
313
+ keys: [
314
+ { name: "Site", type: "HASH" },
315
+ { name: "UnixTimestampReverse", type: "RANGE" },
316
+ ],
317
+ },
318
+ ],
319
+ },
320
+ {
321
+ key: values.tableKeyNewsletterUserEntries,
322
+ name: values.tableNameNewsletterUserEntries,
323
+ attributes: [
324
+ { name: "RowId", type: "S" },
325
+ { name: "UserId", type: "S" },
326
+ { name: "UnixTimestampReverse", type: "N" },
327
+ ],
328
+ id: "RowId",
329
+ indexes: [
330
+ {
331
+ name: "NewsletterUserEntriesUserIdTimestampIndex",
332
+ keys: [
333
+ { name: "UserId", type: "HASH" },
334
+ { name: "UnixTimestampReverse", type: "RANGE" },
335
+ ],
336
+ },
337
+ ],
338
+ },
339
+ ],
340
+ };
@@ -0,0 +1,341 @@
1
+ const values = {
2
+ entityKey: "newsCoaching",
3
+ serviceKey: "newsletterCoaching",
4
+ updateKey: "newsCoaching",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesCoaching",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsCoaching",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesCoaching",
8
+ tableNameNewsletterEntries: "newsletterentriesCoaching",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsCoaching",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesCoaching",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailCoaching",
12
+ permissionNewsletter: "newsletterCoaching",
13
+ permissionNewsletterSubmit: "newsletterSubmitCoaching",
14
+ activityAddNewsSubmission: "AddNewsSubmissionCoaching",
15
+ activityAddNews: "AddNewsCoaching",
16
+ activityDeleteNews: "DeleteNewsCoaching",
17
+ activityEditNews: "EditNewsCoaching",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionCoaching",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionCoaching",
20
+ notificationNewsletterPublished: "NewsletterPublishedCoaching",
21
+ routeEntityPath: "/newsCoaching/article/:id",
22
+ screenNewsletterPost: "newsletterPostCoaching",
23
+ textNewNewsletterSubmission: "New Coaching Submission",
24
+ textHasSubmittedANewNewsletterPost:
25
+ "has submitted a new coaching for review.",
26
+ };
27
+ exports.values = values;
28
+
29
+ exports.permissions = [
30
+ values.permissionNewsletter,
31
+ values.permissionNewsletterSubmit,
32
+ ];
33
+
34
+ exports.entity = {
35
+ key: values.entityKey,
36
+ permission: values.permissionNewsletter,
37
+ table: values.tableNameNewsletterEntries,
38
+ id: "RowId",
39
+ webPath: values.routeEntityPath,
40
+ appPath: values.screenNewsletterPost,
41
+ };
42
+
43
+ exports.serverless = {
44
+ name: values.serviceKey,
45
+ apis: [
46
+ {
47
+ name: "addNewsletterEntry",
48
+ file: "addNewsletterEntry",
49
+ function: "addNewsletterEntry",
50
+ memorySize: 1024,
51
+ timeout: 30,
52
+ path: "add",
53
+ method: "post",
54
+ headers: ["Content-Type", "authkey"],
55
+ },
56
+ {
57
+ name: "editNewsletterEntry",
58
+ file: "editNewsletterEntry",
59
+ function: "editNewsletterEntry",
60
+ memorySize: 128,
61
+ timeout: 10,
62
+ path: "edit",
63
+ method: "post",
64
+ headers: ["Content-Type", "authkey"],
65
+ },
66
+ {
67
+ name: "editNewsletterSubmission",
68
+ file: "editNewsletterSubmission",
69
+ function: "editNewsletterSubmission",
70
+ memorySize: 128,
71
+ timeout: 10,
72
+ path: "editSubmission",
73
+ method: "post",
74
+ headers: ["Content-Type", "authkey"],
75
+ },
76
+ {
77
+ name: "getNewsletterEntry",
78
+ file: "getNewsletterEntry",
79
+ function: "getNewsletterEntry",
80
+ memorySize: 128,
81
+ timeout: 10,
82
+ path: "get/{id}",
83
+ method: "get",
84
+ headers: ["Content-Type", "authkey"],
85
+ },
86
+ {
87
+ name: "getNews",
88
+ file: "getNews",
89
+ function: "getNews",
90
+ memorySize: 128,
91
+ timeout: 10,
92
+ path: "get2/{action}",
93
+ method: "get",
94
+ headers: ["Content-Type", "authkey"],
95
+ },
96
+ {
97
+ name: "getNewsletterEntries",
98
+ file: "getNewsletterEntries",
99
+ function: "getNewsletterEntries",
100
+ memorySize: 1024,
101
+ timeout: 30,
102
+ path: "get",
103
+ method: "get",
104
+ headers: ["Content-Type", "authkey"],
105
+ },
106
+ {
107
+ name: "getFeaturedNewsletterEntries",
108
+ file: "getFeaturedNewsletterEntries",
109
+ function: "getFeaturedNewsletterEntries",
110
+ memorySize: 128,
111
+ timeout: 10,
112
+ path: "getFeatured",
113
+ method: "get",
114
+ headers: ["Content-Type", "authkey"],
115
+ },
116
+ {
117
+ name: "getRecentNewsletterEntries",
118
+ file: "getRecentNewsletterEntries",
119
+ function: "getRecentNewsletterEntries",
120
+ memorySize: 128,
121
+ timeout: 10,
122
+ path: "recent",
123
+ method: "get",
124
+ headers: ["Content-Type", "authkey"],
125
+ },
126
+ {
127
+ name: "searchAvailableNews",
128
+ file: "searchAvailableNews",
129
+ function: "searchAvailableNews",
130
+ memorySize: 128,
131
+ timeout: 10,
132
+ path: "content/search",
133
+ method: "get",
134
+ headers: ["Content-Type", "authkey"],
135
+ },
136
+ {
137
+ name: "getAvailableNews",
138
+ file: "getAvailableNews",
139
+ function: "getAvailableNews",
140
+ memorySize: 128,
141
+ timeout: 10,
142
+ path: "content/get",
143
+ method: "get",
144
+ headers: ["Content-Type", "authkey"],
145
+ },
146
+ {
147
+ name: "getPublishedEntries",
148
+ file: "getPublishedEntries",
149
+ function: "getPublishedEntries",
150
+ memorySize: 128,
151
+ timeout: 10,
152
+ path: "content/specific",
153
+ method: "get",
154
+ headers: ["Content-Type", "authkey"],
155
+ },
156
+ {
157
+ name: "getPublishedAvailableNews",
158
+ file: "getPublishedAvailableNews",
159
+ function: "getPublishedAvailableNews",
160
+ memorySize: 128,
161
+ timeout: 10,
162
+ path: "content/published",
163
+ method: "get",
164
+ headers: ["Content-Type", "authkey"],
165
+ },
166
+ {
167
+ name: "deleteNewsletterEntry",
168
+ file: "deleteNewsletterEntry",
169
+ function: "deleteNewsletterEntry",
170
+ memorySize: 128,
171
+ timeout: 10,
172
+ path: "remove",
173
+ method: "post",
174
+ headers: ["Content-Type", "authkey"],
175
+ },
176
+ {
177
+ name: "hasNewsletterAccess",
178
+ file: "hasNewsletterAccess",
179
+ function: "hasNewsletterAccess",
180
+ memorySize: 128,
181
+ timeout: 10,
182
+ path: "access",
183
+ method: "get",
184
+ headers: ["Content-Type", "authkey"],
185
+ },
186
+ {
187
+ name: "getNewsletterSubmissions",
188
+ file: "getNewsletterSubmissions",
189
+ function: "getNewsletterSubmissions",
190
+ memorySize: 128,
191
+ timeout: 10,
192
+ path: "submissions/get",
193
+ method: "get",
194
+ headers: ["Content-Type", "authkey"],
195
+ },
196
+ {
197
+ name: "getNewsletterSubmission",
198
+ file: "getNewsletterSubmission",
199
+ function: "getNewsletterSubmission",
200
+ memorySize: 128,
201
+ timeout: 10,
202
+ path: "submissions/get/{id}",
203
+ method: "get",
204
+ headers: ["Content-Type", "authkey"],
205
+ },
206
+ {
207
+ name: "handleNewsletterSubmission",
208
+ file: "handleNewsletterSubmission",
209
+ function: "handleNewsletterSubmission",
210
+ memorySize: 128,
211
+ timeout: 10,
212
+ path: "submissions/handle",
213
+ method: "post",
214
+ headers: ["Content-Type", "authkey"],
215
+ },
216
+ {
217
+ name: "getSubmissionCount",
218
+ file: "getSubmissionCount",
219
+ function: "getSubmissionCount",
220
+ memorySize: 128,
221
+ timeout: 10,
222
+ path: "submissions/count",
223
+ method: "get",
224
+ headers: ["Content-Type", "authkey"],
225
+ },
226
+ {
227
+ name: "getTaggedNews",
228
+ file: "getTaggedNews",
229
+ function: "getTaggedNews",
230
+ memorySize: 128,
231
+ timeout: 10,
232
+ path: "tagged/get",
233
+ method: "get",
234
+ headers: ["Content-Type", "authkey"],
235
+ },
236
+ ],
237
+ triggers: [
238
+ {
239
+ name: "newsletterChanged",
240
+ file: "newsletterChanged",
241
+ function: "newsletterChanged",
242
+ memorySize: 2048,
243
+ timeout: 30,
244
+ table: values.tableKeyNewsletterEntries,
245
+ },
246
+ ],
247
+ schedules: [
248
+ {
249
+ name: "watchNewsletter",
250
+ file: "watchNewsletter",
251
+ function: "watchNewsletter",
252
+ memorySize: "2048",
253
+ timeout: "300",
254
+ rate: "1/5 * * * ? *",
255
+ },
256
+ ],
257
+ tables: [
258
+ {
259
+ key: values.tableKeyNewsletterEntries,
260
+ name: values.tableNameNewsletterEntries,
261
+ attributes: [
262
+ { name: "RowId", type: "S" },
263
+ { name: "Site", type: "S" },
264
+ { name: "UnixTimestampReverse", type: "N" },
265
+ { name: "FeaturedExpiry", type: "N" },
266
+ { name: "SourceId", type: "S" },
267
+ { name: "UnsentNotification", type: "S" },
268
+ { name: "UnixTimestamp", type: "N" },
269
+ ],
270
+ id: "RowId",
271
+ indexes: [
272
+ {
273
+ name: "NewsletterEntriesSiteTimestampIndex",
274
+ keys: [
275
+ { name: "Site", type: "HASH" },
276
+ { name: "UnixTimestampReverse", type: "RANGE" },
277
+ ],
278
+ },
279
+ {
280
+ name: "NewsletterEntriesSiteFeaturedExpiryIndex",
281
+ keys: [
282
+ { name: "Site", type: "HASH" },
283
+ { name: "FeaturedExpiry", type: "RANGE" },
284
+ ],
285
+ },
286
+ {
287
+ name: "NewsletterEntriesSiteSourceIdIndex",
288
+ keys: [
289
+ { name: "Site", type: "HASH" },
290
+ { name: "SourceId", type: "RANGE" },
291
+ ],
292
+ },
293
+ {
294
+ name: "NewsletterEntriesUnsentNotiIndex",
295
+ keys: [
296
+ { name: "UnsentNotification", type: "HASH" },
297
+ { name: "UnixTimestamp", type: "RANGE" },
298
+ ],
299
+ },
300
+ ],
301
+ },
302
+ {
303
+ key: values.tableKeyNewsletterSubmissions,
304
+ name: values.tableNameNewsletterSubmissions,
305
+ attributes: [
306
+ { name: "RowId", type: "S" },
307
+ { name: "Site", type: "S" },
308
+ { name: "UnixTimestampReverse", type: "N" },
309
+ ],
310
+ id: "RowId",
311
+ indexes: [
312
+ {
313
+ name: "NewsletterSubmissionsSiteTimestampIndex",
314
+ keys: [
315
+ { name: "Site", type: "HASH" },
316
+ { name: "UnixTimestampReverse", type: "RANGE" },
317
+ ],
318
+ },
319
+ ],
320
+ },
321
+ {
322
+ key: values.tableKeyNewsletterUserEntries,
323
+ name: values.tableNameNewsletterUserEntries,
324
+ attributes: [
325
+ { name: "RowId", type: "S" },
326
+ { name: "UserId", type: "S" },
327
+ { name: "UnixTimestampReverse", type: "N" },
328
+ ],
329
+ id: "RowId",
330
+ indexes: [
331
+ {
332
+ name: "NewsletterUserEntriesUserIdTimestampIndex",
333
+ keys: [
334
+ { name: "UserId", type: "HASH" },
335
+ { name: "UnixTimestampReverse", type: "RANGE" },
336
+ ],
337
+ },
338
+ ],
339
+ },
340
+ ],
341
+ };