helperfuncs.go

 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}