From 3c5aa418df66636b3f055863323a0d5f8e823b64 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Wed, 25 Sep 2024 14:59:18 +1000 Subject: [PATCH] handle db insert --- server/handler/vmImport.go | 40 +++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/server/handler/vmImport.go b/server/handler/vmImport.go index 3f0bf1d..d616dd7 100644 --- a/server/handler/vmImport.go +++ b/server/handler/vmImport.go @@ -1,7 +1,10 @@ package handler import ( + "context" + "database/sql" "encoding/json" + "errors" "fmt" "io" "net/http" @@ -34,13 +37,40 @@ func (h *Handler) VmImport(w http.ResponseWriter, r *http.Request) { prettyPrint(inData) } - // Create an instance of CreateInventoryParams - var params queries.CreateInventoryParams + ctx := context.Background() - // Convert vmModel to CreateInventoryParams using the utility function - db.ConvertToSQLParams(&inData, ¶ms) + // TODO - query Inventory table for this VM before adding it + h.Logger.Debug("Checking inventory table for VM record") + invParams := queries.GetInventoryVmIdParams{ + VmId: sql.NullString{String: inData.VmId, Valid: inData.VmId != ""}, + DatacenterName: sql.NullString{String: inData.Datacenter, Valid: inData.Datacenter != ""}, + } + _, err = h.Database.Queries().GetInventoryVmId(ctx, invParams) - prettyPrint(params) + if err != nil { + if errors.Is(err, sql.ErrNoRows) { + // do the insert + // Create an instance of CreateInventoryParams + var params queries.CreateInventoryParams + + // Convert vmModel to CreateInventoryParams using the utility function + db.ConvertToSQLParams(&inData, ¶ms) + prettyPrint(params) + + // Insert the new inventory record into the database + result, err := h.Database.Queries().CreateInventory(ctx, params) + if err != nil { + h.Logger.Error("unable to perform database insert", "error", err) + } else { + h.Logger.Debug("created database record", "insert_result", result) + } + + } else { + h.Logger.Error("unable to check inventory for vm", "error", err, "vm_id", inData.VmId, "datacenter_name", inData.Datacenter) + } + } else { + h.Logger.Info("not adding vm to inventory table since record alraedy exists", "vm_id", inData.VmId, "datacenter_name", inData.Datacenter) + } //h.Logger.Debug("received import request", "body", string(reqBody)) w.WriteHeader(http.StatusOK)