Error prefiks: ErrArtikalNePostoji u db/repository.go, ntech: prefiks na ErrNedovoljnoKolicine
This commit is contained in:
@@ -6,5 +6,5 @@ type ErrNedovoljnoKolicine struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *ErrNedovoljnoKolicine) Error() string {
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,9 @@ var ErrArtikalDuplikatSifre = errors.New("ntech: šifra ili barkod artikla već
|
|||||||
var ErrUslugaDuplikatSifre = errors.New("ntech: šifra usluge već postoji")
|
var ErrUslugaDuplikatSifre = errors.New("ntech: šifra usluge već postoji")
|
||||||
var ErrTrosakDuplikatSifre = errors.New("ntech: šifra troška 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
|
// ArtikalRepository definiše operacije nad artiklima
|
||||||
type ArtikalRepository interface {
|
type ArtikalRepository interface {
|
||||||
Lista(ctx context.Context, filter ArtikalFilter) ([]model.ArtikalSaKategorijom, error)
|
Lista(ctx context.Context, filter ArtikalFilter) ([]model.ArtikalSaKategorijom, error)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"ntech/internal/db"
|
||||||
"ntech/internal/model"
|
"ntech/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -20,9 +21,6 @@ func NoviNivelacijaRepo(db *sql.DB) *NivelacijaRepo {
|
|||||||
return &NivelacijaRepo{db: db}
|
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.
|
// PromeniCenu transakciono menja prodajnu cenu artikla i upisuje nivelacioni zapis.
|
||||||
// Stara cena se čita iz baze unutar transakcije; izvor je "rucno".
|
// 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) {
|
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
|
var stara float64
|
||||||
err = tx.QueryRowContext(ctx, "SELECT prodajna_cena FROM artikli WHERE id = ?", artikalID).Scan(&stara)
|
err = tx.QueryRowContext(ctx, "SELECT prodajna_cena FROM artikli WHERE id = ?", artikalID).Scan(&stara)
|
||||||
if errors.Is(err, sql.ErrNoRows) {
|
if errors.Is(err, sql.ErrNoRows) {
|
||||||
return nil, ErrArtikalNePostoji
|
return nil, db.ErrArtikalNePostoji
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("ntech: NivelacijaRepo.PromeniCenu: čitanje cene: %w", err)
|
return nil, fmt.Errorf("ntech: NivelacijaRepo.PromeniCenu: čitanje cene: %w", err)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"ntech/internal/db"
|
||||||
"ntech/internal/model"
|
"ntech/internal/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -62,7 +63,7 @@ func TestPromeniCenu_NepostojeciArtikal(t *testing.T) {
|
|||||||
nivRepo := NoviNivelacijaRepo(baza)
|
nivRepo := NoviNivelacijaRepo(baza)
|
||||||
|
|
||||||
_, err := nivRepo.PromeniCenu(ctx, 9999, 500, "test", nil)
|
_, 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)
|
t.Errorf("greška = %v, očekivano ErrArtikalNePostoji", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"ntech/internal/db"
|
||||||
"ntech/internal/db/sqlite"
|
"ntech/internal/db/sqlite"
|
||||||
"ntech/internal/middleware"
|
"ntech/internal/middleware"
|
||||||
"ntech/internal/model"
|
"ntech/internal/model"
|
||||||
@@ -91,7 +92,7 @@ func (h *Handler) PromeniCenuArtikla(w http.ResponseWriter, r *http.Request) {
|
|||||||
korisnikID := &k.ID
|
korisnikID := &k.ID
|
||||||
_, err = h.NivelacijaRepo.PromeniCenu(r.Context(), id, novaCena, razlog, korisnikID)
|
_, err = h.NivelacijaRepo.PromeniCenu(r.Context(), id, novaCena, razlog, korisnikID)
|
||||||
switch {
|
switch {
|
||||||
case errors.Is(err, sqlite.ErrArtikalNePostoji):
|
case errors.Is(err, db.ErrArtikalNePostoji):
|
||||||
middleware.SetFlash(w, r, h.DB, "greska", "Artikal nije pronađen.")
|
middleware.SetFlash(w, r, h.DB, "greska", "Artikal nije pronađen.")
|
||||||
http.Redirect(w, r, "/magacin", http.StatusSeeOther)
|
http.Redirect(w, r, "/magacin", http.StatusSeeOther)
|
||||||
case err != nil:
|
case err != nil:
|
||||||
|
|||||||
Reference in New Issue
Block a user