diff --git a/internal/repository/ledger_repository.go b/internal/repository/ledger_repository.go index 0e0e6a3..6b1059a 100644 --- a/internal/repository/ledger_repository.go +++ b/internal/repository/ledger_repository.go @@ -111,6 +111,14 @@ func (r *LedgerRepository) GetDefault(userID uint) (*models.Ledger, error) { return &ledger, nil } +// UnsetAllDefaults unsets the default status for all ledgers of a user +func (r *LedgerRepository) UnsetAllDefaults(userID uint) error { + if err := r.db.Model(&models.Ledger{}).Where("user_id = ? AND is_default = ?", userID, true).Update("is_default", false).Error; err != nil { + return fmt.Errorf("failed to unset default ledgers: %w", err) + } + return nil +} + // SetDefault sets a ledger as the default ledger func (r *LedgerRepository) SetDefault(userID uint, id uint) error { // Start a transaction diff --git a/internal/service/ledger_service.go b/internal/service/ledger_service.go index 91466d2..c5fb6df 100644 --- a/internal/service/ledger_service.go +++ b/internal/service/ledger_service.go @@ -83,7 +83,7 @@ func (s *LedgerService) CreateLedger(userID uint, input LedgerInput) (*models.Le // If this is set as default, we need to unset other defaults if input.IsDefault { - if err := s.repo.SetDefault(userID, 0); err != nil { + if err := s.repo.UnsetAllDefaults(userID); err != nil { return nil, fmt.Errorf("failed to unset default ledgers: %w", err) } }