watchyourlan/internal/db/edit.go
2024-08-24 02:30:04 +07:00

77 lines
2.2 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,
"DNS" TEXT NOT NULL,
"IFACE" TEXT,
"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,
"NAME" TEXT NOT NULL,
"DNS" TEXT NOT NULL,
"IFACE" TEXT,
"IP" TEXT,
"MAC" TEXT,
"HW" TEXT,
"DATE" TEXT,
"KNOWN" INTEGER DEFAULT 0,
"NOW" INTEGER DEFAULT 0
);`
dbExec(path, sqlStatement)
}
// Insert - insert host into table
func Insert(path, table string, oneHost models.Host) {
oneHost.Name = quoteStr(oneHost.Name)
oneHost.Hw = quoteStr(oneHost.Hw)
sqlStatement := `INSERT INTO '%s' (NAME, DNS, IFACE, IP, MAC, HW, DATE, KNOWN, NOW)
VALUES ('%s','%s','%s','%s','%s','%s','%s','%d','%d');`
sqlStatement = fmt.Sprintf(sqlStatement, table, oneHost.Name, oneHost.DNS, oneHost.Iface, oneHost.IP, oneHost.Mac, oneHost.Hw, oneHost.Date, oneHost.Known, oneHost.Now)
dbExec(path, sqlStatement)
}
// Update - update host
func Update(path, table string, oneHost models.Host) {
oneHost.Name = quoteStr(oneHost.Name)
oneHost.Hw = quoteStr(oneHost.Hw)
sqlStatement := `UPDATE '%s' set
NAME = '%s', DNS = '%s', IFACE = '%s', IP = '%s', MAC = '%s', HW = '%s', DATE = '%s',
KNOWN = '%d', NOW = '%d'
WHERE ID = '%d';`
sqlStatement = fmt.Sprintf(sqlStatement, table, oneHost.Name, oneHost.DNS, oneHost.Iface, 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, table string, id int) {
sqlStatement := `DELETE FROM '%s' WHERE ID='%d';`
sqlStatement = fmt.Sprintf(sqlStatement, table, id)
dbExec(path, sqlStatement)
}
// Clear - delete all hosts from table
func Clear(path, table string) {
sqlStatement := `DELETE FROM '%s';`
sqlStatement = fmt.Sprintf(sqlStatement, table)
dbExec(path, sqlStatement)
}