Skip to content
This repository was archived by the owner on Mar 3, 2023. It is now read-only.

Commit dbbfa23

Browse files
committed
removed unused snapshot methods by monitoor service
1 parent 6c8976d commit dbbfa23

File tree

4 files changed

+66
-120
lines changed

4 files changed

+66
-120
lines changed

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,6 @@ vendor/
2020
# Go workspace file
2121
go.work
2222

23-
tmp
23+
tmp
24+
*.log
25+
.vscode

go.mod

+15-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,20 @@ module github.com/omarabdelaz1z/go-monitor
22

33
go 1.18
44

5-
require golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7
5+
require (
6+
github.com/jedib0t/go-pretty/v6 v6.3.9
7+
github.com/manifoldco/promptui v0.9.0
8+
github.com/rs/zerolog v1.28.0
9+
golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7
10+
)
11+
12+
require (
13+
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e // indirect
14+
github.com/mattn/go-colorable v0.1.13 // indirect
15+
github.com/mattn/go-isatty v0.0.16 // indirect
16+
github.com/mattn/go-runewidth v0.0.13 // indirect
17+
github.com/rivo/uniseg v0.2.0 // indirect
18+
)
619

720
require (
821
github.com/go-ole/go-ole v1.2.6 // indirect
@@ -13,5 +26,5 @@ require (
1326

1427
require (
1528
github.com/shirou/gopsutil/v3 v3.22.7
16-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
29+
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec // indirect
1730
)

go.sum

+35-1
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,50 @@
1+
github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE=
2+
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
3+
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8=
4+
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
5+
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8=
6+
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
7+
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
18
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
29
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
310
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
411
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
512
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
13+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
614
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
715
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
16+
github.com/jedib0t/go-pretty/v6 v6.3.9 h1:GAK/1WJY9WVVrKd601HGB89ihLBDfJnUIJye31PY+uk=
17+
github.com/jedib0t/go-pretty/v6 v6.3.9/go.mod h1:MgmISkTWDSFu0xOqiZ0mKNntMQ2mDgOcwOkwBEkMDJI=
818
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
19+
github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA=
20+
github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg=
21+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
22+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
23+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
24+
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
25+
github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
26+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
27+
github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
28+
github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
929
github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=
1030
github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
31+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
32+
github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18=
1133
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1234
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1335
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
1436
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
37+
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
38+
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
39+
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
40+
github.com/rs/zerolog v1.28.0 h1:MirSo27VyNi7RJYP3078AA1+Cyzd2GB66qy3aUHvsWY=
41+
github.com/rs/zerolog v1.28.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
1542
github.com/shirou/gopsutil/v3 v3.22.7 h1:flKnuCMfUUrO+oAvwAd6GKZgnPzr098VA/UJ14nhJd4=
1643
github.com/shirou/gopsutil/v3 v3.22.7/go.mod h1:s648gW4IywYzUfE/KjXxUsqrqx/T2xO5VqOXxONeRfI=
1744
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
1845
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
1946
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
47+
github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
2048
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
2149
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
2250
github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk=
@@ -25,11 +53,17 @@ github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPR
2553
github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
2654
golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7 h1:ZrnxWX62AgTKOSagEqxvb3ffipvEDX2pl7E1TdqLqIc=
2755
golang.org/x/sync v0.0.0-20220923202941-7f9b1623fab7/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
56+
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
57+
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2858
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
2959
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
60+
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
61+
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3062
golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
31-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a h1:dGzPydgVsqGcTRVwiLJ1jVbufYwmzD3LfVPLKsKg+0k=
3263
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
64+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
65+
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec h1:BkDtF2Ih9xZ7le9ndzTA7KJow28VbQW3odyk/8drmuI=
66+
golang.org/x/sys v0.0.0-20220928140112-f11e5e49a4ec/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
3367
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3468
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
3569
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/model/snapshot.go

+13-116
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import (
44
"context"
55
"database/sql"
66
"errors"
7-
"fmt"
87
"time"
98

109
_ "github.com/mattn/go-sqlite3"
1110
)
1211

12+
var ErrNoRows = errors.New("no rows for requested query")
13+
var ErrTimedOut = errors.New("query time limit exceeded")
14+
1315
type Stat struct {
1416
Sent uint64
1517
Received uint64
@@ -18,12 +20,18 @@ type Stat struct {
1820

1921
type Snapshot struct {
2022
Timestamp int64
21-
Stat Stat
23+
Stat
2224
}
2325

2426
type MonthStat struct {
2527
Month string
26-
Stat Stat
28+
Stat
29+
}
30+
31+
type DateStat struct {
32+
HoursMonitored int
33+
Date string // YYYY-MM-DD
34+
Stat
2735
}
2836

2937
type SnapshotModel struct {
@@ -46,122 +54,11 @@ func (m *SnapshotModel) Insert(ctx context.Context, s *Snapshot) error {
4654

4755
if err != nil {
4856
if errors.Is(err, context.DeadlineExceeded) {
49-
return fmt.Errorf("inserting snapshot timed out %v", err)
57+
return ErrTimedOut
5058
}
5159

52-
return fmt.Errorf("failed to insert snapshot: %s", err)
60+
return err
5361
}
5462

5563
return nil
5664
}
57-
58-
func (m *SnapshotModel) GetStatsByMonth(ctx context.Context, month string) ([]Snapshot, error) {
59-
query := `SELECT
60-
strftime('%s', strftime('%Y-%m-%d', timestamp, 'unixepoch')) AS day_unix,
61-
SUM(sent),
62-
SUM(received),
63-
SUM(total)
64-
FROM snapshots
65-
WHERE strftime('%m', timestamp, 'unixepoch') = ?
66-
GROUP BY day_unix
67-
ORDER BY day_unix DESC`
68-
69-
timeout, cancel := context.WithTimeout(ctx, 3*time.Second)
70-
71-
defer cancel()
72-
73-
rows, err := m.db.QueryContext(timeout, query, month)
74-
75-
if err != nil {
76-
if errors.Is(err, context.DeadlineExceeded) {
77-
return nil, fmt.Errorf("querying snapshots timed out %v", err)
78-
}
79-
80-
return nil, fmt.Errorf("failed to query: %s", err)
81-
}
82-
83-
var stats []Snapshot
84-
85-
defer rows.Close()
86-
87-
for rows.Next() {
88-
var s Snapshot
89-
90-
err := rows.Scan(&s.Timestamp, &s.Stat.Sent, &s.Stat.Received, &s.Stat.Total)
91-
92-
if err != nil {
93-
return stats, fmt.Errorf("found no rows: %s", err)
94-
}
95-
96-
stats = append(stats, s)
97-
}
98-
99-
return stats, nil
100-
}
101-
102-
func (m *SnapshotModel) GetMonthStat(ctx context.Context, month string) (MonthStat, error) {
103-
query := `SELECT
104-
strftime('%m', timestamp, 'unixepoch') AS month, SUM(sent), SUM(received), SUM(total)
105-
FROM snapshots
106-
WHERE month = ?
107-
GROUP BY month`
108-
109-
timeout, cancel := context.WithTimeout(ctx, 3*time.Second)
110-
111-
defer cancel()
112-
113-
var s MonthStat
114-
115-
if err := m.db.QueryRowContext(timeout, query, month).Scan(&s.Month, &s.Stat.Sent, &s.Stat.Received, &s.Stat.Total); err != nil {
116-
if errors.Is(err, context.DeadlineExceeded) {
117-
return s, fmt.Errorf("querying snapshot timed out %v", err)
118-
}
119-
if errors.Is(err, sql.ErrNoRows) {
120-
return s, fmt.Errorf("found no rows: %s", err)
121-
}
122-
123-
return s, fmt.Errorf("failed to query: %s", err)
124-
}
125-
126-
return s, nil
127-
}
128-
129-
func (m *SnapshotModel) GetAllStats(ctx context.Context) ([]Snapshot, error) {
130-
query := `SELECT
131-
strftime('%s', strftime('%Y-%m-%d', timestamp, 'unixepoch')) AS day_unix, SUM(sent), SUM(received), SUM(total)
132-
FROM snapshots
133-
GROUP BY day_unix
134-
ORDER BY day_unix DESC`
135-
136-
timeout, cancel := context.WithTimeout(ctx, 5*time.Second)
137-
138-
defer cancel()
139-
140-
rows, err := m.db.QueryContext(timeout, query)
141-
142-
if err != nil {
143-
if errors.Is(err, context.DeadlineExceeded) {
144-
return nil, fmt.Errorf("querying snapshots timed out %v", err)
145-
}
146-
147-
return nil, fmt.Errorf("failed to query: %s", err)
148-
}
149-
150-
var stats []Snapshot
151-
152-
defer rows.Close()
153-
154-
for rows.Next() {
155-
var s Snapshot
156-
157-
err := rows.Scan(&s.Timestamp, &s.Stat.Sent, &s.Stat.Received, &s.Stat.Total)
158-
159-
if err != nil {
160-
return stats, fmt.Errorf("found no rows: %s", err)
161-
}
162-
163-
stats = append(stats, s)
164-
}
165-
166-
return stats, nil
167-
}

0 commit comments

Comments
 (0)