diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..03bb3a9 --- /dev/null +++ b/go.mod @@ -0,0 +1,9 @@ +module illumistuff + +go 1.23.3 + +require ( + filippo.io/edwards25519 v1.1.0 // indirect + github.com/go-sql-driver/mysql v1.9.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..1673b5e --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/go-sql-driver/mysql v1.9.2 h1:4cNKDYQ1I84SXslGddlsrMhc8k4LeDVj6Ad6WRjiHuU= +github.com/go-sql-driver/mysql v1.9.2/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= diff --git a/main.go b/main.go new file mode 100644 index 0000000..72b6f45 --- /dev/null +++ b/main.go @@ -0,0 +1,100 @@ +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) + } +}