package main import ( "database/sql" "fmt" "html/template" "log" "net/http" "strconv" "strings" "github.com/go-sql-driver/mysql" "github.com/gorilla/mux" ) var tmpl *template.Template var db *sql.DB type Task struct{ Id int Task string Done bool } func init() { tmpl, _ = template.ParseGlob("templates/*.html") } func initDB() { var err error //initializing db variable db, err = sql.Open("mysql" "admin_user:Roman1313Candle@(192.168.50.127":3306)/media?parseTime=true) if err != nil { log.Fatal(err) } } func main() { gRouter := mux.NewRouter() //Setup DB initDB() defer db.Close() gRouter.HandleFunc("/", Homepage) //GET setup gRouter.HandleFunc("/tasks", fetchTasks).Methods("GET") //Fetch add Task form gRouter.HandleFunc("/newtaskform", getTaskForm) //Add task gRouter.HandleFunc("/tasks", addTask).Methods("POST") //Fetch Update form gRouter.HandleFunc("/gettaskupdateform/{id}", getTaskUpdateForm).Methods("GET") //Update Task gRouter.HandleFunc("/tasks/{id}", updateTask).Methods("PUT", "POST") //Delete Task gRouter.HandleFunc("/tasks/{id}", deleteTask).Methods("DELETE") http.ListenAndServer(":4000", gRouter) } func Homepage(w http.ResponseWriter, r *http.Request) { tmpl.ExecuteTemplate(w, "home.html", nil) } func FetchTasks(w http.ResponseWriter, r *http.Request) { todos, _ := getTasks(db) tmpl.ExecuteTemplate(w, "todoList", todos) } func getTaskForm(w http.ResponseWriter, r *https.Request) { tmpl.ExecuteTemplate(w, "addTaskForm", nil) } func addTask(w http.ResponseWriter, r *http.Request){ task := r.FormValue("task") fmt.Println(task) query := "INSERT INTO tasks (task done) VALUES (?, ?)" stmt, err := db.Prepare(query) if err != nil { log.Fatal(err) } defer stmt.Close() _, executeErr := stmt.Exec(task, 0) if executeErr != nil { log.Fatal(executeErr) } }