Commit 858e980e authored by Kaustubh Murumkar's avatar Kaustubh Murumkar
Browse files

Add handling for txn

parent 90b3ae07
Branches
Tags
2 merge requests!252staging branch is merged into devbranch.,!246Transaction handle support added for call service.
Showing with 85 additions and 6 deletions
package routebuildermdl package routebuildermdl
import ( import (
"context"
"strings" "strings"
"time" "time"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/constantmdl" "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/constantmdl"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/dalmdl"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl" "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/errormdl"
"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/loggermdl" "corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/loggermdl"
...@@ -207,12 +209,12 @@ func CallServiceWithBranch(name, branch string, rs *gjson.Result, isRestricted b ...@@ -207,12 +209,12 @@ func CallServiceWithBranch(name, branch string, rs *gjson.Result, isRestricted b
} }
// CallServiceTXN - calls service with provided configuration, returns result and error from executed service // CallServiceTXN - calls service with provided configuration, returns result and error from executed service
func CallServiceTXN(name string, rs *gjson.Result, isRestricted bool, isRoleBased bool, p servicebuildermdl.Principal) (interface{}, *servicebuildermdl.AbstractBusinessLogicHolder, error) { func ABCallServiceHandler(name string, rs *gjson.Result, isRestricted bool, isRoleBased bool, p servicebuildermdl.Principal) (interface{}, *servicebuildermdl.AbstractBusinessLogicHolder, error) {
return CallServiceWithBranchHandleTXN(name, constantmdl.Branch_Main, rs, isRestricted, isRoleBased, p) return ABCallServiceHandlerWithBranch(name, constantmdl.Branch_Main, rs, isRestricted, isRoleBased, p)
} }
// CallServiceWithBranchHandleTXN - calls service of given branch with provided configuration, returns result and error from executed service and handles transaction // CallServiceWithBranchHandleTXN - calls service of given branch with provided configuration, returns result and error from executed service and handles transaction
func CallServiceWithBranchHandleTXN(name, branch string, rs *gjson.Result, isRestricted bool, isRoleBased bool, p servicebuildermdl.Principal) (interface{}, *servicebuildermdl.AbstractBusinessLogicHolder, error) { func ABCallServiceHandlerWithBranch(name, branch string, rs *gjson.Result, isRestricted bool, isRoleBased bool, p servicebuildermdl.Principal) (interface{}, *servicebuildermdl.AbstractBusinessLogicHolder, error) {
var found bool var found bool
var service interface{} var service interface{}
if strings.TrimSpace(branch) == "" { if strings.TrimSpace(branch) == "" {
...@@ -251,9 +253,86 @@ func CallServiceWithBranchHandleTXN(name, branch string, rs *gjson.Result, isRes ...@@ -251,9 +253,86 @@ func CallServiceWithBranchHandleTXN(name, branch string, rs *gjson.Result, isRes
serviceCache := tmpSvcCache serviceCache := tmpSvcCache
res, ab, err := serviceCache.Service(rs, p) res, ab, err := serviceCache.Service(rs, p)
if err != nil { if errormdl.CheckErr1(err) != nil {
loggermdl.LogError("Service execution failed for ", name, " : ", err) // Rollback
return nil, nil, err if ab.TransactionEnable {
switch ab.DatabaseType {
case dalmdl.MYSQL:
if ab.TXN != nil {
loggermdl.LogError("MYSQL Transaction Rollbacked")
err = ab.TXN.Rollback()
if err != nil {
loggermdl.LogError("Error while rollback")
return res, ab, errormdl.Wrap("Error while rollback")
}
}
case dalmdl.SQLSERVER:
if ab.SQLServerTXN != nil {
loggermdl.LogError("SQLSERVER Transaction Rollbacked")
err = ab.SQLServerTXN.Rollback()
if err != nil {
loggermdl.LogError("Error while rollback")
return res, ab, errormdl.Wrap("Error while rollback")
}
}
case dalmdl.GraphDB:
if ab.GraphDbTXN != nil {
loggermdl.LogError("GRAPHDB Transaction Rollbacked")
err = ab.GraphDbTXN.Discard(context.TODO())
if err != nil {
loggermdl.LogError("Error while rollback")
return res, ab, errormdl.Wrap("Error while rollback")
// responseDataObj.Error = err.Error()
// responseDataObj.ErrorCode = errormdl.GRAPHDBERROR
}
}
default:
loggermdl.LogError("Invalid database type while rollback transaction")
}
}
} else {
// Commit
switch ab.DatabaseType {
case dalmdl.MYSQL:
if ab.TXN != nil {
loggermdl.LogError("MYSQL Transaction Commited")
err = ab.TXN.Commit()
if err != nil {
loggermdl.LogError("Error while commit")
return res, ab, errormdl.Wrap("Error while commit")
}
}
case dalmdl.SQLSERVER:
if ab.SQLServerTXN != nil {
loggermdl.LogError("SQLSERVER Transaction Commited")
err = ab.SQLServerTXN.Commit()
if err != nil {
loggermdl.LogError("Error while commit")
return res, ab, errormdl.Wrap("Error while commit")
}
}
case dalmdl.GraphDB:
if ab.GraphDbTXN != nil {
loggermdl.LogError("GRAPHDB Transaction Commited")
err = ab.GraphDbTXN.Commit(context.TODO())
if err != nil {
loggermdl.LogError("Error while commit")
return res, ab, errormdl.Wrap("Error while commit")
// responseDataObj.Error = err.Error()
// responseDataObj.ErrorCode = errormdl.GRAPHDBERROR
}
}
default:
loggermdl.LogError("Invalid database type while commiting transaction")
}
} }
return res, ab, nil return res, ab, nil
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment