diff --git a/internal/db/ports.go b/internal/db/ports.go index 992225c..4c78752 100644 --- a/internal/db/ports.go +++ b/internal/db/ports.go @@ -49,6 +49,11 @@ func (s *Store) PortGetPaired(deviceID int64, name string, side string) (*models return p, nil } +func (s *Store) PortUpdateName(id int64, name string) error { + _, err := s.DB.Exec(`UPDATE device_ports SET name = ? WHERE id = ?`, name, id) + return err +} + func (s *Store) portCreateFromModelTx(tx *sql.Tx, deviceID int64, model *models.DeviceModel) error { for _, mp := range model.Ports { if model.IsPatchPanel || model.IsWallSocket { diff --git a/internal/handlers/devices.go b/internal/handlers/devices.go index 407b413..a9e8a1a 100644 --- a/internal/handlers/devices.go +++ b/internal/handlers/devices.go @@ -148,6 +148,34 @@ func (h *Handlers) DeviceDelete(w http.ResponseWriter, r *http.Request) { } } +func (h *Handlers) DeviceRenamePorts(w http.ResponseWriter, r *http.Request) { + idStr := r.PathValue("id") + id, _ := strconv.ParseInt(idStr, 10, 64) + + device, err := h.Store.DeviceGetByID(id) + if err != nil || device == nil { + http.NotFound(w, r) + return + } + + r.ParseForm() + portIDs := r.Form["port_id"] + portNames := r.Form["port_name"] + + for i := range portIDs { + if i >= len(portNames) { + break + } + pid, err := strconv.ParseInt(portIDs[i], 10, 64) + if err != nil { + continue + } + h.Store.PortUpdateName(pid, portNames[i]) + } + + h.redirect(w, r, "/devices/"+idStr) +} + func (h *Handlers) renderDeviceError(w http.ResponseWriter, device models.Device, errMsg string) { connTypes, _ := h.Store.ConnectionTypeGetAll() if connTypes == nil { diff --git a/main.go b/main.go index 2dd643c..39dc99c 100644 --- a/main.go +++ b/main.go @@ -35,6 +35,7 @@ func main() { mux.HandleFunc("POST /racks/{id}/devices/add/unracked", h.RackAddUnrackedDevice) mux.HandleFunc("POST /racks/{id}/devices/{devId}/remove", h.RackRemoveDevice) mux.HandleFunc("POST /devices/{id}/edit", h.DeviceEdit) + mux.HandleFunc("POST /devices/{id}/ports/rename", h.DeviceRenamePorts) mux.HandleFunc("POST /devices/{id}/delete", h.DeviceDelete) mux.HandleFunc("POST /devices/add", h.DeviceCreate) mux.HandleFunc("GET /devices/{id}", h.DeviceView)