-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.go
53 lines (39 loc) · 1.12 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"log"
"pustaka-api/book"
"pustaka-api/handler"
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
func main() {
// refer https://github.com/go-sql-driver/mysql#dsn-data-source-name for details
dsn := "root:@tcp(127.0.0.1:3306)/pustaka-api?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("Db Erorr")
}
db.AutoMigrate(&book.Book{})
bookRepository := book.NewRepository(db)
bookService := book.NewService(bookRepository)
bookHandler := handler.NewBookHandler(bookService)
router := gin.Default()
v1 := router.Group("/v1")
v1.GET("/books", bookHandler.GetBooks)
v1.GET("/books/:id", bookHandler.GetBook) // :id akan dapat berubah
v1.PUT("/books/:id", bookHandler.UpdateBook)
v1.DELETE("/books/:id", bookHandler.DeleteBook)
v1.POST("/books", bookHandler.CreateBook)
//alur post data
//ke PostBooksHandler (/handler/book.go/PostBooksHandler)
router.Run(":8888")
}
//Layer GO
//
//1. Main
//2. Handler
//3. Service
//4. Repository
//5. DB
//6. MySql