feat: new RollbackOnError method added for transactional db helper and integrated into auth service
This commit is contained in:
@@ -26,18 +26,19 @@ import (
|
|||||||
type DbHelperTransaction interface {
|
type DbHelperTransaction interface {
|
||||||
Commit() error
|
Commit() error
|
||||||
Rollback() error
|
Rollback() error
|
||||||
|
RollbackOnError(err error) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type DbHelper struct {
|
type DbHelper struct {
|
||||||
CTX context.Context
|
CTX context.Context
|
||||||
Queries Queries
|
Queries Queries
|
||||||
}
|
}
|
||||||
|
|
||||||
type dbHelperTransactionImpl struct {
|
type dbHelperTransactionImpl struct {
|
||||||
CTX context.Context
|
CTX context.Context
|
||||||
TXlessQueries Queries
|
TXlessQueries Queries
|
||||||
TX pgx.Tx
|
TX pgx.Tx
|
||||||
TXQueries Queries
|
TXQueries Queries
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDbHelper(dbContext DbContext) DbHelper {
|
func NewDbHelper(dbContext DbContext) DbHelper {
|
||||||
@@ -64,10 +65,10 @@ func NewDbHelperTransaction(dbContext DbContext) (DbHelperTransaction, *dbHelper
|
|||||||
txQueries := queries.WithTx(tx)
|
txQueries := queries.WithTx(tx)
|
||||||
|
|
||||||
obj := &dbHelperTransactionImpl{
|
obj := &dbHelperTransactionImpl{
|
||||||
CTX: ctx,
|
CTX: ctx,
|
||||||
TXlessQueries: *queries,
|
TXlessQueries: *queries,
|
||||||
TX: tx,
|
TX: tx,
|
||||||
TXQueries: *txQueries,
|
TXQueries: *txQueries,
|
||||||
}
|
}
|
||||||
|
|
||||||
return obj, obj, nil
|
return obj, obj, nil
|
||||||
@@ -98,3 +99,11 @@ func (d *dbHelperTransactionImpl) Rollback() error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RollbackOnError implements DbHelperTransaction.
|
||||||
|
func (d *dbHelperTransactionImpl) RollbackOnError(err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return d.Rollback()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ func (a *authServiceImpl) RegistrationBegin(request models.RegistrationBeginRequ
|
|||||||
var err error
|
var err error
|
||||||
|
|
||||||
helper, db, _ := database.NewDbHelperTransaction(a.dbctx)
|
helper, db, _ := database.NewDbHelperTransaction(a.dbctx)
|
||||||
defer helper.Rollback()
|
defer helper.RollbackOnError(err)
|
||||||
|
|
||||||
// TODO: check occupation with redis
|
// TODO: check occupation with redis
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ func (a *authServiceImpl) RegistrationComplete(request models.RegistrationComple
|
|||||||
var err error
|
var err error
|
||||||
|
|
||||||
helper, db, _ := database.NewDbHelperTransaction(a.dbctx)
|
helper, db, _ := database.NewDbHelperTransaction(a.dbctx)
|
||||||
defer helper.Rollback()
|
defer helper.RollbackOnError(err)
|
||||||
|
|
||||||
user, err = db.TXQueries.GetUserByUsername(db.CTX, request.Username)
|
user, err = db.TXQueries.GetUserByUsername(db.CTX, request.Username)
|
||||||
|
|
||||||
@@ -334,11 +334,10 @@ func (a *authServiceImpl) RegistrationComplete(request models.RegistrationComple
|
|||||||
func (a *authServiceImpl) Login(request models.LoginRequest) (*models.LoginResponse, error) {
|
func (a *authServiceImpl) Login(request models.LoginRequest) (*models.LoginResponse, error) {
|
||||||
var userRow database.GetValidUserByLoginCredentialsRow
|
var userRow database.GetValidUserByLoginCredentialsRow
|
||||||
var session database.Session
|
var session database.Session
|
||||||
|
var err error
|
||||||
|
|
||||||
helper, db, _ := database.NewDbHelperTransaction(a.dbctx)
|
helper, db, _ := database.NewDbHelperTransaction(a.dbctx)
|
||||||
defer helper.Rollback()
|
defer helper.RollbackOnError(err)
|
||||||
|
|
||||||
var err error
|
|
||||||
|
|
||||||
userRow, err = db.TXQueries.GetValidUserByLoginCredentials(db.CTX, database.GetValidUserByLoginCredentialsParams{
|
userRow, err = db.TXQueries.GetValidUserByLoginCredentials(db.CTX, database.GetValidUserByLoginCredentialsParams{
|
||||||
Username: request.Username,
|
Username: request.Username,
|
||||||
@@ -417,7 +416,7 @@ func (a *authServiceImpl) PasswordResetBegin(request models.PasswordResetBeginRe
|
|||||||
var err error
|
var err error
|
||||||
|
|
||||||
helper, db, err := database.NewDbHelperTransaction(a.dbctx)
|
helper, db, err := database.NewDbHelperTransaction(a.dbctx)
|
||||||
defer helper.Rollback()
|
defer helper.RollbackOnError(err)
|
||||||
|
|
||||||
ctx := context.TODO()
|
ctx := context.TODO()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user