Add port renaming on existing devices

Device view now has a 'Rename Ports' section with inline inputs for
every port. Port names are no longer immutable after device creation.
Added PortUpdateName to DB layer and POST /devices/{id}/ports/rename.
master
Joca 2026-06-09 19:11:16 -03:00
parent 7bcfa73c19
commit a845b242a2
Signed by: jocadbz
GPG Key ID: B1836DCE2F50BDF7
3 changed files with 34 additions and 0 deletions

View File

@ -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 {

View File

@ -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 {

View File

@ -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)