refactor(izvestaji): direktan SQL dashboard/izveštaja u IzvestajRepository
dashboard.go i izvestaji.go više ne sadrže direktan SQL — svih 12 upita prebačeno u novi IzvestajRepository (internal/db/sqlite/izvestaj.go). Repo vraća sirove redove (model.*Red tipovi), a handleri zadržavaju prezentaciju (formatiranje datuma, boje tačaka, rang, sklapanje niza 12 meseci). Žičenje kroz Handler.IzvestajRepo (+ reinicijalizuj). Dobici: testabilnost (dodati integracioni testovi izvestaj_test.go) i put ka Postgres-u bez prepravke handlera. dashboard.prihod provera ostaje u handleru. Van obima: middleware/flash.go i backup VACUUM INTO (ne pripadaju repo sloju).
This commit is contained in:
@@ -143,6 +143,26 @@ type DozvoleRepository interface {
|
||||
Reset(ctx context.Context) error
|
||||
}
|
||||
|
||||
// IzvestajRepository definiše read-only upite za dashboard i stranicu izveštaja.
|
||||
// Vraća sirove podatke; prezentaciju (datumi, boje, rang) radi handler.
|
||||
type IzvestajRepository interface {
|
||||
// dashboard — brojači
|
||||
BrojArtikala(ctx context.Context) (int, error)
|
||||
BrojAktivnihServisa(ctx context.Context) (int, error)
|
||||
PrihodTekuciMesec(ctx context.Context) (float64, error)
|
||||
BrojKriticnihZaliha(ctx context.Context) (int, error)
|
||||
// dashboard — liste
|
||||
PoslednjiServisi(ctx context.Context, limit int) ([]model.ServisRedDashboard, error)
|
||||
KriticneZalihe(ctx context.Context, limit int) ([]model.ZalihaRed, error)
|
||||
PoslednjeProdaje(ctx context.Context, limit int) ([]model.ProdajaRedDashboard, error)
|
||||
// izveštaji
|
||||
MesecniPrihodProdaja(ctx context.Context) ([]model.MesecniIznos, error)
|
||||
MesecniPrihodServis(ctx context.Context) ([]model.MesecniIznos, error)
|
||||
StariOtvoreniNalozi(ctx context.Context) ([]model.StariNalogRed, error)
|
||||
TopArtikli(ctx context.Context, limit int) ([]model.TopArtikalRed, error)
|
||||
TopKlijenti(ctx context.Context, limit int) ([]model.TopKlijentRed, error)
|
||||
}
|
||||
|
||||
// PodsetnikRepository definiše operacije nad podsetnicima
|
||||
type PodsetnikRepository interface {
|
||||
Lista(ctx context.Context, filter PodsetnikFilter) ([]model.Podsetnik, error)
|
||||
|
||||
Reference in New Issue
Block a user