summaryrefslogtreecommitdiff
path: root/internal/storage/db.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/storage/db.go')
-rw-r--r--internal/storage/db.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/internal/storage/db.go b/internal/storage/db.go
index 127f45d..ea9d764 100644
--- a/internal/storage/db.go
+++ b/internal/storage/db.go
@@ -37,12 +37,12 @@ type Record struct {
KernelMajor string
}
-func Open(path string) (*sql.DB, error) {
+func Open(ctx context.Context, path string) (*sql.DB, error) {
db, err := sql.Open("sqlite", path)
if err != nil {
return nil, err
}
- if _, err := db.Exec("PRAGMA foreign_keys = OFF"); err != nil {
+ if _, err := db.ExecContext(ctx, "PRAGMA foreign_keys = OFF"); err != nil {
db.Close()
return nil, err
}
@@ -108,6 +108,11 @@ func LoadRecords(ctx context.Context, db *sql.DB) ([]Record, error) {
defer rows.Close()
var out []Record
for rows.Next() {
+ select {
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ default:
+ }
var rec Record
var uptimeSec, bootTime int64
if err := rows.Scan(&rec.Host, &uptimeSec, &bootTime, &rec.OS, &rec.KernelName, &rec.KernelMajor); err != nil {
@@ -139,6 +144,11 @@ func importFile(ctx context.Context, insert *sql.Stmt, path, host string) error
defer f.Close()
sc := bufio.NewScanner(f)
for sc.Scan() {
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ default:
+ }
rec, ok := parseRecordLine(sc.Text())
if !ok {
continue