watchyourlan/internal/db/sqlite.go
2023-10-06 22:56:11 +07:00

62 lines
1 KiB
Go

package db
import (
"sync"
"github.com/jmoiron/sqlx"
// Import sqlite module
_ "modernc.org/sqlite"
"github.com/aceberg/WatchYourLAN/internal/check"
"github.com/aceberg/WatchYourLAN/internal/models"
)
var mu sync.Mutex
func dbExec(path, sqlStatement string) {
mu.Lock()
db, err := sqlx.Connect("sqlite", path)
check.IfError(err)
defer db.Close()
_, err = db.Exec(sqlStatement)
mu.Unlock()
check.IfError(err)
}
// Select - select all hosts
func Select(path string) (dbHosts []models.Host) {
sqlStatement := `SELECT * FROM "now" ORDER BY DATE DESC`
mu.Lock()
db, _ := sqlx.Connect("sqlite", path)
defer db.Close()
err := db.Select(&dbHosts, sqlStatement)
mu.Unlock()
check.IfError(err)
return dbHosts
}
// SelectHist - select all history
func SelectHist(path string) (hist []models.History) {
sqlStatement := `SELECT * FROM "history" ORDER BY ID DESC`
mu.Lock()
db, _ := sqlx.Connect("sqlite", path)
defer db.Close()
err := db.Select(&hist, sqlStatement)
mu.Unlock()
check.IfError(err)
return hist
}