@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: "newsProjects",
3
+ serviceKey: "newsletterProjects",
4
+ updateKey: "newsProjects",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesProjects",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsProjects",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesProjects",
8
+ tableNameNewsletterEntries: "newsletterentriesProjects",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsProjects",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesProjects",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailProjects",
12
+ permissionNewsletter: "newsletterProjects",
13
+ permissionNewsletterSubmit: "newsletterSubmitProjects",
14
+ activityAddNewsSubmission: "AddNewsSubmissionProjects",
15
+ activityAddNews: "AddNewsProjects",
16
+ activityDeleteNews: "DeleteNewsProjects",
17
+ activityEditNews: "EditNewsProjects",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionProjects",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionProjects",
20
+ notificationNewsletterPublished: "NewsletterPublishedProjects",
21
+ routeEntityPath: "/newsProjects/article/:id",
22
+ screenNewsletterPost: "newsletterPostProjects",
23
+ textNewNewsletterSubmission: "New Project Submission",
24
+ textHasSubmittedANewNewsletterPost: "has submitted a new project 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,340 @@
1
+ const values = {
2
+ entityKey: "newsSales",
3
+ serviceKey: "newsletterSales",
4
+ updateKey: "newsSales",
5
+ tableKeyNewsletterEntries: "NewsletterEntriesSales",
6
+ tableKeyNewsletterSubmissions: "NewsletterSubmissionsSales",
7
+ tableKeyNewsletterUserEntries: "NewsletterUserEntriesSales",
8
+ tableNameNewsletterEntries: "newsletterentriesSales",
9
+ tableNameNewsletterSubmissions: "newslettersubmissionsSales",
10
+ tableNameNewsletterUserEntries: "newsletteruserentriesSales",
11
+ stringPostfixSubmissionEmail: "newssubmissionemailSales",
12
+ permissionNewsletter: "newsletterSales",
13
+ permissionNewsletterSubmit: "newsletterSubmitSales",
14
+ activityAddNewsSubmission: "AddNewsSubmissionSales",
15
+ activityAddNews: "AddNewsSales",
16
+ activityDeleteNews: "DeleteNewsSales",
17
+ activityEditNews: "EditNewsSales",
18
+ notificationApproveNewsSubmission: "ApproveNewsSubmissionSales",
19
+ notificationRejectNewsSubmission: "RejectNewsSubmissionSales",
20
+ notificationNewsletterPublished: "NewsletterPublishedSales",
21
+ routeEntityPath: "/newsSales/article/:id",
22
+ screenNewsletterPost: "newsletterPostSales",
23
+ textNewNewsletterSubmission: "Sale Submission",
24
+ textHasSubmittedANewNewsletterPost: "has submitted a new sale 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
+ };