corebasic 1.0.79 → 1.0.80
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/libs/features.js +18 -9
- package/package.json +1 -1
package/libs/features.js
CHANGED
|
@@ -42,7 +42,13 @@ export const start = async (app, url, file) => {
|
|
|
42
42
|
try {
|
|
43
43
|
await feature.handler({...req, body: {...req.body, topic} }, res)
|
|
44
44
|
} catch (err) {
|
|
45
|
-
throw {status: 500, message: "Failed to
|
|
45
|
+
throw {status: 500, message: "Failed to GET feature", ...err}
|
|
46
|
+
}
|
|
47
|
+
} else if (method !== "get" && feature.bypass) {
|
|
48
|
+
try {
|
|
49
|
+
await feature.handler(topic, prepareMessage(req))
|
|
50
|
+
} catch (err) {
|
|
51
|
+
throw {status: 500, message: "Failed to POST feature", ...err}
|
|
46
52
|
}
|
|
47
53
|
} else
|
|
48
54
|
await commandAction(req, res, topic)
|
|
@@ -69,7 +75,7 @@ export const start = async (app, url, file) => {
|
|
|
69
75
|
Kafka.receive(`Features.${topic}`, async (topic, message) => {
|
|
70
76
|
|
|
71
77
|
const timer = ms => new Promise(res => setTimeout(res, ms)) // A promise that resolves after "ms" Milliseconds
|
|
72
|
-
topic = topic.replace(
|
|
78
|
+
topic = topic.replace(/^.*Features./,'')
|
|
73
79
|
while (true) {
|
|
74
80
|
try {
|
|
75
81
|
await Dip.update(`users.txns.${message.user}`, {_id: message.txn}, { $setOnInsert: { user: message.user, feature: message.feature, date: message.date, created: message.date, updated: message.date, status: "Queued" } }, {upsert: true}) // Can always update the status later
|
|
@@ -107,17 +113,20 @@ export const start = async (app, url, file) => {
|
|
|
107
113
|
try { await Messaging.start(app) } catch { console.log('Messaging failed to start. Maybe missing redis') }
|
|
108
114
|
}
|
|
109
115
|
|
|
110
|
-
|
|
111
|
-
let txn = req.body.txn ??
|
|
116
|
+
function prepareMessage(req) {
|
|
117
|
+
let txn = req.body.txn ?? Utils.uid()
|
|
112
118
|
let _id = req.body.data._id ?? txn
|
|
119
|
+
let {data, feature, app, user, client, version} = req.body
|
|
120
|
+
let params = req.params
|
|
121
|
+
return { data, params, feature, app, user, client, version, txn, id: _id, date: new Date().getTime() }
|
|
122
|
+
}
|
|
123
|
+
const commandAction = async (req, res, topic) => {
|
|
124
|
+
let message = prepareMessage(req)
|
|
113
125
|
try {
|
|
114
|
-
|
|
115
|
-
let params = req.params
|
|
116
|
-
await Kafka.send(`Features.${topic}`, { data, params, feature, app, user, client, version, txn, id: _id, date: new Date().getTime() }, user, { compression: Kafka.CompressionTypes.GZIP })
|
|
117
|
-
|
|
126
|
+
await Kafka.send(`Features.${topic}`, message, message.user, { compression: Kafka.CompressionTypes.GZIP })
|
|
118
127
|
} catch {
|
|
119
128
|
throw {status: 500, message: "Failed to queue the transaction"}
|
|
120
129
|
}
|
|
121
|
-
res.json({ data: { txn, success: true, status: "Queued" } })
|
|
130
|
+
res.json({ data: { txn: message.txn, success: true, status: "Queued" } })
|
|
122
131
|
}
|
|
123
132
|
|