Files
GoNtech/internal/db/repository.go
T

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
}