Add IP field, ping service, status endpoint and UI; update README
This commit is contained in:
@@ -27,6 +27,7 @@ func InitDB() (*DB, error) {
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL,
|
||||
mac TEXT NOT NULL UNIQUE,
|
||||
ip TEXT NOT NULL,
|
||||
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
);`
|
||||
@@ -36,13 +37,19 @@ func InitDB() (*DB, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Füge IP-Spalte hinzu, falls sie nicht existiert
|
||||
_, err = db.Exec("ALTER TABLE pcs ADD COLUMN ip TEXT DEFAULT ''")
|
||||
if err != nil {
|
||||
// Spalte existiert bereits, ignorieren
|
||||
}
|
||||
|
||||
log.Println("Datenbank erfolgreich initialisiert")
|
||||
return &DB{db}, nil
|
||||
}
|
||||
|
||||
// GetAllPCs holt alle PCs aus der Datenbank
|
||||
func (db *DB) GetAllPCs() ([]models.PC, error) {
|
||||
rows, err := db.Query("SELECT id, name, mac, created_at, updated_at FROM pcs ORDER BY name")
|
||||
rows, err := db.Query("SELECT id, name, mac, ip, created_at, updated_at FROM pcs ORDER BY name")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -51,7 +58,7 @@ func (db *DB) GetAllPCs() ([]models.PC, error) {
|
||||
var pcs []models.PC
|
||||
for rows.Next() {
|
||||
var pc models.PC
|
||||
err := rows.Scan(&pc.ID, &pc.Name, &pc.MAC, &pc.CreatedAt, &pc.UpdatedAt)
|
||||
err := rows.Scan(&pc.ID, &pc.Name, &pc.MAC, &pc.IP, &pc.CreatedAt, &pc.UpdatedAt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -62,11 +69,11 @@ func (db *DB) GetAllPCs() ([]models.PC, error) {
|
||||
}
|
||||
|
||||
// CreatePC erstellt einen neuen PC-Eintrag
|
||||
func (db *DB) CreatePC(name, mac string) (*models.PC, error) {
|
||||
func (db *DB) CreatePC(name, mac, ip string) (*models.PC, error) {
|
||||
now := time.Now()
|
||||
result, err := db.Exec(
|
||||
"INSERT INTO pcs (name, mac, created_at, updated_at) VALUES (?, ?, ?, ?)",
|
||||
name, mac, now, now,
|
||||
"INSERT INTO pcs (name, mac, ip, created_at, updated_at) VALUES (?, ?, ?, ?, ?)",
|
||||
name, mac, ip, now, now,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -81,17 +88,18 @@ func (db *DB) CreatePC(name, mac string) (*models.PC, error) {
|
||||
ID: int(id),
|
||||
Name: name,
|
||||
MAC: mac,
|
||||
IP: ip,
|
||||
CreatedAt: now,
|
||||
UpdatedAt: now,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// UpdatePC aktualisiert einen bestehenden PC-Eintrag
|
||||
func (db *DB) UpdatePC(id int, name, mac string) (*models.PC, error) {
|
||||
func (db *DB) UpdatePC(id int, name, mac, ip string) (*models.PC, error) {
|
||||
now := time.Now()
|
||||
_, err := db.Exec(
|
||||
"UPDATE pcs SET name = ?, mac = ?, updated_at = ? WHERE id = ?",
|
||||
name, mac, now, id,
|
||||
"UPDATE pcs SET name = ?, mac = ?, ip = ?, updated_at = ? WHERE id = ?",
|
||||
name, mac, ip, now, id,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -101,6 +109,7 @@ func (db *DB) UpdatePC(id int, name, mac string) (*models.PC, error) {
|
||||
ID: id,
|
||||
Name: name,
|
||||
MAC: mac,
|
||||
IP: ip,
|
||||
UpdatedAt: now,
|
||||
}, nil
|
||||
}
|
||||
@@ -115,9 +124,9 @@ func (db *DB) DeletePC(id int) error {
|
||||
func (db *DB) GetPCByID(id int) (*models.PC, error) {
|
||||
var pc models.PC
|
||||
err := db.QueryRow(
|
||||
"SELECT id, name, mac, created_at, updated_at FROM pcs WHERE id = ?",
|
||||
"SELECT id, name, mac, ip, created_at, updated_at FROM pcs WHERE id = ?",
|
||||
id,
|
||||
).Scan(&pc.ID, &pc.Name, &pc.MAC, &pc.CreatedAt, &pc.UpdatedAt)
|
||||
).Scan(&pc.ID, &pc.Name, &pc.MAC, &pc.IP, &pc.CreatedAt, &pc.UpdatedAt)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
Reference in New Issue
Block a user