73 lines
1.9 KiB
Go
73 lines
1.9 KiB
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/aceberg/WatchYourLAN/internal/models"
|
|
)
|
|
|
|
// Create - create DB if not exists
|
|
func Create(path string) {
|
|
|
|
sqlStatement := `CREATE TABLE IF NOT EXISTS "now" (
|
|
"ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
|
"NAME" TEXT NOT NULL,
|
|
"IP" TEXT,
|
|
"MAC" TEXT,
|
|
"HW" TEXT,
|
|
"DATE" TEXT,
|
|
"KNOWN" INTEGER DEFAULT 0,
|
|
"NOW" INTEGER DEFAULT 0
|
|
);`
|
|
dbExec(path, sqlStatement)
|
|
|
|
sqlStatement = `CREATE TABLE IF NOT EXISTS "history" (
|
|
"ID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
|
"HOST" INTEGER DEFAULT 0,
|
|
"NAME" TEXT NOT NULL,
|
|
"IP" TEXT,
|
|
"MAC" TEXT,
|
|
"HW" TEXT,
|
|
"DATE" TEXT,
|
|
"KNOWN" INTEGER DEFAULT 0,
|
|
"STATE" INTEGER DEFAULT 0
|
|
);`
|
|
dbExec(path, sqlStatement)
|
|
}
|
|
|
|
// Insert - insert host into table
|
|
func Insert(path string, oneHost models.Host) {
|
|
oneHost.Name = quoteStr(oneHost.Name)
|
|
oneHost.Hw = quoteStr(oneHost.Hw)
|
|
sqlStatement := `INSERT INTO "now" (NAME, IP, MAC, HW, DATE, KNOWN, NOW)
|
|
VALUES ('%s','%s','%s','%s','%s','%d','%d');`
|
|
sqlStatement = fmt.Sprintf(sqlStatement, oneHost.Name, oneHost.IP, oneHost.Mac, oneHost.Hw, oneHost.Date, oneHost.Known, oneHost.Now)
|
|
|
|
dbExec(path, sqlStatement)
|
|
}
|
|
|
|
// Update - update host
|
|
func Update(path string, oneHost models.Host) {
|
|
oneHost.Name = quoteStr(oneHost.Name)
|
|
oneHost.Hw = quoteStr(oneHost.Hw)
|
|
sqlStatement := `UPDATE "now" set
|
|
NAME = '%s', IP = '%s', MAC = '%s', HW = '%s', DATE = '%s',
|
|
KNOWN = '%d', NOW = '%d'
|
|
WHERE ID = '%d';`
|
|
sqlStatement = fmt.Sprintf(sqlStatement, oneHost.Name, oneHost.IP, oneHost.Mac, oneHost.Hw, oneHost.Date, oneHost.Known, oneHost.Now, oneHost.ID)
|
|
|
|
dbExec(path, sqlStatement)
|
|
}
|
|
|
|
// Delete - delete host from DB
|
|
func Delete(path string, id int) {
|
|
sqlStatement := `DELETE FROM "now" WHERE ID='%d';`
|
|
sqlStatement = fmt.Sprintf(sqlStatement, id)
|
|
dbExec(path, sqlStatement)
|
|
}
|
|
|
|
// Clear - delete all hosts from table
|
|
func Clear(path string) {
|
|
sqlStatement := `DELETE FROM "now";`
|
|
dbExec(path, sqlStatement)
|
|
}
|