diff --git a/cmd/server/main.go b/cmd/server/main.go new file mode 100644 index 0000000..dbf0a85 --- /dev/null +++ b/cmd/server/main.go @@ -0,0 +1,41 @@ +package main + +import ( + "log" + "net/http" + "prak-03-todo/internal/db" + "prak-03-todo/internal/handlers" + + "github.com/gorilla/mux" +) + +func main() { + // Initialize database + db.InitDB() + + // Use mux.NewRouter() to initialize Gorilla Mux router + r := mux.NewRouter() + + // Home route + r.HandleFunc("/", handlers.Home).Methods("GET") + + // Group management routes + r.HandleFunc("/groups", handlers.GetAllGroupsHandler).Methods("GET") + r.HandleFunc("/groups", handlers.CreateGroupHandler).Methods("POST") + r.HandleFunc("/groups/{groupId}", handlers.GetGroupHandler).Methods("GET") + r.HandleFunc("/groups/{groupId}", handlers.RemoveGroupHandler).Methods("DELETE") + + // Task management routes + r.HandleFunc("/groups/{groupId}/tasks", handlers.CreateTaskHandler).Methods("POST") + r.HandleFunc("/groups/{groupId}/tasks", handlers.DisplayTasksByGroupHandler).Methods("GET") + r.HandleFunc("/tasks", handlers.DisplayTasksHandler).Methods("GET") + r.HandleFunc("/tasks/{taskId}", handlers.GetTaskHandler).Methods("GET") + r.HandleFunc("/tasks/{taskId}", handlers.UpdateTaskHandler).Methods("PUT") + r.HandleFunc("/tasks/{taskId}", handlers.RemoveTaskHandler).Methods("DELETE") + r.HandleFunc("/tasks/{taskId}/done", handlers.MarkTaskDoneHandler).Methods("PUT") + + // Use the http.ListenAndServe() function to start a new web server + log.Print("Starting server on :4000") + err := http.ListenAndServe(":4000", r) + log.Fatal(err) +}