commit 23efa07dc51835303fd15dedfb4fe939d25caaab Author: Kyle Isom Date: Sat Mar 12 20:46:04 2022 -0800 Initial import. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..50db32e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +kls.conf \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..a1dae08 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.wntrmute.dev/kyle/kls + +go 1.17 diff --git a/links/alphabet.go b/links/alphabet.go new file mode 100644 index 0000000..6277d8c --- /dev/null +++ b/links/alphabet.go @@ -0,0 +1,30 @@ +package links + +import ( + "crypto/rand" + "math/big" +) + +const codeLength = 5 + +var ( + alphabet = "ABCDEFGHJKMNPQRSTUVWXYZ23456789" + alphabetLength = big.NewInt(int64(len(alphabet))) +) + +func randInt() int { + p, err := rand.Int(rand.Reader, alphabetLength) + if err != nil { + panic(err.Error()) + } + + return int(p.Int64()) +} + +func GenCode() string { + var code []byte + for i := 0; i < codeLength; i++ { + code = append(code, alphabet[randInt()]) + } + return string(code) +} diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..a4b3476 --- /dev/null +++ b/schema.sql @@ -0,0 +1,7 @@ +CREATE TABLE urls ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + url TEXT NOT NULL, + nurl TEXT NOT NULL, -- normalized url + short TEXT NOT NULL UNIQUE, + created_at TIMESTAMPTZ NOT NULL DEFAULT +);