1package main
2
3import (
4 "fmt"
5 "io"
6 "log"
7 "net/http"
8 "text/template"
9
10 "github.com/dgraph-io/badger/v3"
11)
12
13func (m model) root(writer http.ResponseWriter, request *http.Request) {
14 cookie, err := request.Cookie("access_token")
15 if err != nil {
16 home, err := templates.ReadFile("templates/home_unauthenticated.html")
17 if err != nil {
18 log.Fatalln(err)
19 }
20 io.WriteString(writer, string(home))
21 return
22 }
23
24 if cookie.Value == m.AccessToken {
25 dash, err := templates.ReadFile("templates/home_authenticated.html")
26 if err != nil {
27 log.Fatalln(err)
28 }
29 tmpl, err := template.New("authenticated").Parse(string(dash))
30 tmpl.Execute(writer, m.genTable())
31 }
32}
33
34func (m model) genTable() string {
35 var table string
36 err := m.database.View(func(txn *badger.Txn) error {
37 opts := badger.DefaultIteratorOptions
38 opts.PrefetchSize = 10
39 iterator := txn.NewIterator(opts)
40 defer iterator.Close()
41 for iterator.Rewind(); iterator.Valid(); iterator.Next() {
42 item := iterator.Item()
43 k := item.Key()
44 err := item.Value(func(v []byte) error {
45 table = table + fmt.Sprintf(`<tr>
46 <td><p>%s</p></td>
47 <td><p>%s</p></td>
48 <td><button>Edit</button><button>Delete</button></td>
49</tr>`, k, v)
50 return nil
51 })
52 if err != nil {
53 return err
54 }
55 }
56 return nil
57 })
58 if err != nil {
59 return err.Error()
60 }
61 return table
62}