helperfuncs.go

 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}