133 lines
3.4 KiB
Go
133 lines
3.4 KiB
Go
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)
|
|
}
|