Generate table from keys/values in database

Amolith created

Change summary

root.go | 37 ++++++++++++++++++++++++++++++++++++-
1 file changed, 36 insertions(+), 1 deletion(-)

Detailed changes

root.go 🔗

@@ -1,9 +1,13 @@
 package main
 
 import (
+	"fmt"
 	"io"
 	"log"
 	"net/http"
+	"text/template"
+
+	"github.com/dgraph-io/badger/v3"
 )
 
 func (m model) root(writer http.ResponseWriter, request *http.Request) {
@@ -22,6 +26,37 @@ func (m model) root(writer http.ResponseWriter, request *http.Request) {
 		if err != nil {
 			log.Fatalln(err)
 		}
-		io.WriteString(writer, string(dash))
+		tmpl, err := template.New("authenticated").Parse(string(dash))
+		tmpl.Execute(writer, m.genTable())
+	}
+}
+
+func (m model) genTable() string {
+	var table string
+	err := m.database.View(func(txn *badger.Txn) error {
+		opts := badger.DefaultIteratorOptions
+		opts.PrefetchSize = 10
+		iterator := txn.NewIterator(opts)
+		defer iterator.Close()
+		for iterator.Rewind(); iterator.Valid(); iterator.Next() {
+			item := iterator.Item()
+			k := item.Key()
+			err := item.Value(func(v []byte) error {
+				table = table + fmt.Sprintf(`<tr>
+	<td><p>%s</p></td>
+	<td><p>%s</p></td>
+	<td><button>Edit</button><button>Delete</button></td>
+</tr>`, k, v)
+				return nil
+			})
+			if err != nil {
+				return err
+			}
+		}
+		return nil
+	})
+	if err != nil {
+		return err.Error()
 	}
+	return table
 }