51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package sqlite
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"ntech/internal/model"
|
|
)
|
|
|
|
// ServisniLogRepo je SQLite implementacija db.ServisniLogRepository
|
|
type ServisniLogRepo struct {
|
|
db *sql.DB
|
|
}
|
|
|
|
// NoviServisniLogRepo kreira repozitorijum log-a servisnih naloga
|
|
func NoviServisniLogRepo(baza *sql.DB) *ServisniLogRepo {
|
|
return &ServisniLogRepo{db: baza}
|
|
}
|
|
|
|
// Kreiraj upisuje novi događaj u log servisnog naloga.
|
|
func (r *ServisniLogRepo) Kreiraj(ctx context.Context, nalogID int64, dogadjaj string, korisnikID *int64) error {
|
|
_, err := r.db.ExecContext(ctx,
|
|
`INSERT INTO servisni_log (nalog_id, dogadjaj, korisnik_id) VALUES (?, ?, ?)`,
|
|
nalogID, dogadjaj, korisnikID,
|
|
)
|
|
return err
|
|
}
|
|
|
|
// DohvatiZaNalog vraća sve log zapise za dati nalog, od najstarijeg ka najnovijem.
|
|
func (r *ServisniLogRepo) DohvatiZaNalog(ctx context.Context, nalogID int64) ([]model.ServisniLog, error) {
|
|
rows, err := r.db.QueryContext(ctx,
|
|
`SELECT id, nalog_id, dogadjaj, COALESCE(napomena,''), korisnik_id, datum
|
|
FROM servisni_log WHERE nalog_id = ? ORDER BY datum ASC`,
|
|
nalogID,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
|
|
var lista []model.ServisniLog
|
|
for rows.Next() {
|
|
var l model.ServisniLog
|
|
if err := rows.Scan(&l.ID, &l.NalogID, &l.Dogadjaj, &l.Napomena, &l.KorisnikID, &l.Datum); err != nil {
|
|
return nil, err
|
|
}
|
|
lista = append(lista, l)
|
|
}
|
|
return lista, rows.Err()
|
|
}
|