From e00f0382427362076c437a86b3fb327723866c06 Mon Sep 17 00:00:00 2001 From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de> Date: Fri, 24 Sep 2021 10:50:40 +0200 Subject: [PATCH] pick connection from pool before transaction --- functions/methods.ts | 81 +++++++++++++++++++++++--------------------- 1 file changed, 42 insertions(+), 39 deletions(-) diff --git a/functions/methods.ts b/functions/methods.ts index cebfcb21..79416aee 100644 --- a/functions/methods.ts +++ b/functions/methods.ts @@ -3,62 +3,65 @@ import dbconn = require('../config/dbconn') var methods = { // ===================== user db ===================== registerNewUser: function(data:any, callback:any) { - dbconn.user.beginTransaction(function(err:any) { // START TRANSACTION - if (err) { throw err } - // insert profile - dbconn.user.query('INSERT INTO user SET ?', data.profile, function (err:any, results:any, fields:any) { - if (err) { - return dbconn.user.rollback(function() { - throw err - }); - } - let newUserId:number = results.insertId - // set password - var credentialData:any = { - user_id: newUserId, - password: data.password - } - dbconn.user.query('INSERT INTO credential SET ?', credentialData, function (err:any, results:any, fields:any) { + dbconn.user.getConnection(function(err:any, thisconn){ + thisconn.beginTransaction(function(err:any) { // START TRANSACTION + if (err) { throw err } + // insert profile + thisconn.query('INSERT INTO user SET ?', data.profile, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { - throw err - }); + return thisconn.rollback(function() { + throw err + }); } - // set default user-project-role - var projectRoleData:any = { - project_id: 1, //M4_LAB - role_id: 2, // USER - user_id: newUserId + let newUserId:number = results.insertId + // set password + var credentialData:any = { + user_id: newUserId, + password: data.password } - dbconn.user.query('INSERT INTO user_project_role SET ?', projectRoleData, function (err:any, results:any, fields:any) { + thisconn.query('INSERT INTO credential SET ?', credentialData, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { + return thisconn.rollback(function() { throw err }); } - // MLAB-129: INSERT verification token - let verificationData:any = { - user_id: newUserId, - token: data.verificationToken + // set default user-project-role + var projectRoleData:any = { + project_id: 1, //M4_LAB + role_id: 2, // USER + user_id: newUserId } - dbconn.user.query('INSERT INTO verification SET ?', verificationData, function (err:any, results:any, fields:any) { + thisconn.query('INSERT INTO user_project_role SET ?', projectRoleData, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { + return thisconn.rollback(function() { throw err }); } - // COMMIT - dbconn.user.commit(function(err:any) { + // MLAB-129: INSERT verification token + let verificationData:any = { + user_id: newUserId, + token: data.verificationToken + } + thisconn.query('INSERT INTO verification SET ?', verificationData, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { + return thisconn.rollback(function() { throw err - }) + }); } + // COMMIT + thisconn.commit(function(err:any) { + if (err) { + return thisconn.rollback(function() { + throw err + }) + } + }) }) }) - }) + }); }); - }); + callback(err) + }); callback(err) }) }, @@ -208,4 +211,4 @@ var methods = { } }; -export = methods \ No newline at end of file +export = methods -- GitLab