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