Ispravka: Usluge/Troškovi se nisu učitavali (regresija iz DatumUnosa time.Time izmene)

usluge.datum_unosa i troskovi.datum_unosa su TEXT kolone (ne DATETIME) —
modernc.org/sqlite driver za njih vraća string, ne time.Time, pa je Scan
direktno u *time.Time pucao sa "unsupported Scan ... string into *time.Time".

Dodat parseDatumUnosa helper (ručni time.Parse), koriste ga
skenirajUslugu/skenirajTrosak umesto oslanjanja na driver auto-konverziju.
This commit is contained in:
2026-07-03 23:42:30 +02:00
parent 45ed942c56
commit 295fe0b9ff
3 changed files with 18 additions and 2 deletions
+5 -1
View File
@@ -26,11 +26,15 @@ func skenirajTrosak(s interface {
var t model.Trosak var t model.Trosak
var sifra sql.NullString var sifra sql.NullString
var arhiviran int var arhiviran int
if err := s.Scan(&t.ID, &sifra, &t.Naziv, &t.Cena, &t.Opis, &arhiviran, &t.DatumUnosa); err != nil { var datumUnosa string
if err := s.Scan(&t.ID, &sifra, &t.Naziv, &t.Cena, &t.Opis, &arhiviran, &datumUnosa); err != nil {
return t, err return t, err
} }
t.Sifra = sifra.String t.Sifra = sifra.String
t.Arhiviran = arhiviran == 1 t.Arhiviran = arhiviran == 1
if parsed, err := parseDatumUnosa(datumUnosa); err == nil {
t.DatumUnosa = parsed
}
return t, nil return t, nil
} }
+5 -1
View File
@@ -26,11 +26,15 @@ func skenirajUslugu(s interface {
var u model.Usluga var u model.Usluga
var sifra sql.NullString var sifra sql.NullString
var arhiviran int var arhiviran int
if err := s.Scan(&u.ID, &sifra, &u.Naziv, &u.Kategorija, &u.JedinicaMere, &u.Cena, &u.PdvStopa, &u.Opis, &arhiviran, &u.DatumUnosa); err != nil { var datumUnosa string
if err := s.Scan(&u.ID, &sifra, &u.Naziv, &u.Kategorija, &u.JedinicaMere, &u.Cena, &u.PdvStopa, &u.Opis, &arhiviran, &datumUnosa); err != nil {
return u, err return u, err
} }
u.Sifra = sifra.String u.Sifra = sifra.String
u.Arhiviran = arhiviran == 1 u.Arhiviran = arhiviran == 1
if t, err := parseDatumUnosa(datumUnosa); err == nil {
u.DatumUnosa = t
}
return u, nil return u, nil
} }
+8
View File
@@ -55,3 +55,11 @@ func nullDateString(v *time.Time) sql.NullString {
} }
return sql.NullString{String: v.Format("2006-01-02"), Valid: true} return sql.NullString{String: v.Format("2006-01-02"), Valid: true}
} }
// parseDatumUnosa parsira "YYYY-MM-DD HH:MM:SS" iz kolone deklarisane kao TEXT
// (npr. usluge/troskovi.datum_unosa, `DEFAULT (datetime('now'))`). Driver
// vraća string umesto time.Time za TEXT kolone (za razliku od DATETIME kolona
// koje driver sam parsira), pa Scan ne može direktno u *time.Time.
func parseDatumUnosa(s string) (time.Time, error) {
return time.ParseInLocation("2006-01-02 15:04:05", s, time.UTC)
}