init project
This commit is contained in:
154
handlers/user.go
Normal file
154
handlers/user.go
Normal file
@@ -0,0 +1,154 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"tes-rssa/database"
|
||||
"tes-rssa/models"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func GetUser(w http.ResponseWriter, r *http.Request) {
|
||||
vars := mux.Vars(r)
|
||||
fmt.Println(vars)
|
||||
column := vars["req"]
|
||||
value := r.URL.Query().Get("value")
|
||||
var user []models.User
|
||||
|
||||
query := fmt.Sprintf(`select * from "user" where %s like ?`, column)
|
||||
result := database.DB.Debug().Raw(query, "%"+value+"%").Find(&user)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
http.Error(w, "User not found", http.StatusNotFound)
|
||||
} else {
|
||||
http.Error(w, result.Error.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(user)
|
||||
}
|
||||
|
||||
func GetUserId(w http.ResponseWriter, r *http.Request) {
|
||||
params := mux.Vars(r)
|
||||
id := params["id"]
|
||||
|
||||
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 {
|
||||
http.Error(w, "User not found", http.StatusNotFound)
|
||||
} else {
|
||||
http.Error(w, result.Error.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(user)
|
||||
}
|
||||
|
||||
func GetAllUser(w http.ResponseWriter, r *http.Request) {
|
||||
var users []models.User
|
||||
result := database.DB.Debug().Raw(`SELECT * FROM "user"`).Find(&users)
|
||||
if result.Error != nil {
|
||||
if result.Error == gorm.ErrRecordNotFound {
|
||||
http.Error(w, "Users not found", http.StatusNotFound)
|
||||
} else {
|
||||
http.Error(w, result.Error.Error(), http.StatusInternalServerError)
|
||||
}
|
||||
return
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(users)
|
||||
}
|
||||
|
||||
func CreateUser(w http.ResponseWriter, r *http.Request) {
|
||||
var u models.InsertUser
|
||||
err := json.NewDecoder(r.Body).Decode(&u)
|
||||
if err != nil {
|
||||
http.Error(w, "Invalid request payload", http.StatusBadRequest)
|
||||
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 {
|
||||
http.Error(w, result.Error.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
res := &models.Response{
|
||||
ResponseCode: "00",
|
||||
ResponseMessage: "Berhasil Insert Data",
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(res)
|
||||
}
|
||||
|
||||
func UpdateUser(w http.ResponseWriter, r *http.Request) {
|
||||
params := mux.Vars(r)
|
||||
id := params["id"]
|
||||
|
||||
var u models.UpdateUser
|
||||
err := json.NewDecoder(r.Body).Decode(&u)
|
||||
if err != nil {
|
||||
http.Error(w, "Invalid request payload", http.StatusBadRequest)
|
||||
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 {
|
||||
http.Error(w, result.Error.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(res)
|
||||
}
|
||||
|
||||
func DeleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
params := mux.Vars(r)
|
||||
id := params["id"]
|
||||
|
||||
result := database.DB.Debug().Exec(`DELETE from "user" where id = ?`, id)
|
||||
if result.Error != nil {
|
||||
http.Error(w, result.Error.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
res := &models.Response{
|
||||
ResponseCode: "00",
|
||||
ResponseMessage: "Berhasil Delete Data",
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(res)
|
||||
}
|
||||
Reference in New Issue
Block a user