/ api / cmd / main.go
main.go
 1  package main
 2  
 3  import (
 4  	"ebooks/pkg/db"
 5  	"ebooks/pkg/handlers"
 6  	"log"
 7  	"net/http"
 8  
 9  	"github.com/gorilla/mux"
10  )
11  
12  func main() {
13  	DB := db.Init()
14  	h := handlers.New(DB)
15  
16  	router := mux.NewRouter()
17  
18  	subrouter := router.PathPrefix("/api").Subrouter()
19  
20  	subrouter.HandleFunc("/authors", h.GetAuthors).Methods(http.MethodGet)
21  	subrouter.HandleFunc("/authors", h.CreateAuthor).Methods(http.MethodPost)
22  	subrouter.HandleFunc("/authors/{id}", h.GetAuthorById).Methods(http.MethodGet)
23  	subrouter.HandleFunc("/authors/{id}", h.UpdateAuthor).Methods(http.MethodPut)
24  	subrouter.HandleFunc("/authors/{id}", h.DeleteAuthor).Methods(http.MethodDelete)
25  
26  	subrouter.HandleFunc("/books", h.GetBooks).Methods(http.MethodGet)
27  	subrouter.HandleFunc("/books", h.CreateBook).Methods(http.MethodPost)
28  	subrouter.HandleFunc("/books/{id}", h.GetBookById).Methods(http.MethodGet)
29  	subrouter.HandleFunc("/books/{id}", h.UpdateBook).Methods(http.MethodPut)
30  	subrouter.HandleFunc("/books/{id}", h.DeleteBook).Methods(http.MethodDelete)
31  
32  	subrouter.HandleFunc("/ping", h.HealthCheck).Methods(http.MethodGet)
33  
34  	port := ":8080"
35  	log.Printf("API is running on http://localhost%v\n", port)
36  	http.ListenAndServe(port, router)
37  }