refactor(instance): change instance deletion to use ID instead of name
- Update DBRemoveFrpcInstance to use instanceID for deletion - Modify DeleteInstanceHandler to accept and validate instanceID - Improve error messages for invalid instanceID format - Update logging to use instanceID instead of instanceName
This commit is contained in:
+2
-2
@@ -385,8 +385,8 @@ func DBQueryFrpcInstance(userID int, instanceName string) (FrpcInstance, error)
|
||||
return instance, nil
|
||||
}
|
||||
|
||||
func DBRemoveFrpcInstance(userID int, instanceName string) error {
|
||||
_, err := frpcDB.Exec("DELETE FROM frpcInstances WHERE userID = ? AND name = ?", userID, instanceName)
|
||||
func DBRemoveFrpcInstanceByID(instanceID int) error {
|
||||
_, err := frpcDB.Exec("DELETE FROM frpcInstances WHERE id = ?", instanceID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete frpc instance: %w", err)
|
||||
}
|
||||
|
||||
@@ -219,9 +219,15 @@ func DeleteInstanceHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
instanceName := getStringFromMap(reqMap, "instanceName")
|
||||
if instanceName == "" {
|
||||
SendErrorResponse(w, http.StatusBadRequest, "instanceName is required")
|
||||
instanceIDStr := getStringFromMap(reqMap, "instanceID")
|
||||
if instanceIDStr == "" {
|
||||
SendErrorResponse(w, http.StatusBadRequest, "instanceID is required")
|
||||
return
|
||||
}
|
||||
|
||||
instanceID, err := strconv.Atoi(instanceIDStr)
|
||||
if err != nil {
|
||||
SendErrorResponse(w, http.StatusBadRequest, "Invalid instanceID format")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -246,10 +252,10 @@ func DeleteInstanceHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
var instance FrpcInstance
|
||||
instance, err = DBQueryFrpcInstance(userID, instanceName)
|
||||
instance, err = DBQueryFrpcInstanceByID(instanceID)
|
||||
if err == sql.ErrNoRows {
|
||||
SendErrorResponse(w, http.StatusNotFound, "Instance not found")
|
||||
postLog.Error(fmt.Sprintf("[DeleteInstanceHandler] User %d tried to delete a not existed instance: %s", userID, instanceName))
|
||||
postLog.Error(fmt.Sprintf("[DeleteInstanceHandler] User %d tried to delete a not existed instance: %d", userID, instanceID))
|
||||
return
|
||||
}
|
||||
if err != nil {
|
||||
@@ -259,8 +265,8 @@ func DeleteInstanceHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
if instance.BootAtStart {
|
||||
if err := removeBootService(user.Username, instanceName); err != nil {
|
||||
postLog.Error(fmt.Sprintf("[DeleteInstanceHandler] Failed to remove boot service for instance %s: %v", instanceName, err))
|
||||
if err := removeBootService(user.Username, instance.Name); err != nil {
|
||||
postLog.Error(fmt.Sprintf("[DeleteInstanceHandler] Failed to remove boot service for instance %s: %v", instance.Name, err))
|
||||
SendErrorResponse(w, http.StatusInternalServerError, "Failed to remove boot service")
|
||||
return
|
||||
}
|
||||
@@ -274,16 +280,16 @@ func DeleteInstanceHandler(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
if err := DBRemoveFrpcInstance(userID, instanceName); err != nil {
|
||||
postLog.Error(fmt.Sprintf("[DeleteInstanceHandler] Failed to delete instance %s from database: %v", instanceName, err))
|
||||
if err := DBRemoveFrpcInstanceByID(instanceID); err != nil {
|
||||
postLog.Error(fmt.Sprintf("[DeleteInstanceHandler] Failed to delete instance %d from database: %v", instanceID, err))
|
||||
SendErrorResponse(w, http.StatusInternalServerError, "Failed to delete instance from database")
|
||||
return
|
||||
}
|
||||
|
||||
SendSuccessResponse(w, "Instance deleted successfully", map[string]interface{}{
|
||||
"name": instanceName,
|
||||
"id": instanceID,
|
||||
})
|
||||
postLog.Info(fmt.Sprintf("[DeleteInstanceHandler] Instance %s deleted successfully", instanceName))
|
||||
postLog.Info(fmt.Sprintf("[DeleteInstanceHandler] Instance %d deleted successfully", instanceID))
|
||||
}
|
||||
|
||||
func ModifyInstanceHandler(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
@@ -56,7 +55,7 @@ func createBootService(username, instanceName, configPath, runUser string) error
|
||||
case "windows":
|
||||
return createWindowsBootService(username, instanceName, configPath)
|
||||
default:
|
||||
return errors.New("unsupported init system")
|
||||
return fmt.Errorf("unsupported init system: %s", initType)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user