illumistuff/main.go
2025-06-11 21:24:49 -04:00

101 lines
1.8 KiB
Go

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)
}
}