Skip to content

Commit

Permalink
fix: Refactor of SaveUserActivity
Browse files Browse the repository at this point in the history
  • Loading branch information
jperez-igz committed Jan 29, 2025
1 parent 6fd9105 commit 2225a86
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 47 deletions.
2 changes: 1 addition & 1 deletion app/api/infrastructure/graph/schema.resolvers.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

51 changes: 16 additions & 35 deletions app/api/usecase/project/interactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,22 +188,9 @@ func (i *interactor) GetByID(ctx context.Context, id string) (entity.Project, er
return i.projectRepo.Get(ctx, id)
}

// Save project info updated in user activity.
func (i *interactor) SaveUserActivity(
ctx context.Context,
loggedUser entity.User,
actType entity.UserActivityType,
projectID, oldValue, newValue string,
) error {
updateProjectInfoActVars := entity.NewActivityVarsUpdateProjectInfo(projectID, oldValue, newValue)
updateProjectInfoAct := entity.UserActivity{
Date: i.clock.Now(),
UserID: loggedUser.ID,
Type: actType,
Vars: updateProjectInfoActVars,
}

err := i.userActivityRepo.Create(ctx, updateProjectInfoAct)
// Save user activity.
func (i *interactor) SaveUserActivity(ctx context.Context, userActivity entity.UserActivity) error {
err := i.userActivityRepo.Create(ctx, userActivity)
if err != nil {
return err
}
Expand All @@ -214,6 +201,10 @@ func (i *interactor) SaveUserActivity(
// Update changes the desired information about a project.
func (i *interactor) Update(ctx context.Context, opt UpdateProjectOption) (entity.Project, error) {
p, _ := i.projectRepo.Get(ctx, opt.ProjectID)
userActivity := entity.UserActivity{
Date: i.clock.Now(),
UserID: opt.UserID,
}

if !kdlutil.IsNilOrEmpty(opt.Name) {
err := i.projectRepo.UpdateName(ctx, opt.ProjectID, *opt.Name)
Expand All @@ -222,14 +213,9 @@ func (i *interactor) Update(ctx context.Context, opt UpdateProjectOption) (entit
}

// Save project name updated in user activity
err = i.SaveUserActivity(
ctx,
opt.LoggedUser,
entity.UserActivityTypeUpdateProjectName,
opt.ProjectID,
p.Name,
*opt.Name,
)
userActivity.Type = entity.UserActivityTypeUpdateProjectName
userActivity.Vars = entity.NewActivityVarsUpdateProjectInfo(opt.ProjectID, p.Name, *opt.Name)
err = i.SaveUserActivity(ctx, userActivity)

if err != nil {
return entity.Project{}, err
Expand All @@ -243,14 +229,9 @@ func (i *interactor) Update(ctx context.Context, opt UpdateProjectOption) (entit
}

// Save project name updated in user activity
err = i.SaveUserActivity(
ctx,
opt.LoggedUser,
entity.UserActivityTypeUpdateProjectDescription,
opt.ProjectID,
p.Description,
*opt.Description,
)
userActivity.Type = entity.UserActivityTypeUpdateProjectDescription
userActivity.Vars = entity.NewActivityVarsUpdateProjectInfo(opt.ProjectID, p.Description, *opt.Description)
err = i.SaveUserActivity(ctx, userActivity)

if err != nil {
return entity.Project{}, err
Expand All @@ -264,13 +245,13 @@ func (i *interactor) Update(ctx context.Context, opt UpdateProjectOption) (entit
}

// Save project name updated in user activity
err = i.SaveUserActivity(
ctx, opt.LoggedUser,
entity.UserActivityTypeUpdateProjectArchived,
userActivity.Type = entity.UserActivityTypeUpdateProjectArchived
userActivity.Vars = entity.NewActivityVarsUpdateProjectInfo(
opt.ProjectID,
strconv.FormatBool(p.Archived),
strconv.FormatBool(*opt.Archived),
)
err = i.SaveUserActivity(ctx, userActivity)

if err != nil {
return entity.Project{}, err
Expand Down
8 changes: 4 additions & 4 deletions app/api/usecase/project/interactor_members.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ type UpdateProjectOption struct {
Name *string
Description *string
Archived *bool
LoggedUser entity.User
UserID string
}

// UpdateMembersOption options when updating a project member.
Expand Down Expand Up @@ -101,7 +101,7 @@ func (i *interactor) AddMembers(ctx context.Context, opt AddMembersOption) (enti
Vars: addMemberActVars,
}

err = i.userActivityRepo.Create(ctx, addMemberAct)
err = i.SaveUserActivity(ctx, addMemberAct)
if err != nil {
return entity.Project{}, err
}
Expand Down Expand Up @@ -159,7 +159,7 @@ func (i *interactor) RemoveMembers(ctx context.Context, opt RemoveMembersOption)
Vars: removeMemberActVars,
}

err = i.userActivityRepo.Create(ctx, removeMemberAct)
err = i.SaveUserActivity(ctx, removeMemberAct)
if err != nil {
return entity.Project{}, err
}
Expand Down Expand Up @@ -226,7 +226,7 @@ func (i *interactor) UpdateMembers(ctx context.Context, opt UpdateMembersOption)
Vars: updateUserAccessLevelActVars,
}

err = i.userActivityRepo.Create(ctx, updateUserAccessLevelAct)
err = i.SaveUserActivity(ctx, updateUserAccessLevelAct)
if err != nil {
return entity.Project{}, err
}
Expand Down
9 changes: 3 additions & 6 deletions app/api/usecase/project/interactor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -539,8 +539,7 @@ func TestInteractor_Update(t *testing.T) {
newArchived := true

loggedUser := entity.User{
ID: "logged-user",
AccessLevel: entity.AccessLevelAdmin,
ID: "logged-user",
}

originalProject := entity.Project{
Expand Down Expand Up @@ -573,9 +572,9 @@ func TestInteractor_Update(t *testing.T) {
}

s.mocks.repo.EXPECT().Get(ctx, testProjectID).Return(originalProject, nil)
s.mocks.clock.EXPECT().Now().Return(now)

s.mocks.repo.EXPECT().UpdateName(ctx, testProjectID, newName).Return(nil)
s.mocks.clock.EXPECT().Now().Return(now)
s.mocks.userActivityRepo.EXPECT().Create(
ctx,
entity.UserActivity{
Expand All @@ -587,7 +586,6 @@ func TestInteractor_Update(t *testing.T) {
).Return(nil)

s.mocks.repo.EXPECT().UpdateDescription(ctx, testProjectID, newDesc).Return(nil)
s.mocks.clock.EXPECT().Now().Return(now)
s.mocks.userActivityRepo.EXPECT().Create(
ctx,
entity.UserActivity{
Expand All @@ -599,7 +597,6 @@ func TestInteractor_Update(t *testing.T) {
).Return(nil)

s.mocks.repo.EXPECT().UpdateArchived(ctx, testProjectID, newArchived).Return(nil)
s.mocks.clock.EXPECT().Now().Return(now)
s.mocks.userActivityRepo.EXPECT().Create(
ctx,
entity.UserActivity{
Expand All @@ -617,7 +614,7 @@ func TestInteractor_Update(t *testing.T) {
Name: &newName,
Description: &newDesc,
Archived: &newArchived,
LoggedUser: loggedUser,
UserID: loggedUser.ID,
})

require.NoError(t, err)
Expand Down
12 changes: 11 additions & 1 deletion app/api/usecase/user/interactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,16 @@ func NewInteractor(
}
}

// Save user activity.
func (i *Interactor) SaveUserActivity(ctx context.Context, userActivity entity.UserActivity) error {
err := i.userActivityRepo.Create(ctx, userActivity)
if err != nil {
return err
}

return nil
}

// Create add a new user to the server.
// - If the user already exists (email, username and sub must be unique) returns entity.ErrDuplicatedUser.
// - Generates a new SSH public/private keys.
Expand Down Expand Up @@ -153,7 +163,7 @@ func (i *Interactor) Create(ctx context.Context, email, sub string, accessLevel
Vars: createUserActVars,
}

err = i.userActivityRepo.Create(ctx, createUserdAct)
err = i.SaveUserActivity(ctx, createUserdAct)
if err != nil {
return entity.User{}, err
}
Expand Down

0 comments on commit 2225a86

Please sign in to comment.