@yellowpanther/shared 1.3.1 → 1.3.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yellowpanther/shared",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -20,6 +20,7 @@
20
20
  "./redis/redisClient": "./src/redis/redisClient.js",
21
21
  "./queue/compressionQueue": "./src/queue/compressionQueue.js",
22
22
  "./queue/newsTranslationQueue": "./src/queue/newsTranslationQueue.js",
23
+ "./queue/addUserPointsQueue": "./src/queue/addUserPointsQueue.js",
23
24
  "./queue/newsTranslateQueue": "./src/queue/newsTranslateQueue.js",
24
25
  "./queue/newsPublishQueue": "./src/queue/newsPublishQueue.js",
25
26
  "./queue/articlePublishQueue": "./src/queue/articlePublishQueue.js",
@@ -28,12 +29,13 @@
28
29
  "./queue/imagePublishQueue": "./src/queue/imagePublishQueue.js",
29
30
  "./queue/imageAlbumPublishQueue": "./src/queue/imageAlbumPublishQueue.js",
30
31
  "./queue/pagePublishQueue": "./src/queue/pagePublishQueue.js",
31
- "./queue/shopPublishQueue": "./src/queue/shopPublishQueue.js",
32
32
  "./queue/productPublishQueue": "./src/queue/productPublishQueue.js",
33
33
  "./queue/quizPublishQueue": "./src/queue/quizPublishQueue.js",
34
34
  "./queue/predictPublishQueue": "./src/queue/predictPublishQueue.js",
35
35
  "./queue/queueRegistry": "./src/queue/queueRegistry.js",
36
+ "./queue/shopPublishQueue": "./src/queue/shopPublishQueue.js",
36
37
  "./lang/translationHelper": "./src/lang/translationHelper.js",
38
+ "./queue/pageTranslationQueue": "./src/queue/pageTranslationQueue.js",
37
39
  "./*": "./src/*"
38
40
  },
39
41
  "scripts": {
@@ -42,6 +44,7 @@
42
44
  },
43
45
  "license": "MIT",
44
46
  "dependencies": {
47
+ "@yellowpanther/shared": "^1.3.2",
45
48
  "dotenv": "^17.2.2",
46
49
  "joi": "^18.0.1"
47
50
  }
package/src/index.js CHANGED
@@ -21,6 +21,8 @@ module.exports = {
21
21
  .addArticlePublishJob,
22
22
  addVideoPublishJob: require("./queue/videoPublishQueue").addVideoPublishJob,
23
23
  addImagePublishJob: require("./queue/imagePublishQueue").addImagePublishJob,
24
+ pageTranslateQueue: require('./queue/pageTranslationQueue'),
25
+ addPageTranslationJob: require('./queue/pageTranslationQueue').addPageTranslationJob,
24
26
  addPagePublishJob: require("./queue/pagePublishQueue").addPagePublishJob,
25
27
  addProductPublishJob: require("./queue/productPublishQueue")
26
28
  .addProductPublishJob,
@@ -30,5 +32,6 @@ module.exports = {
30
32
  addImageAlbumPublishJob: require("./queue/imageAlbumPublishQueue")
31
33
  .addImageAlbumPublishJob,
32
34
  addEventPublishJob: require("./queue/eventPublishQueue").addEventPublishJob,
35
+ addUserPointsJob: require("./queue/addUserPointsQueue").addUserPointsJob,
33
36
  addShopPublishJob: require("./queue/shopPublishQueue").addShopPublishJob,
34
37
  };
@@ -0,0 +1,49 @@
1
+
2
+ const { Queue } = require("bullmq");
3
+ const redisClient = require("../redis/redisClient");
4
+
5
+ const DEBUG = String(process.env.DEBUG_LOGGER || "").trim() === "1";
6
+
7
+ const addUserPointsQueue = new Queue("addUserPointsQueue", {
8
+ connection: redisClient,
9
+ defaultJobOptions: {
10
+ attempts: 5,
11
+ backoff: { type: "exponential", delay: 2000 },
12
+ removeOnComplete: 500,
13
+ removeOnFail: 500,
14
+ },
15
+ });
16
+
17
+ function sanitizeId(str) {
18
+ return str.replace(/[:.]/g, "-");
19
+ }
20
+
21
+ function stableJobId(option_id) {
22
+ return sanitizeId(`addUserPointsQueue:${option_id}`);
23
+ }
24
+
25
+ function versionedJobId(option_id) {
26
+ return sanitizeId(`addUserPoints:${option_id}`);
27
+ }
28
+
29
+ async function addUserPointsJob(correctOption, useStableId = false){
30
+ // const jobId = useStableId
31
+ // ? stableJobId(correctOption.id)
32
+ // : versionedJobId(correctOption.id);
33
+
34
+ const job = await addUserPointsQueue.add(
35
+ "addUserPointsQueue",
36
+ { option_id: correctOption.id },
37
+ // { jobId }
38
+ );
39
+
40
+ if (DEBUG) {
41
+ console.info("[addUserPointsQueue] upsert", {
42
+ option_id: correctOption.id,
43
+ // jobId,
44
+ });
45
+ }
46
+ return job;
47
+ }
48
+
49
+ module.exports = {addUserPointsJob}
@@ -0,0 +1,29 @@
1
+ const { Queue } = require('bullmq');
2
+ const redisClient = require('../redis/redisClient');
3
+
4
+ const pageTranslationQueue = new Queue('pageTranslationQueue', {
5
+ connection: redisClient,
6
+ defaultJobOptions: {
7
+ removeOnComplete: false,
8
+ removeOnFail: false,
9
+ attempts: 3,
10
+ backoff: {
11
+ type: 'exponential',
12
+ delay: 1000
13
+ }
14
+ }
15
+ });
16
+
17
+ /**
18
+ * Add a page translation job
19
+ * @param {Object} jobData
20
+ * @returns {Promise<void>}
21
+ */
22
+ async function addPageTranslationJob({ page_id, user_id, translation, blocks, heromedia }) {
23
+ await pageTranslationQueue.add('translatePage', { page_id, user_id, translation, blocks, heromedia });
24
+ }
25
+
26
+ module.exports = {
27
+ pageTranslationQueue,
28
+ addPageTranslationJob
29
+ };
@@ -68,7 +68,7 @@ async function findPendingShopJobs(shop_id) {
68
68
  const states = ["delayed", "waiting", "waiting-children", "active"];
69
69
  const jobs = await shopPublishQueue.getJobs(states);
70
70
  return jobs.filter(
71
- (j) => j?.name === "shop:publish" && j?.data?.shop_id === String(shop_id),
71
+ (j) => j?.name === "shop:publish" && j?.data?.shop_id === String(shop_id)
72
72
  );
73
73
  }
74
74
 
@@ -84,7 +84,7 @@ async function purgeExistingForShop(shop_id) {
84
84
  } catch (e) {
85
85
  if (DEBUG)
86
86
  console.warn(
87
- `[shopPublishQueue] failed to remove pending job ${j.id}: ${e.message}`,
87
+ `[shopPublishQueue] failed to remove pending job ${j.id}: ${e.message}`
88
88
  );
89
89
  }
90
90
  }
@@ -98,7 +98,7 @@ async function purgeExistingForShop(shop_id) {
98
98
  } catch (e) {
99
99
  if (DEBUG)
100
100
  console.warn(
101
- `[shopPublishQueue] failed to remove stable job ${last.id}: ${e.message}`,
101
+ `[shopPublishQueue] failed to remove stable job ${last.id}: ${e.message}`
102
102
  );
103
103
  }
104
104
  }
@@ -154,7 +154,7 @@ async function addShopPublishJob({
154
154
  const job = await shopPublishQueue.add(
155
155
  "shop:publish",
156
156
  { shop_id: String(shop_id), runAtUtc: runAtIso, extra },
157
- { jobId, delay: delayMs },
157
+ { jobId, delay: delayMs }
158
158
  );
159
159
 
160
160
  if (DEBUG) {