From 991fb0ac1ab96f038b24337ef078e0277f5d84ed Mon Sep 17 00:00:00 2001 From: Emric Pichonnier Date: Mon, 22 May 2023 09:37:23 +0200 Subject: [PATCH 1/4] feat: transaction --- src/listeners/increment.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/listeners/increment.js b/src/listeners/increment.js index 19bdfce..bae235c 100644 --- a/src/listeners/increment.js +++ b/src/listeners/increment.js @@ -9,9 +9,12 @@ import { Counter } from "../classes/Counter.js"; * @param {import("@lenra/app-server").Api} api * @returns */ -export default async function(props, _event, api) { +export default async function (props, _event, api) { + let token = await axios.post(`${this.api.url}/app/transaction`, { headers: { Authorization: `Bearer ${api.token}` } }) + .then(resp => resp.data); let counter = await api.data.getDoc(Counter, props.id); counter.count += 1; - await api.data.updateDoc(counter); + await axios.put(`${this.api.url}/app/colls/counter/docs/${doc._id}`, doc, { headers: { Authorization: `Bearer ${token}` } }); + await axios.put(`${this.api.url}/app/transacation/abort`, { headers: { Authorization: `Bearer ${token}` } }); return {}; } \ No newline at end of file From f6d5168d9fcc02e7eacac416a26f733bf4bec93b Mon Sep 17 00:00:00 2001 From: Emric Pichonnier Date: Mon, 22 May 2023 14:29:46 +0200 Subject: [PATCH 2/4] feat: import axios --- src/listeners/increment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/listeners/increment.js b/src/listeners/increment.js index bae235c..db50901 100644 --- a/src/listeners/increment.js +++ b/src/listeners/increment.js @@ -1,5 +1,5 @@ 'use strict' - +import axios from "axios"; import { Counter } from "../classes/Counter.js"; /** From d8991440e2a720995a0f9b8f65865dcffcfca67a Mon Sep 17 00:00:00 2001 From: Emric Pichonnier Date: Mon, 22 May 2023 14:37:40 +0200 Subject: [PATCH 3/4] fix: api --- src/listeners/increment.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/listeners/increment.js b/src/listeners/increment.js index db50901..b22b05e 100644 --- a/src/listeners/increment.js +++ b/src/listeners/increment.js @@ -10,11 +10,11 @@ import { Counter } from "../classes/Counter.js"; * @returns */ export default async function (props, _event, api) { - let token = await axios.post(`${this.api.url}/app/transaction`, { headers: { Authorization: `Bearer ${api.token}` } }) + let token = await axios.post(`${api.url}/app/transaction`, { headers: { Authorization: `Bearer ${api.token}` } }) .then(resp => resp.data); let counter = await api.data.getDoc(Counter, props.id); counter.count += 1; - await axios.put(`${this.api.url}/app/colls/counter/docs/${doc._id}`, doc, { headers: { Authorization: `Bearer ${token}` } }); - await axios.put(`${this.api.url}/app/transacation/abort`, { headers: { Authorization: `Bearer ${token}` } }); + await axios.put(`${api.url}/app/colls/counter/docs/${doc._id}`, doc, { headers: { Authorization: `Bearer ${token}` } }); + await axios.put(`${api.url}/app/transacation/abort`, { headers: { Authorization: `Bearer ${token}` } }); return {}; } \ No newline at end of file From 29522c4ea7046237444d37e48835309ddb374549 Mon Sep 17 00:00:00 2001 From: Emric Pichonnier Date: Mon, 22 May 2023 17:08:14 +0200 Subject: [PATCH 4/4] feat: test transaction --- src/listeners/increment.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/listeners/increment.js b/src/listeners/increment.js index b22b05e..3e5d3d8 100644 --- a/src/listeners/increment.js +++ b/src/listeners/increment.js @@ -1,5 +1,5 @@ 'use strict' -import axios from "axios"; + import { Counter } from "../classes/Counter.js"; /** @@ -10,11 +10,10 @@ import { Counter } from "../classes/Counter.js"; * @returns */ export default async function (props, _event, api) { - let token = await axios.post(`${api.url}/app/transaction`, { headers: { Authorization: `Bearer ${api.token}` } }) - .then(resp => resp.data); let counter = await api.data.getDoc(Counter, props.id); counter.count += 1; - await axios.put(`${api.url}/app/colls/counter/docs/${doc._id}`, doc, { headers: { Authorization: `Bearer ${token}` } }); - await axios.put(`${api.url}/app/transacation/abort`, { headers: { Authorization: `Bearer ${token}` } }); + await api.data.startTransaction() + await api.data.updateDoc(counter, true); + await api.data.commitTransaction() return {}; } \ No newline at end of file