refac: hardening pass with multiple overhauls
This commit is contained in:
1 parent
b0f7b7892b
commit
da36c78bc0
28 files changed
+1375
-39
No files matched your search
@@ -2,6 +2,7 @@ package persistence
|
||||
|
||||
import (
|
||||
domainInvite "RenewCMS/internal/domain/invite"
|
||||
domainUser "RenewCMS/internal/domain/user"
|
||||
"RenewCMS/internal/infrastructure/persistence/mappers"
|
||||
entity "RenewCMS/internal/infrastructure/persistence/models"
|
||||
"time"
|
||||
@@ -44,9 +45,22 @@ func (i *InviteRepository) Delete(id uint32) error {
|
||||
return deleteOrNotFound(result, domainInvite.ErrInviteNotFound)
|
||||
}
|
||||
|
||||
func (i *InviteRepository) MarkAccepted(id uint32, acceptedAt time.Time) error {
|
||||
result := i.db.Model(&entity.Invite{}).Where("id = ?", id).Update("accepted_at", acceptedAt)
|
||||
return deleteOrNotFound(result, domainInvite.ErrInviteNotFound)
|
||||
func (i *InviteRepository) AcceptWithUser(inviteID uint32, acceptedAt time.Time, newUser domainUser.User) (domainUser.User, error) {
|
||||
createdModel := mappers.UserToModel(newUser)
|
||||
err := i.db.Transaction(func(tx *gorm.DB) error {
|
||||
marked := tx.Model(&entity.Invite{}).
|
||||
Where("id = ? AND accepted_at IS NULL", inviteID).
|
||||
Update("accepted_at", acceptedAt)
|
||||
if err := deleteOrNotFound(marked, domainInvite.ErrInviteNotFound); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Create(&createdModel).Error
|
||||
})
|
||||
if err != nil {
|
||||
return domainUser.User{}, err
|
||||
}
|
||||
|
||||
return mappers.UserToDomain(createdModel), nil
|
||||
}
|
||||
|
||||
var _ domainInvite.Repository = &InviteRepository{}
|
||||
@@ -49,7 +49,7 @@ func (u *UserRepository) Create(user domainUser.User) (domainUser.User, error) {
|
||||
}
|
||||
|
||||
func (u *UserRepository) Delete(id uint32) error {
|
||||
result := u.db.Delete(&domainUser.User{}, id)
|
||||
result := u.db.Delete(&entity.User{}, id)
|
||||
return deleteOrNotFound(result, domainUser.ErrUserNotFound)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user