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!