Skip to content

Commit a42b852

Browse files
committed
fix: 243 tx to InTx for account,tab,user
1 parent 37df787 commit a42b852

File tree

5 files changed

+46
-34
lines changed

5 files changed

+46
-34
lines changed

Diff for: modules/core/handlers/tab_handler.go

+15-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package handlers
22

33
import (
44
"context"
5+
"github.com/iota-uz/iota-sdk/pkg/composables"
56

67
"github.com/iota-uz/iota-sdk/modules/core/domain/aggregates/user"
78
"github.com/iota-uz/iota-sdk/modules/core/domain/entities/tab"
@@ -59,12 +60,20 @@ func (h *TabHandler) createUserTabs(ctx context.Context, user user.User) {
5960

6061
if len(tabs) > 0 {
6162
ctxWithUser := context.WithValue(ctx, constants.UserKey, user)
62-
if err := h.tabService.DeleteUserTabs(ctxWithUser, user.ID()); err != nil {
63-
h.logger.Errorf("Failed to delete existing tabs for user %d: %v", user.ID(), err)
64-
return
65-
}
66-
if err := h.tabService.CreateMany(ctxWithUser, tabs); err != nil {
67-
h.logger.Errorf("Failed to create tab for user %d: %v", user.ID(), err)
63+
err := composables.InTx(ctx, func(txCtx context.Context) error {
64+
if err := h.tabService.DeleteUserTabs(ctxWithUser, user.ID()); err != nil {
65+
h.logger.Errorf("Failed to delete existing tabs for user %d: %v", user.ID(), err)
66+
return err
67+
}
68+
if err := h.tabService.CreateMany(ctxWithUser, tabs); err != nil {
69+
h.logger.Errorf("Failed to create tab for user %d: %v", user.ID(), err)
70+
return err
71+
}
72+
return nil
73+
})
74+
75+
if err != nil {
76+
h.logger.Errorf("Failed to create tabs for user %d: %v", user.ID(), err)
6877
}
6978
}
7079
}

Diff for: modules/core/module.go

-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ func (m *Module) Register(app application.Application) error {
6464
services.NewRoleService(roleRepo, app.EventPublisher()),
6565
services.NewPermissionService(permRepo, app.EventPublisher()),
6666
services.NewTabService(persistence.NewTabRepository()),
67-
services.NewTabService(persistence.NewTabRepository()),
6867
services.NewGroupService(persistence.NewGroupRepository(userRepo, roleRepo), app.EventPublisher()),
6968
)
7069

Diff for: modules/core/presentation/controllers/account_controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func (c *AccountController) Register(r *mux.Router) {
5555

5656
setRouter := r.PathPrefix(c.basePath).Subrouter()
5757
setRouter.Use(commonMiddleware...)
58-
setRouter.Use(middleware.WithTransaction())
58+
//setRouter.Use(middleware.WithTransaction())
5959
setRouter.HandleFunc("", c.Update).Methods(http.MethodPost)
6060
setRouter.HandleFunc("/sidebar", c.PostSettings).Methods(http.MethodPost)
6161
}

Diff for: modules/core/services/tab_service.go

+11-5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package services
22

33
import (
44
"context"
5-
65
"github.com/iota-uz/iota-sdk/modules/core/domain/entities/tab"
6+
"github.com/iota-uz/iota-sdk/pkg/composables"
77
)
88

99
type TabService struct {
@@ -46,10 +46,16 @@ func (s *TabService) CreateManyUserTabs(ctx context.Context, userID uint, data [
4646
}
4747
entities = append(entities, entity)
4848
}
49-
if err := s.repo.DeleteUserTabs(ctx, userID); err != nil {
50-
return nil, err
51-
}
52-
if err := s.repo.CreateMany(ctx, entities); err != nil {
49+
err := composables.InTx(ctx, func(txCtx context.Context) error {
50+
if err := s.repo.DeleteUserTabs(txCtx, userID); err != nil {
51+
return err
52+
}
53+
if err := s.repo.CreateMany(txCtx, entities); err != nil {
54+
return err
55+
}
56+
return nil
57+
})
58+
if err != nil {
5359
return nil, err
5460
}
5561
return entities, nil

Diff for: modules/core/services/user_service.go

+19-21
Original file line numberDiff line numberDiff line change
@@ -65,41 +65,39 @@ func (s *UserService) GetPaginatedWithTotal(ctx context.Context, params *user.Fi
6565
}
6666

6767
func (s *UserService) Create(ctx context.Context, data user.User) error {
68-
if err := composables.CanUser(ctx, permissions.UserCreate); err != nil {
69-
return err
70-
}
71-
if err := s.validator.ValidateCreate(ctx, data); err != nil {
68+
err := composables.CanUser(ctx, permissions.UserCreate)
69+
if err != nil {
7270
return err
7371
}
74-
logger := composables.UseLogger(ctx)
75-
tx, err := composables.BeginTx(ctx)
72+
err = s.validator.ValidateCreate(ctx, data)
7673
if err != nil {
7774
return err
7875
}
79-
defer func() {
80-
if err := tx.Rollback(ctx); err != nil {
81-
logger.WithError(err).Error("failed to rollback transaction")
76+
77+
var createdUser user.User
78+
err = composables.InTx(ctx, func(txCtx context.Context) error {
79+
data, err = data.SetPassword(data.Password())
80+
if err != nil {
81+
return err
8282
}
83-
}()
84-
createdEvent, err := user.NewCreatedEvent(ctx, data)
85-
if err != nil {
83+
created, err := s.repo.Create(ctx, data)
84+
if err != nil {
85+
return err
86+
}
87+
createdUser = created
8688
return err
87-
}
88-
data, err = data.SetPassword(data.Password())
89+
})
8990
if err != nil {
9091
return err
9192
}
92-
created, err := s.repo.Create(ctx, data)
93+
createdEvent, err := user.NewCreatedEvent(ctx, data)
9394
if err != nil {
9495
return err
9596
}
96-
97-
if err := tx.Commit(ctx); err != nil {
98-
return err
99-
}
100-
createdEvent.Result = created
97+
createdEvent.Result = createdUser
10198
s.publisher.Publish(createdEvent)
102-
return nil
99+
100+
return err
103101
}
104102

105103
func (s *UserService) UpdateLastAction(ctx context.Context, id uint) error {

0 commit comments

Comments
 (0)