100 lines
4.2 KiB
Go
100 lines
4.2 KiB
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"ntech/internal/model"
|
|
)
|
|
|
|
// ArtikalRepository definiše operacije nad artiklima
|
|
type ArtikalRepository interface {
|
|
Lista(ctx context.Context, filter ArtikalFilter) ([]model.ArtikalSaKategorijom, error)
|
|
DohvatiID(ctx context.Context, id int64) (*model.Artikal, error)
|
|
Kreiraj(ctx context.Context, a *model.Artikal) (int64, error)
|
|
Izmeni(ctx context.Context, a *model.Artikal) error
|
|
Obrisi(ctx context.Context, id int64) error
|
|
}
|
|
|
|
// KategorijaRepository definiše operacije nad kategorijama
|
|
type KategorijaRepository interface {
|
|
Lista(ctx context.Context) ([]model.Kategorija, error)
|
|
Kreiraj(ctx context.Context, k *model.Kategorija) (int64, error)
|
|
}
|
|
|
|
// ArtikalFilter definiše parametre za filtriranje liste artikala
|
|
type ArtikalFilter struct {
|
|
Pretraga string
|
|
KategorijaID *int64
|
|
SamoKriticni bool
|
|
}
|
|
|
|
// NabavkaRepository definiše operacije nad nabavkama
|
|
type NabavkaRepository interface {
|
|
Lista(ctx context.Context) ([]model.NabavkaSaDetaljem, error)
|
|
DohvatiID(ctx context.Context, id int64) (*model.Nabavka, error)
|
|
DohvatiStavke(ctx context.Context, nabavkaID int64) ([]model.StavkaSaArtiklom, error)
|
|
Kreiraj(ctx context.Context, n *model.Nabavka, stavke []model.StavkaNabavke) (int64, error)
|
|
Obrisi(ctx context.Context, id int64) error
|
|
}
|
|
|
|
// DobavljacRepository definiše operacije nad dobavljačima
|
|
type DobavljacRepository interface {
|
|
Lista(ctx context.Context, pretraga string) ([]model.Dobavljac, error)
|
|
DohvatiID(ctx context.Context, id int64) (*model.Dobavljac, error)
|
|
Kreiraj(ctx context.Context, d *model.Dobavljac) (int64, error)
|
|
Izmeni(ctx context.Context, d *model.Dobavljac) error
|
|
Obrisi(ctx context.Context, id int64) error
|
|
}
|
|
|
|
// KlijentRepository definiše operacije nad klijentima
|
|
type KlijentRepository interface {
|
|
Lista(ctx context.Context, pretraga string) ([]model.Klijent, error)
|
|
DohvatiID(ctx context.Context, id int64) (*model.Klijent, error)
|
|
Kreiraj(ctx context.Context, k *model.Klijent) (int64, error)
|
|
Izmeni(ctx context.Context, k *model.Klijent) error
|
|
Obrisi(ctx context.Context, id int64) error
|
|
}
|
|
|
|
// ServisRepository definiše operacije nad servisnim nalozima
|
|
type ServisRepository interface {
|
|
Lista(ctx context.Context, pretraga, status string) ([]model.ServisniNalogSaKlijentom, error)
|
|
DohvatiID(ctx context.Context, id int64) (*model.ServisniNalog, error)
|
|
Kreiraj(ctx context.Context, n *model.ServisniNalog) (int64, error)
|
|
Izmeni(ctx context.Context, n *model.ServisniNalog) error
|
|
Obrisi(ctx context.Context, id int64) error
|
|
SledeciBroj(ctx context.Context) (string, error)
|
|
}
|
|
|
|
// ProdajaRepository definiše operacije nad prodajnim nalozima
|
|
type ProdajaRepository interface {
|
|
Lista(ctx context.Context, pretraga string) ([]model.ProdajniNalogSaDetaljem, error)
|
|
DohvatiID(ctx context.Context, id int64) (*model.ProdajniNalog, error)
|
|
DohvatiStavke(ctx context.Context, nalogID int64) ([]model.StavkaProdajeSaArtiklom, error)
|
|
Kreiraj(ctx context.Context, n *model.ProdajniNalog, stavke []model.StavkaProdaje) (int64, error)
|
|
Obrisi(ctx context.Context, id int64) error
|
|
SledeciBroj(ctx context.Context) (string, error)
|
|
}
|
|
|
|
// KorisniciRepository definiše operacije nad korisnicima
|
|
type KorisniciRepository interface {
|
|
Kreiraj(ctx context.Context, korisnickoIme, lozinkaHash, uloga string) (*model.Korisnik, error)
|
|
DohvatiPoImenu(ctx context.Context, korisnickoIme string) (*model.Korisnik, error)
|
|
DohvatiPoID(ctx context.Context, id int64) (*model.Korisnik, error)
|
|
Lista(ctx context.Context) ([]model.Korisnik, error)
|
|
AzurirajUlogu(ctx context.Context, id int64, uloga string) error
|
|
AzurirajAktivan(ctx context.Context, id int64, aktivan bool) error
|
|
PromeniLozinku(ctx context.Context, id int64, hash string) error
|
|
SacuvajTotpTajnu(ctx context.Context, id int64, tajna string) error
|
|
PostojiIjedan(ctx context.Context) (bool, error)
|
|
}
|
|
|
|
// SesijeRepository definiše operacije nad sesijama
|
|
type SesijeRepository interface {
|
|
Kreiraj(ctx context.Context, korisnikID int64, token string, istice time.Time, totpPotvrdjeno bool) error
|
|
DohvatiPoTokenu(ctx context.Context, token string) (*model.Sesija, error)
|
|
PotvrdiTotp(ctx context.Context, token string, novoIstice time.Time) error
|
|
Obrisi(ctx context.Context, token string) error
|
|
ObrisiIstekle(ctx context.Context) error
|
|
}
|