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 }