package ginHandlers import ( "encoding/json" "net/http" "tes-rssa/database" "tes-rssa/models" "github.com/gin-gonic/gin" "gorm.io/gorm" ) // GetAllUser returs list of all users from the database // @Summary return list of all // @Description returs list of all users from the database // @Tags Users // @Success 200 {object} models.User // @Router /api/v1/user [get] func GetAllUser(c *gin.Context) { var users []models.User result := database.DB.Debug().Raw(`SELECT * FROM "user"`).Find(&users) if result.Error != nil { if result.Error == gorm.ErrRecordNotFound { c.JSON(http.StatusNotFound, result.Error) } else { c.JSON(http.StatusInternalServerError, result.Error) } return } c.JSON(http.StatusOK, users) } func GetUserId(c *gin.Context) { id := c.Request.URL.Query() var user models.User query := `select * from "user" where id = ?` result := database.DB.Debug().Raw(query, id).Find(&user) if result.Error != nil { if result.Error == gorm.ErrRecordNotFound { c.JSON(http.StatusNotFound, result.Error) } else { c.JSON(http.StatusInternalServerError, result.Error) } return } c.JSON(http.StatusOK, user) } func CreateUser(c *gin.Context) { var u models.InsertUser err := json.NewDecoder(c.Request.Body).Decode(&u) if err != nil { c.JSON(http.StatusBadRequest, "Invalid request payload") return } insertData := &models.InsertUser{ Nama: u.Nama, Umur: u.Umur, Alamat: u.Alamat, Agama: u.Agama, JenisKelamin: u.JenisKelamin, } queryInsert := `INSERT INTO "user" (nama, umur, alamat, agama, jenis_kelamin) VALUES (?, ?, ?, ?, ?)` result := database.DB.Debug().Exec(queryInsert, insertData.Nama, insertData.Umur, insertData.Alamat, insertData.Agama, insertData.JenisKelamin) if result.Error != nil { c.JSON(http.StatusInternalServerError, result.Error) return } res := &models.Response{ ResponseCode: "00", ResponseMessage: "Berhasil Insert Data", } c.JSON(http.StatusOK, res) } func UpdateUser(c *gin.Context) { id := c.Request.URL.Query() var u models.UpdateUser err := json.NewDecoder(c.Request.Body).Decode(&u) if err != nil { c.JSON(http.StatusBadRequest, "Invalid request payload") return } update := &models.UpdateUser{ Nama: u.Nama, Umur: u.Umur, Alamat: u.Alamat, Agama: u.Agama, JenisKelamin: u.JenisKelamin, } res := &models.Response{ ResponseCode: "00", ResponseMessage: "Berhasil Update Data", } result := database.DB.Debug().Exec(`UPDATE "user" SET nama = ?, umur = ?, alamat = ?, agama = ?, jenis_kelamin = ? WHERE ID = ?`, update.Nama, update.Umur, update.Alamat, update.Agama, update.JenisKelamin, id) if result.RowsAffected == 0 { res = &models.Response{ ResponseCode: "99", ResponseMessage: "Gagal update data", } } else if result.Error != nil { c.JSON(http.StatusInternalServerError, result.Error) return } c.JSON(http.StatusOK, res) } func DeleteUser(c *gin.Context) { id := c.Request.URL.Query() res := &models.Response{ ResponseCode: "00", ResponseMessage: "Berhasil Delete Data", } result := database.DB.Debug().Exec(`DELETE from "user" where id = ?`, id) if result.RowsAffected == 0 { res = &models.Response{ ResponseCode: "99", ResponseMessage: "Gagal delete data", } } else if result.Error != nil { c.JSON(http.StatusInternalServerError, result.Error) return } c.JSON(http.StatusOK, res) }