1

Please Help to solve this error!

I made a code for parsing from my html like this:

parsehtml.go

func addData(w *http.ResponseWriter, r *http.Request, c *gin.Context) {
    if r.Method == http.MethodGet {
        temp, err := template.ParseFiles("web/forms.html")
        if err != nil {
            panic(err)
        }
        temp.Execute(w, nil)
    } else if r.Method == http.MethodPost {

        r.ParseForm()

        var kendaraan entities.Kendaraan
        kendaraan.NamaPemilik = r.Form.Get("owner_name")
        kendaraan.NamaKendaraan = r.Form.Get("vec_name")
        vecTypeStr := r.Form.Get("vec_type")
        vecType, err := strconv.ParseInt(vecTypeStr, 10, 32)
        if err != nil {
            panic(err)
        }
        kendaraan.NomorKendaraan = int32(vecType)
        vecCodeStr := r.Form.Get("vec_code")
        vecCode, err := strconv.ParseInt(vecCodeStr, 10, 32)
        if err != nil {
            panic(err)
        }
        kendaraan.NomorKendaraan = int32(vecCode)
        kendaraan.DetailServis = r.Form.Get("vec_detail")

        var data = make(map[string]interface{})

        vErrors := validateData.Struct(kendaraan)

        if vErrors != nil {
            data["tabel"] = kendaraan
            data["validation"] = vErrors
        } else {
            data["pesan"] = "Data pasien berhasil disimpan"
            processModel.CreateKendaraan(kendaraan)
        }

        temp, _ := template.ParseFiles("web/forms.html")
        temp.Execute(w, data)
    }

}

And i maded this codes for my Post Handlers

process.go

func (h *KendaraanHandler) CreateKendaraan(c *gin.Context) {
    var kendaraan entities.Kendaraan
    err := c.ShouldBindJSON(&kendaraan)
    if err != nil {
        fmt.Println("Received JSON payload:", c.Request.Body)
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    // Generate Tanggal Sekarang
    kendaraan.TanggalServis = time.Now()

    // Insert Data Ke Database
    stmt := `INSERT INTO data_servis_kendaraan (
        id_jenis, 
        nama_pemilik, 
        nama_kendaraan, 
        nomor_kendaraan, 
        detail_servis, 
        tanggal_servis, 
        status_servis
    ) VALUES ($1, $2, $3, $4, $5, $6, $7)
    RETURNING id`
    var id int
    err = h.DB.QueryRow(stmt,
        kendaraan.JenisID,
        kendaraan.NamaPemilik,
        kendaraan.NamaKendaraan,
        int32(kendaraan.NomorKendaraan),
        kendaraan.DetailServis,
        kendaraan.TanggalServis,
        kendaraan.StatusServis).Scan(&id)
    if err != nil {
        c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
        return
    }
    response := gin.H{
        "message": "Data telah dibuat!",
        "id":      id,
    }
    c.JSON(http.StatusCreated, response)
}

In first code, I got an error on my processModel.CreateKendaraan(kendaraan) It says:

"Cannot use 'kendaraan' (type entities.Kendaraan) as the type *gin.Context"

Some solution that I tried

In the kendaraan variable, I'm changing the codes to make it use the gin like this:

parsehtml.go

        var kendaraan entities.Kendaraan
        kendaraan.NamaPemilik = c.Request.Form.Get("owner_name")
        kendaraan.NamaKendaraan = c.Request.Form.Get("vec_name")
        vecTypeStr := c.Request.Form.Get("vec_type")
        vecType, err := strconv.ParseInt(vecTypeStr, 10, 32)
        if err != nil {
            panic(err)
        }
        kendaraan.NomorKendaraan = int32(vecType)
        vecCodeStr := c.Request.Form.Get("vec_code")
        vecCode, err := strconv.ParseInt(vecCodeStr, 10, 32)
        if err != nil {
            panic(err)
        }
        kendaraan.NomorKendaraan = int32(vecCode)
        kendaraan.DetailServis = c.Request.Form.Get("vec_detail")

The result still same. Can't find more solution around. Please Help!

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
MiPremix
  • 11
  • 2
  • I tried the code within the `process.go` and it seems to be right. I was able to successfully insert a record in the DB. You should add some details about the `parsehtml.go` file. How do you trigger this functionality? How do you define the variable `processModel` within it? You could also add the file `web/forms.html` to your question. Let me know, thanks! – ossan Jun 21 '23 at 07:15

0 Answers0