Refactor and reorganise a bit

Amolith created

Change summary

createHandler.go |  0 
deleteHandler.go | 15 +++------------
edit.go          |  6 ------
helperfuncs.go   | 17 +++++++++++++++++
main.go          |  6 +++---
readHandler.go   |  2 +-
updateHandler.go |  2 +-
7 files changed, 25 insertions(+), 23 deletions(-)

Detailed changes

delete.go → deleteHandler.go 🔗

@@ -1,15 +1,11 @@
 package main
 
 import (
-	"fmt"
-	"log"
 	"net/http"
 	"strings"
-
-	"github.com/dgraph-io/badger/v3"
 )
 
-func (m *model) delete(writer http.ResponseWriter, request *http.Request) {
+func (m *model) deleteHandler(writer http.ResponseWriter, request *http.Request) {
 	query := request.URL.Query()
 
 	token := request.Header.Get("Authorization")
@@ -25,12 +21,7 @@ func (m *model) delete(writer http.ResponseWriter, request *http.Request) {
 		http.Error(writer, "400 Bad Request: name parameter is required", 400)
 	}
 
-	err := m.database.Update(func(txn *badger.Txn) error {
-		return txn.Delete([]byte(name))
-	})
-	if err != nil {
-		log.Println(err)
-	}
+	response := m.delete(name)
 
-	http.Error(writer, fmt.Sprint("\"", name, "\" has been deleted"), 200)
+	writer.Write([]byte(response))
 }

edit.go 🔗

@@ -1,6 +0,0 @@
-package main
-
-import "net/http"
-
-func (m model) edit(writer http.ResponseWriter, request *http.Request) {
-}

helperfuncs.go 🔗

@@ -7,6 +7,9 @@ import (
 	"github.com/dgraph-io/badger/v3"
 )
 
+// Create shortens a given URL with an optional name. If a name is provided,
+// that name will be used. Otherwise, 4-character string will be generated and
+// used instead.
 func (m model) create(name string, url string) string {
 	err := m.database.Update(func(txn *badger.Txn) error {
 		return txn.Set([]byte(name), []byte(url))
@@ -18,6 +21,20 @@ func (m model) create(name string, url string) string {
 	return fmt.Sprint("URL mapped to ", name, "\n")
 }
 
+// Delete removes a shortened URL from the database given its name.
+func (m model) delete(name string) string {
+	err := m.database.Update(func(txn *badger.Txn) error {
+		return txn.Delete([]byte(name))
+	})
+	if err != nil {
+		log.Println(err)
+	}
+
+	return fmt.Sprint("\"", name, "\" has been deleted")
+}
+
+// nameExists returns true if the provided name is already stored in the
+// database and false if it's not.
 func (m model) nameExists(name string) bool {
 	err := m.database.View(func(txn *badger.Txn) error {
 		_, err := txn.Get([]byte(name))

main.go 🔗

@@ -56,9 +56,9 @@ func main() {
 	mux.HandleFunc("/login", m.login)
 	mux.HandleFunc("/logout", m.logout)
 	mux.HandleFunc("/create", m.createHandler)
-	mux.HandleFunc("/delete", m.delete)
-	mux.HandleFunc("/edit", m.edit)
-	mux.HandleFunc("/get", m.getLinks)
+	mux.HandleFunc("/read", m.readHandler)
+	mux.HandleFunc("/delete", m.deleteHandler)
+	mux.HandleFunc("/update", m.updateHandler)
 
 	if err = httpServer.ListenAndServe(); err == http.ErrServerClosed {
 		log.Println("Web server closed")

getlinks.go → readHandler.go 🔗

@@ -9,7 +9,7 @@ import (
 	"github.com/dgraph-io/badger/v3"
 )
 
-func (m model) getLinks(writer http.ResponseWriter, request *http.Request) {
+func (m model) readHandler(writer http.ResponseWriter, request *http.Request) {
 	token := request.Header.Get("Authorization")
 	token = strings.TrimPrefix(token, "Bearer ")
 	cookie, _ := request.Cookie("access_token")

update.go → updateHandler.go 🔗

@@ -9,7 +9,7 @@ import (
 	"github.com/dgraph-io/badger/v3"
 )
 
-func (m *model) update(writer http.ResponseWriter, request *http.Request) {
+func (m *model) updateHandler(writer http.ResponseWriter, request *http.Request) {
 	query := request.URL.Query()
 
 	token := request.Header.Get("Authorization")