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:
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user