Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "database/sql"
- "github.com/gin-gonic/gin"
- _ "github.com/go-sql-driver/mysql"
- "gopkg.in/gorp.v1"
- "log"
- "strconv"
- )
- type Hewan struct {
- Id int64 `db:"Id" json:"id"`
- SpesiesHewan string `db:"SpesiesHewan" json:"SpesiesHewan"`
- NamaHewan string `db:"NamaHewan" json:"NamaHewan"`
- HabitatHewan string `db:"HabitatHewan" json:"HabitatHewan"`
- }
- type Category struct {
- CategoryID int64 `db:"CategoryID" json:"CategoryID"`
- CategoryName string `db:"CategoryName" json:"CategoryName"`
- }
- type Product struct {
- ProductID int64 `db:"ProductID" json:"ProductID"`
- ProductName string `db:"ProductName" json:"ProductName"`
- ProductPrice int64 `db:"ProductPrice" json:"ProductPrice"`
- CategoryID int64 `db:"CategoryID" json:"CategoryID"`
- }
- var dbmap = InitDb()
- func InitDb() *gorp.DbMap {
- db, err := sql.Open("mysql", "root:@/myapidb")
- checkErr(err, "sql.Open failed")
- dbmap := &gorp.DbMap{Db: db, Dialect: gorp.MySQLDialect{"InnoDB", "UTF8"}}
- dbmap.AddTableWithName(Hewan{}, "Hewan").SetKeys(true, "Id")
- dbmap.AddTableWithName(Product{}, "Product").SetKeys(true, "ProductID")
- dbmap.AddTableWithName(Category{}, "Category").SetKeys(true, "CategoryID")
- err = dbmap.CreateTablesIfNotExists()
- checkErr(err, "Create tables failed")
- return dbmap
- }
- func checkErr(err error, msg string) {
- if err != nil {
- log.Fatalln(msg, err)
- }
- }
- func Cors() gin.HandlerFunc {
- return func(c *gin.Context) {
- c.Writer.Header().Add("Access-Control-Allow-Origin", "*")
- c.Next()
- }
- }
- func main() {
- r := gin.Default()
- r.Use(Cors())
- v1 := r.Group("api/v1")
- {
- v1.GET("/hewan", GetHewans)
- v1.GET("/hewan/:id", GetHewan)
- v1.POST("/hewan", PostHewan)
- v1.PUT("/hewan/:id", UpdateHewan)
- v1.DELETE("/hewan/:id", DeleteHewan)
- v1.GET("/product", GetProducts)
- v1.GET("/product/:ProductID", GetProduct)
- v1.POST("/product", PostProduct)
- v1.PUT("/product/:ProductID", UpdateProduct)
- v1.DELETE("/product/:ProductID", DeleteProduct)
- v1.GET("/category", GetCategories)
- v1.GET("/category/:CategoryID", GetCategory)
- v1.POST("/category", PostCategory)
- v1.PUT("/category/:CategoryID", UpdateCategory)
- v1.DELETE("/category/:CategoryID", DeleteCategory)
- }
- r.Run(":8080")
- }
- func GetCategories(c *gin.Context) {
- var category []Category
- _, err := dbmap.Select(&category, "SELECT * FROM Category")
- if err == nil {
- c.JSON(200, category)
- } else {
- c.JSON(404, gin.H{"error": "Data tidak ditemukan"})
- }
- }
- func GetCategory(c *gin.Context) {
- catid := c.Params.ByName("CategoryID")
- var category Category
- err := dbmap.SelectOne(&category, "SELECT * FROM Category WHERE CategoryID=?", catid)
- if err == nil {
- cateid, _ := strconv.ParseInt(catid, 0, 64)
- content := &Category{
- CategoryID: cateid,
- CategoryName: category.CategoryName,
- }
- c.JSON(200, content)
- } else {
- c.JSON(404, gin.H{"error": "Data tidak ditemukan"})
- }
- }
- func PostCategory(c *gin.Context) {
- var category Category
- c.Bind(&category)
- log.Println(category)
- if category.CategoryName != "" {
- if insert, _ := dbmap.Exec(`INSERT INTO category (CategoryName) VALUES (?)`, category.CategoryName); insert != nil {
- category_id, err := insert.LastInsertId()
- if err == nil {
- content := &Category{
- CategoryID: category_id,
- CategoryName: category.CategoryName,
- }
- c.JSON(201, content)
- } else {
- checkErr(err, "Gagal menambahkan data")
- }
- }
- } else {
- c.JSON(400, gin.H{"error": "Atribut kosong, harus diisi"})
- }
- }
- func UpdateCategory(c *gin.Context) {
- catid := c.Params.ByName("CategoryID")
- var category Category
- err := dbmap.SelectOne(&category, "SELECT * FROM Category WHERE CategoryID=?", catid)
- if err == nil {
- var catenew Category
- c.Bind(&catenew)
- category_id, _ := strconv.ParseInt(catid, 0, 64)
- category := Category{
- CategoryID: category_id,
- CategoryName: catenew.CategoryName,
- }
- if category.CategoryName != "" {
- _, err = dbmap.Update(&category)
- if err == nil {
- c.JSON(200, category)
- } else {
- checkErr(err, "Gagal mengubah data")
- }
- } else {
- c.JSON(400, gin.H{"error": "Atribut harus diisi"})
- }
- } else {
- c.JSON(404, gin.H{"error": "Categori tidak ditemukan"})
- }
- }
- func DeleteCategory(c *gin.Context) {
- catid := c.Params.ByName("CategoryID")
- var category Category
- err := dbmap.SelectOne(&category, "SELECT * FROM Category WHERE CategoryID=?", catid)
- if err == nil {
- _, err = dbmap.Delete(&category)
- if err == nil {
- c.JSON(200, gin.H{"id #" + catid: "berhasil dihapus"})
- } else {
- checkErr(err, "Data tidak berhasil dihapus")
- }
- } else {
- c.JSON(404, gin.H{"error": "Categori tidak ditemukan"})
- }
- }
- func GetProducts(c *gin.Context) {
- var product []Product
- _, err := dbmap.Select(&product, "SELECT * FROM Product")
- if err == nil {
- c.JSON(200, product)
- } else {
- c.JSON(404, gin.H{"error": "Tidak ada data product di tabel"})
- }
- }
- func GetProduct(c *gin.Context) {
- productid := c.Params.ByName("ProductID")
- var product Product
- err := dbmap.SelectOne(&product, "SELECT * FROM Product WHERE ProductID=?", productid)
- if err == nil {
- product_id, _ := strconv.ParseInt(productid, 0, 64)
- content := &Product{
- ProductID: product_id,
- ProductName: product.ProductName,
- ProductPrice: product.ProductPrice,
- CategoryID: product.CategoryID,
- }
- c.JSON(200, content)
- } else {
- c.JSON(404, gin.H{"error": "Data tidak ditemukan"})
- }
- }
- func PostProduct(c *gin.Context) {
- var product Product
- c.Bind(&product)
- log.Println(product)
- /*categoryid := c.Params.ByName("CategoryID")
- productprice := c.Params.ByName("ProductPrice")
- category_id, _ := strconv.Itoa(categoryid)
- product_price, _ := strconv.Itoa(productprice)*/
- if product.ProductName != "" && product.ProductPrice != 0 && product.CategoryID != 0 {
- if insert, _ := dbmap.Exec(`INSERT INTO Product (ProductName, ProductPrice, CategoryID) VALUES (?, ?, ?)`, product.ProductName, product.ProductPrice, product.CategoryID); insert != nil {
- product_id, err := insert.LastInsertId()
- if err == nil {
- content := &Product{
- ProductID: product_id,
- ProductName: product.ProductName,
- ProductPrice: product.ProductPrice,
- CategoryID: product.CategoryID,
- }
- c.JSON(201, content)
- } else {
- checkErr(err, "Gagal menambahkan data")
- }
- }
- } else {
- c.JSON(400, gin.H{"error": "Atribut kosong, harus diisi / Categori ID tidak sesusai dengan Tabel Category"})
- }
- }
- func UpdateProduct(c *gin.Context) {
- productid := c.Params.ByName("ProductID")
- var product Product
- err := dbmap.SelectOne(&product, "SELECT * FROM Product WHERE ProductID=?", productid)
- if err == nil {
- var productnew Product
- c.Bind(&productnew)
- product_id, _ := strconv.ParseInt(productid, 0, 64)
- product := Product{
- ProductID: product_id,
- ProductName: productnew.ProductName,
- ProductPrice: productnew.ProductPrice,
- CategoryID: productnew.CategoryID,
- }
- if product.ProductName != "" && product.ProductPrice != 0 && product.CategoryID != 0 {
- _, err = dbmap.Update(&product)
- if err == nil {
- c.JSON(200, product)
- } else {
- checkErr(err, "Gagal mengubah data product")
- }
- } else {
- c.JSON(400, gin.H{"error": "Atribut harus diisi"})
- }
- } else {
- c.JSON(404, gin.H{"error": "Product tidak ditemukan"})
- }
- }
- func DeleteProduct(c *gin.Context) {
- productid := c.Params.ByName("ProductID")
- var product Product
- err := dbmap.SelectOne(&product, "SELECT * FROM Product WHERE ProductID=?", productid)
- if err == nil {
- _, err = dbmap.Delete(&product)
- if err == nil {
- c.JSON(200, gin.H{"id #" + productid: "berhasil dihapus"})
- } else {
- checkErr(err, "Data tidak berhasil dihapus")
- }
- } else {
- c.JSON(404, gin.H{"error": "Produk tidak ditemukan"})
- }
- }
- func PostHewan(c *gin.Context) {
- var hewan Hewan
- c.Bind(&hewan)
- log.Println(hewan)
- if hewan.NamaHewan != "" && hewan.SpesiesHewan != "" && hewan.HabitatHewan != "" {
- if insert, _ := dbmap.Exec(`INSERT INTO hewan (SpesiesHewan, NamaHewan, HabitatHewan) VALUES (?, ?, ?)`, hewan.SpesiesHewan, hewan.NamaHewan, hewan.HabitatHewan); insert != nil {
- hewan_id, err := insert.LastInsertId()
- if err == nil {
- content := &Hewan{
- Id: hewan_id,
- SpesiesHewan: hewan.SpesiesHewan,
- NamaHewan: hewan.NamaHewan,
- HabitatHewan: hewan.HabitatHewan,
- }
- c.JSON(201, content)
- } else {
- checkErr(err, "Gagal menambahkan data")
- }
- }
- } else {
- c.JSON(400, gin.H{"error": "Atribut kosong, harus diisi"})
- }
- /*db := InitDb()
- defer db.Close()
- var hewan Hewan
- c.Bind(&hewan)
- if hewan.SpesiesHewan != "" && hewan.NamaHewan != "" {
- db.Create(&hewan)
- c.JSON(201, gin.H{"Berhasil": hewan})
- } else {
- c.JSON(422, gin.H{"Error": "Data kosong"})
- }*/
- }
- func GetHewans(c *gin.Context) {
- var hewan []Hewan
- _, err := dbmap.Select(&hewan, "SELECT * FROM Hewan")
- if err == nil {
- c.JSON(200, hewan)
- } else {
- c.JSON(404, gin.H{"error": "Tidak ada data hewan di tabel"})
- }
- /*db := InitDb()
- defer db.Close()
- var hewans []Hewan
- db.Find(&hewans)
- c.JSON(200, hewans)
- */
- }
- func GetHewan(c *gin.Context) {
- id := c.Params.ByName("id")
- var hewan Hewan
- err := dbmap.SelectOne(&hewan, "SELECT * FROM hewan WHERE Id=? LIMIT 1", id)
- if err == nil {
- hewan_id, _ := strconv.ParseInt(id, 0, 64)
- content := &Hewan{
- Id: hewan_id,
- SpesiesHewan: hewan.SpesiesHewan,
- NamaHewan: hewan.NamaHewan,
- HabitatHewan: hewan.HabitatHewan,
- }
- c.JSON(200, content)
- } else {
- c.JSON(404, gin.H{"error": "Hewan tidak ditemukan"})
- }
- /*db := InitDb()
- defer db.Close()
- id := c.Params.ByName("id")
- var hewan Hewan
- db.First(&hewan, id)
- if hewan.Id != 0 {
- c.JSON(200, hewan)
- } else {
- c.JSON(404, hewan)
- }*/
- }
- func UpdateHewan(c *gin.Context) {
- id := c.Params.ByName("id")
- var hewan Hewan
- err := dbmap.SelectOne(&hewan, "SELECT * FROM Hewan WHERE Id=?", id)
- if err == nil {
- var hewanbaru Hewan
- c.Bind(&hewanbaru)
- hewan_id, _ := strconv.ParseInt(id, 0, 64)
- hewan := Hewan{
- Id: hewan_id,
- SpesiesHewan: hewanbaru.SpesiesHewan,
- NamaHewan: hewanbaru.NamaHewan,
- HabitatHewan: hewanbaru.HabitatHewan,
- }
- if hewan.SpesiesHewan != "" && hewan.NamaHewan != "" && hewan.HabitatHewan != "" {
- _, err = dbmap.Update(&hewan)
- if err == nil {
- c.JSON(200, hewan)
- } else {
- checkErr(err, "Gagal mengubah data")
- }
- } else {
- c.JSON(400, gin.H{"error": "Atribut harus diisi"})
- }
- } else {
- c.JSON(404, gin.H{"error": "Hewan tidak ditemukan"})
- }
- }
- func DeleteHewan(c *gin.Context) {
- id := c.Params.ByName("id")
- var hewan Hewan
- err := dbmap.SelectOne(&hewan, "SELECT * FROM Hewan WHERE Id=?", id)
- if err == nil {
- _, err = dbmap.Delete(&hewan)
- if err == nil {
- c.JSON(200, gin.H{"id #" + id: "berhasil dihapus"})
- } else {
- checkErr(err, "Data tidak berhasil dihapus")
- }
- } else {
- c.JSON(404, gin.H{"error": "Hewan tidak ditemukan"})
- }
- }
Add Comment
Please, Sign In to add comment