From 4c75aa2c75b431751fc35a4dfa8442bc30864623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Thu, 16 Jul 2026 13:16:29 +0200 Subject: [PATCH] Error prefiks: ErrArtikalNePostoji u db/repository.go, ntech: prefiks na ErrNedovoljnoKolicine --- internal/db/errors.go | 2 +- internal/db/repository.go | 3 +++ internal/db/sqlite/nivelacija.go | 6 ++---- internal/db/sqlite/nivelacija_test.go | 3 ++- internal/handler/nivelacija.go | 3 ++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/db/errors.go b/internal/db/errors.go index c29c195..16a07d1 100644 --- a/internal/db/errors.go +++ b/internal/db/errors.go @@ -6,5 +6,5 @@ type ErrNedovoljnoKolicine struct { } func (e *ErrNedovoljnoKolicine) Error() string { - return "Nedovoljno količine na stanju za artikal: " + e.ArtikalNaziv + return "ntech: nedovoljno količine na stanju za artikal: " + e.ArtikalNaziv } diff --git a/internal/db/repository.go b/internal/db/repository.go index 4e4ec0f..e966420 100644 --- a/internal/db/repository.go +++ b/internal/db/repository.go @@ -29,6 +29,9 @@ var ErrArtikalDuplikatSifre = errors.New("ntech: šifra ili barkod artikla već var ErrUslugaDuplikatSifre = errors.New("ntech: šifra usluge već postoji") var ErrTrosakDuplikatSifre = errors.New("ntech: šifra troška već postoji") +// ErrArtikalNePostoji se vraća kada se menja cena nepostojećeg artikla +var ErrArtikalNePostoji = errors.New("ntech: artikal ne postoji") + // ArtikalRepository definiše operacije nad artiklima type ArtikalRepository interface { Lista(ctx context.Context, filter ArtikalFilter) ([]model.ArtikalSaKategorijom, error) diff --git a/internal/db/sqlite/nivelacija.go b/internal/db/sqlite/nivelacija.go index da0dedd..4b296c3 100644 --- a/internal/db/sqlite/nivelacija.go +++ b/internal/db/sqlite/nivelacija.go @@ -7,6 +7,7 @@ import ( "fmt" "time" + "ntech/internal/db" "ntech/internal/model" ) @@ -20,9 +21,6 @@ func NoviNivelacijaRepo(db *sql.DB) *NivelacijaRepo { return &NivelacijaRepo{db: db} } -// ErrArtikalNePostoji se vraća kada se menja cena nepostojećeg artikla -var ErrArtikalNePostoji = errors.New("artikal ne postoji") - // PromeniCenu transakciono menja prodajnu cenu artikla i upisuje nivelacioni zapis. // Stara cena se čita iz baze unutar transakcije; izvor je "rucno". func (r *NivelacijaRepo) PromeniCenu(ctx context.Context, artikalID int64, novaCena float64, razlog string, korisnikID *int64) (*model.Nivelacija, error) { @@ -35,7 +33,7 @@ func (r *NivelacijaRepo) PromeniCenu(ctx context.Context, artikalID int64, novaC var stara float64 err = tx.QueryRowContext(ctx, "SELECT prodajna_cena FROM artikli WHERE id = ?", artikalID).Scan(&stara) if errors.Is(err, sql.ErrNoRows) { - return nil, ErrArtikalNePostoji + return nil, db.ErrArtikalNePostoji } if err != nil { return nil, fmt.Errorf("ntech: NivelacijaRepo.PromeniCenu: čitanje cene: %w", err) diff --git a/internal/db/sqlite/nivelacija_test.go b/internal/db/sqlite/nivelacija_test.go index 0f97d51..0863f29 100644 --- a/internal/db/sqlite/nivelacija_test.go +++ b/internal/db/sqlite/nivelacija_test.go @@ -5,6 +5,7 @@ import ( "errors" "testing" + "ntech/internal/db" "ntech/internal/model" ) @@ -62,7 +63,7 @@ func TestPromeniCenu_NepostojeciArtikal(t *testing.T) { nivRepo := NoviNivelacijaRepo(baza) _, err := nivRepo.PromeniCenu(ctx, 9999, 500, "test", nil) - if !errors.Is(err, ErrArtikalNePostoji) { + if !errors.Is(err, db.ErrArtikalNePostoji) { t.Errorf("greška = %v, očekivano ErrArtikalNePostoji", err) } diff --git a/internal/handler/nivelacija.go b/internal/handler/nivelacija.go index cd548b7..377ed2d 100644 --- a/internal/handler/nivelacija.go +++ b/internal/handler/nivelacija.go @@ -7,6 +7,7 @@ import ( "strings" "time" + "ntech/internal/db" "ntech/internal/db/sqlite" "ntech/internal/middleware" "ntech/internal/model" @@ -91,7 +92,7 @@ func (h *Handler) PromeniCenuArtikla(w http.ResponseWriter, r *http.Request) { korisnikID := &k.ID _, err = h.NivelacijaRepo.PromeniCenu(r.Context(), id, novaCena, razlog, korisnikID) switch { - case errors.Is(err, sqlite.ErrArtikalNePostoji): + case errors.Is(err, db.ErrArtikalNePostoji): middleware.SetFlash(w, r, h.DB, "greska", "Artikal nije pronađen.") http.Redirect(w, r, "/magacin", http.StatusSeeOther) case err != nil: