Izmena u radu tema
This commit is contained in:
@@ -22,17 +22,24 @@ func NoviPodsetnikRepo(db *sql.DB) *PodsetnikRepo {
|
||||
// Lista vraća listu podsetnika sa opcionim filterom
|
||||
func (r *PodsetnikRepo) Lista(ctx context.Context, filter db.PodsetnikFilter) ([]model.Podsetnik, error) {
|
||||
upit := `
|
||||
SELECT id, naslov, napomena, datum_podsecanja, zavrseno, tip, datum_unosa
|
||||
SELECT id, naslov, napomena, datum_podsecanja, zavrseno, tip, datum_unosa, korisnik_id
|
||||
FROM podsetnici
|
||||
WHERE 1=1`
|
||||
|
||||
var args []any
|
||||
|
||||
if filter.SamoAktivni {
|
||||
upit += " AND zavrseno = 0"
|
||||
}
|
||||
|
||||
if filter.KorisnikID != nil {
|
||||
upit += " AND korisnik_id = ?"
|
||||
args = append(args, *filter.KorisnikID)
|
||||
}
|
||||
|
||||
upit += " ORDER BY datum_podsecanja ASC"
|
||||
|
||||
redovi, err := r.db.QueryContext(ctx, upit)
|
||||
redovi, err := r.db.QueryContext(ctx, upit, args...)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ntech: PodsetnikRepo.Lista: %w", err)
|
||||
}
|
||||
@@ -42,15 +49,19 @@ func (r *PodsetnikRepo) Lista(ctx context.Context, filter db.PodsetnikFilter) ([
|
||||
for redovi.Next() {
|
||||
var p model.Podsetnik
|
||||
var napomena sql.NullString
|
||||
var korisnikID sql.NullInt64
|
||||
var zavrseno int
|
||||
err := redovi.Scan(
|
||||
&p.ID, &p.Naslov, &napomena, &p.DatumPodsecanja, &zavrseno, &p.Tip, &p.DatumUnosa,
|
||||
&p.ID, &p.Naslov, &napomena, &p.DatumPodsecanja, &zavrseno, &p.Tip, &p.DatumUnosa, &korisnikID,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ntech: PodsetnikRepo.Lista: scan: %w", err)
|
||||
}
|
||||
p.Napomena = napomena.String
|
||||
p.Zavrseno = zavrseno == 1
|
||||
if korisnikID.Valid {
|
||||
p.KorisnikID = &korisnikID.Int64
|
||||
}
|
||||
rezultat = append(rezultat, p)
|
||||
}
|
||||
|
||||
@@ -61,12 +72,13 @@ func (r *PodsetnikRepo) Lista(ctx context.Context, filter db.PodsetnikFilter) ([
|
||||
func (r *PodsetnikRepo) DohvatiID(ctx context.Context, id int64) (*model.Podsetnik, error) {
|
||||
var p model.Podsetnik
|
||||
var napomena sql.NullString
|
||||
var korisnikID sql.NullInt64
|
||||
var zavrseno int
|
||||
|
||||
err := r.db.QueryRowContext(ctx, `
|
||||
SELECT id, naslov, napomena, datum_podsecanja, zavrseno, tip, datum_unosa
|
||||
SELECT id, naslov, napomena, datum_podsecanja, zavrseno, tip, datum_unosa, korisnik_id
|
||||
FROM podsetnici WHERE id = ?`, id).Scan(
|
||||
&p.ID, &p.Naslov, &napomena, &p.DatumPodsecanja, &zavrseno, &p.Tip, &p.DatumUnosa,
|
||||
&p.ID, &p.Naslov, &napomena, &p.DatumPodsecanja, &zavrseno, &p.Tip, &p.DatumUnosa, &korisnikID,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("ntech: PodsetnikRepo.DohvatiID: %w", err)
|
||||
@@ -74,16 +86,24 @@ func (r *PodsetnikRepo) DohvatiID(ctx context.Context, id int64) (*model.Podsetn
|
||||
|
||||
p.Napomena = napomena.String
|
||||
p.Zavrseno = zavrseno == 1
|
||||
if korisnikID.Valid {
|
||||
p.KorisnikID = &korisnikID.Int64
|
||||
}
|
||||
|
||||
return &p, nil
|
||||
}
|
||||
|
||||
// Kreiraj dodaje novi podsetnik u bazu
|
||||
func (r *PodsetnikRepo) Kreiraj(ctx context.Context, p *model.Podsetnik) (int64, error) {
|
||||
var korisnikID interface{}
|
||||
if p.KorisnikID != nil {
|
||||
korisnikID = *p.KorisnikID
|
||||
}
|
||||
|
||||
rezultat, err := r.db.ExecContext(ctx, `
|
||||
INSERT INTO podsetnici (naslov, napomena, datum_podsecanja, tip)
|
||||
VALUES (?, ?, ?, ?)`,
|
||||
p.Naslov, nullString(p.Napomena), p.DatumPodsecanja, p.Tip,
|
||||
INSERT INTO podsetnici (naslov, napomena, datum_podsecanja, tip, korisnik_id)
|
||||
VALUES (?, ?, ?, ?, ?)`,
|
||||
p.Naslov, nullString(p.Napomena), p.DatumPodsecanja, p.Tip, korisnikID,
|
||||
)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("ntech: PodsetnikRepo.Kreiraj: %w", err)
|
||||
@@ -99,11 +119,16 @@ func (r *PodsetnikRepo) Kreiraj(ctx context.Context, p *model.Podsetnik) (int64,
|
||||
|
||||
// Izmeni ažurira postojeći podsetnik
|
||||
func (r *PodsetnikRepo) Izmeni(ctx context.Context, p *model.Podsetnik) error {
|
||||
var korisnikID interface{}
|
||||
if p.KorisnikID != nil {
|
||||
korisnikID = *p.KorisnikID
|
||||
}
|
||||
|
||||
_, err := r.db.ExecContext(ctx, `
|
||||
UPDATE podsetnici SET
|
||||
naslov = ?, napomena = ?, datum_podsecanja = ?, tip = ?
|
||||
naslov = ?, napomena = ?, datum_podsecanja = ?, tip = ?, korisnik_id = ?
|
||||
WHERE id = ?`,
|
||||
p.Naslov, nullString(p.Napomena), p.DatumPodsecanja, p.Tip, p.ID,
|
||||
p.Naslov, nullString(p.Napomena), p.DatumPodsecanja, p.Tip, korisnikID, p.ID,
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("ntech: PodsetnikRepo.Izmeni: %w", err)
|
||||
@@ -138,12 +163,18 @@ func (r *PodsetnikRepo) Obrisi(ctx context.Context, id int64) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// BrojAktivnih vraća broj nezavršenih podsetnika
|
||||
func (r *PodsetnikRepo) BrojAktivnih(ctx context.Context) (int, error) {
|
||||
// BrojAktivnih vraća broj nezavršenih podsetnika, opcionalno filtrirano po korisniku
|
||||
func (r *PodsetnikRepo) BrojAktivnih(ctx context.Context, filter db.PodsetnikFilter) (int, error) {
|
||||
upit := "SELECT COUNT(*) FROM podsetnici WHERE zavrseno = 0"
|
||||
var args []any
|
||||
|
||||
if filter.KorisnikID != nil {
|
||||
upit += " AND korisnik_id = ?"
|
||||
args = append(args, *filter.KorisnikID)
|
||||
}
|
||||
|
||||
var broj int
|
||||
err := r.db.QueryRowContext(ctx,
|
||||
"SELECT COUNT(*) FROM podsetnici WHERE zavrseno = 0",
|
||||
).Scan(&broj)
|
||||
err := r.db.QueryRowContext(ctx, upit, args...).Scan(&broj)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("ntech: PodsetnikRepo.BrojAktivnih: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user