1package main
2
3import (
4 "fmt"
5 "log"
6
7 "github.com/dgraph-io/badger/v3"
8)
9
10// Create shortens a given URL with an optional name. If a name is provided,
11// that name will be used. Otherwise, 4-character string will be generated and
12// used instead.
13func (m model) create(name string, url string) string {
14 err := m.database.Update(func(txn *badger.Txn) error {
15 return txn.Set([]byte(name), []byte(url))
16 })
17 if err != nil {
18 log.Fatal(err)
19 }
20
21 return fmt.Sprint("URL mapped to ", name, "\n")
22}
23
24// Delete removes a shortened URL from the database given its name.
25func (m model) delete(name string) string {
26 err := m.database.Update(func(txn *badger.Txn) error {
27 return txn.Delete([]byte(name))
28 })
29 if err != nil {
30 log.Println(err)
31 }
32
33 return fmt.Sprint("\"", name, "\" has been deleted")
34}
35
36// nameExists returns true if the provided name is already stored in the
37// database and false if it's not.
38func (m model) nameExists(name string) bool {
39 err := m.database.View(func(txn *badger.Txn) error {
40 _, err := txn.Get([]byte(name))
41 if err != nil {
42 return err
43 }
44 return nil
45 })
46 if err != nil {
47 return true
48 }
49 return false
50}