Skip to content

Commit cb3ec1b

Browse files
committed
chore: update
1 parent 120a37b commit cb3ec1b

File tree

6 files changed

+65
-41
lines changed

6 files changed

+65
-41
lines changed

cmd/bench_hasher/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77

88
"github.com/go-echarts/go-echarts/v2/components"
99

10-
"github.com/qxuken/short/internal/shortener/charts"
10+
shortener_charts "github.com/qxuken/short/internal/shortener/charts"
1111
)
1212

1313
func main() {
@@ -20,7 +20,7 @@ func main() {
2020
page := components.NewPage()
2121
page.AddCharts(
2222
shortener_charts.GenerateCollisionChart(
23-
[]int{0, 100_000, 500_000, 1_000_000}, //, 5_000_000, 10_000_000, 50_000_000, 100_000_000},
23+
[]int{0, 100_000, 500_000, 1_000_000, 5_000_000}, //, 10_000_000, 50_000_000, 100_000_000},
2424
countGroups,
2525
),
2626
shortener_charts.GenerateSpeedChart(500, countGroups),

go.mod

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,33 @@
11
module github.com/qxuken/short
22

3-
go 1.22.3
3+
go 1.25.3
44

55
require (
6-
github.com/a-h/templ v0.2.747
6+
github.com/a-h/templ v0.3.960
77
github.com/dustin/go-humanize v1.0.1
8-
github.com/go-chi/chi/v5 v5.1.0
9-
github.com/go-echarts/go-echarts/v2 v2.4.1
8+
github.com/go-chi/chi/v5 v5.2.3
9+
github.com/go-echarts/go-echarts/v2 v2.6.5
1010
github.com/gocarina/gocsv v0.0.0-20240520201108-78e41c74b4b1
1111
github.com/hashicorp/golang-lru/v2 v2.0.7
1212
github.com/jmoiron/sqlx v1.4.0
1313
github.com/joho/godotenv v1.5.1
1414
github.com/kelseyhightower/envconfig v1.4.0
15-
github.com/mattn/go-sqlite3 v1.14.22
15+
github.com/mattn/go-sqlite3 v1.14.32
1616
github.com/mitchellh/go-server-timing v1.0.1
1717
)
1818

1919
require (
2020
github.com/ajg/form v1.5.1 // indirect
2121
github.com/gorilla/securecookie v1.1.2 // indirect
22-
golang.org/x/sys v0.22.0 // indirect
22+
golang.org/x/sys v0.37.0 // indirect
2323
)
2424

2525
require (
2626
github.com/felixge/httpsnoop v1.0.4 // indirect
27-
github.com/go-chi/cors v1.2.1
27+
github.com/go-chi/cors v1.2.2
2828
github.com/go-chi/render v1.0.3
2929
github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f // indirect
30-
github.com/gorilla/csrf v1.7.2
31-
github.com/matthewhartstonge/argon2 v1.0.0
32-
golang.org/x/crypto v0.25.0 // indirect
30+
github.com/gorilla/csrf v1.7.3
31+
github.com/matthewhartstonge/argon2 v1.4.1
32+
golang.org/x/crypto v0.43.0 // indirect
3333
)

go.sum

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4
44
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
55
github.com/a-h/templ v0.2.747 h1:D0dQ2lxC3W7Dxl6fxQ/1zZHBQslSkTSvl5FxP/CfdKg=
66
github.com/a-h/templ v0.2.747/go.mod h1:69ObQIbrcuwPCU32ohNaWce3Cb7qM5GMiqN1K+2yop4=
7+
github.com/a-h/templ v0.3.960 h1:trshEpGa8clF5cdI39iY4ZrZG8Z/QixyzEyUnA7feTM=
8+
github.com/a-h/templ v0.3.960/go.mod h1:oCZcnKRf5jjsGpf2yELzQfodLphd2mwecwG4Crk5HBo=
79
github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
810
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
911
github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
@@ -19,12 +21,18 @@ github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhs
1921
github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
2022
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
2123
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
24+
github.com/go-chi/chi/v5 v5.2.3 h1:WQIt9uxdsAbgIYgid+BpYc+liqQZGMHRaUwp0JUcvdE=
25+
github.com/go-chi/chi/v5 v5.2.3/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops=
2226
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
2327
github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
28+
github.com/go-chi/cors v1.2.2 h1:Jmey33TE+b+rB7fT8MUy1u0I4L+NARQlK6LhzKPSyQE=
29+
github.com/go-chi/cors v1.2.2/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
2430
github.com/go-chi/render v1.0.3 h1:AsXqd2a1/INaIfUSKq3G5uA8weYx20FOsM7uSoCyyt4=
2531
github.com/go-chi/render v1.0.3/go.mod h1:/gr3hVkmYR0YlEy3LxCuVRFzEu9Ruok+gFqbIofjao0=
2632
github.com/go-echarts/go-echarts/v2 v2.4.1 h1:imBFGngJ9zv/2zJVjK3k0uLL+LzyPDgzeV7MWzxH0rs=
2733
github.com/go-echarts/go-echarts/v2 v2.4.1/go.mod h1:56YlvzhW/a+du15f3S2qUGNDfKnFOeJSThBIrVFHDtI=
34+
github.com/go-echarts/go-echarts/v2 v2.6.5 h1:f6h2Yt8j8G2profitrlhZvE7mJe6iAI7vYmG2Qqil+M=
35+
github.com/go-echarts/go-echarts/v2 v2.6.5/go.mod h1:Z+spPygZRIEyqod69r0WMnkN5RV3MwhYDtw601w3G8w=
2836
github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
2937
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
3038
github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
@@ -45,6 +53,8 @@ github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
4553
github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
4654
github.com/gorilla/csrf v1.7.2 h1:oTUjx0vyf2T+wkrx09Trsev1TE+/EbDAeHtSTbtC2eI=
4755
github.com/gorilla/csrf v1.7.2/go.mod h1:F1Fj3KG23WYHE6gozCmBAezKookxbIvUJT+121wTuLk=
56+
github.com/gorilla/csrf v1.7.3 h1:BHWt6FTLZAb2HtWT5KDBf6qgpZzvtbp9QWDRKZMXJC0=
57+
github.com/gorilla/csrf v1.7.3/go.mod h1:F1Fj3KG23WYHE6gozCmBAezKookxbIvUJT+121wTuLk=
4858
github.com/gorilla/securecookie v1.1.2 h1:YCIWL56dvtr73r6715mJs5ZvhtnY73hBvEF8kXD8ePA=
4959
github.com/gorilla/securecookie v1.1.2/go.mod h1:NfCASbcHqRSY+3a8tlWJwsQap2VX5pwzwo4h3eOamfo=
5060
github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
@@ -66,10 +76,14 @@ github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
6676
github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
6777
github.com/matthewhartstonge/argon2 v1.0.0 h1:e65fkae6O8Na6YTy2HAccUbXR+GQHOnpQxeWGqWCRIw=
6878
github.com/matthewhartstonge/argon2 v1.0.0/go.mod h1:Fm4FHZxdxCM6hg21Jkz3YZVKnU7VnTlqDQ3ghS/Myok=
79+
github.com/matthewhartstonge/argon2 v1.4.1 h1:FNqWx6rMzsWMELIP5bBjTQ9SwBrJLhfxLEKDva8ZlIE=
80+
github.com/matthewhartstonge/argon2 v1.4.1/go.mod h1:o7LXmwzMcaYgydER/0TBK95M2F4kRqcAhpX+7pnW3aA=
6981
github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
7082
github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
7183
github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU=
7284
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
85+
github.com/mattn/go-sqlite3 v1.14.32 h1:JD12Ag3oLy1zQA+BNn74xRgaBbdhbNIDYvQUEuuErjs=
86+
github.com/mattn/go-sqlite3 v1.14.32/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
7387
github.com/mitchellh/go-server-timing v1.0.1 h1:f00/aIe8T3MrnLhQHu3tSWvnwc5GV/p5eutuu3hF/tE=
7488
github.com/mitchellh/go-server-timing v1.0.1/go.mod h1:Mo6GKi9FSLwWFAMn3bqVPWe20y5ri5QGQuO9D9MCOxk=
7589
github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
@@ -85,15 +99,20 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
8599
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
86100
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
87101
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
102+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
88103
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
89104
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
90105
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
106+
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
107+
golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
91108
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
92109
golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
93110
golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
94111
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
95112
golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
96113
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
114+
golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
115+
golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
97116
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
98117
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
99118
golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -108,3 +127,4 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
108127
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
109128
gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA=
110129
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
130+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

internal/db/db.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ type DB interface {
66
GetLinks() ([]LinkItem, error)
77
GetLinkAnalytics() ([]AnalyticsItem, error)
88
LogVisit(v AnalyticsItem) error
9-
GetConfigKey(key string) (string, error)
10-
SetConfigKey(key, value string) error
9+
GetConfigItem(key string) (string, error)
10+
SetConfigItem(key, value string) error
1111
}
1212

1313
type LinkItem struct {

internal/db/sqlite.go

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,13 @@ const (
4343
);
4444
CREATE INDEX IF NOT EXISTS idx_app_config_key ON app_config(key);
4545
`
46-
getLink = "SELECT redirect_url FROM link WHERE short_url = ? LIMIT 1;"
47-
setLink = "INSERT INTO link (redirect_url, short_url) VALUES (?, ?);"
48-
getLinks = "SELECT redirect_url, short_url FROM link;"
49-
getVisits = "SELECT short_url, country, referer, ip, ts FROM analytics;"
50-
logVisit = "INSERT INTO analytics (short_url, country, referer, ip, ts) VALUES (?, ?, ?, ?, ?);"
46+
queryLink = "SELECT redirect_url FROM link WHERE short_url = ? LIMIT 1;"
47+
insertLink = "INSERT INTO link (redirect_url, short_url) VALUES (?, ?);"
48+
queryLinks = "SELECT redirect_url, short_url FROM link;"
49+
queryVisits = "SELECT short_url, country, referer, ip, ts FROM analytics;"
50+
insertVisit = "INSERT INTO analytics (short_url, country, referer, ip, ts) VALUES (?, ?, ?, ?, ?);"
51+
queryConfig = "SELECT value FROM app_config WHERE key = ?;"
52+
upsertConfig = "INSERT INTO app_config (key, value) VALUES (?, ?) ON CONFLICT (key) DO UPDATE SET value = excluded.value"
5153
)
5254

5355
type SqliteDB struct {
@@ -66,35 +68,37 @@ func ConnectSqlite3(conf *config.Config, path string) *SqliteDB {
6668
return &SqliteDB{db}
6769
}
6870

69-
func (db *SqliteDB) GetLink(shortUrl string) (string, error) {
70-
var url string
71-
err := db.db.Get(&url, getLink, shortUrl)
72-
return url, err
71+
func (db *SqliteDB) GetLink(shortUrl string) (url string, err error) {
72+
err = db.db.Get(&url, queryLink, shortUrl)
73+
return
7374
}
7475

75-
func (db *SqliteDB) SetLink(redirectUrl, shortUrl string) error {
76-
_, err := db.db.Exec(setLink, redirectUrl, shortUrl)
77-
return err
76+
func (db *SqliteDB) SetLink(redirectUrl, shortUrl string) (err error) {
77+
_, err = db.db.Exec(insertLink, redirectUrl, shortUrl)
78+
return
7879
}
7980

80-
func (db *SqliteDB) GetLinks() ([]LinkItem, error) {
81-
links := []LinkItem{}
82-
err := db.db.Select(&links, getLinks)
83-
return links, err
81+
func (db *SqliteDB) GetLinks() (links []LinkItem, err error) {
82+
err = db.db.Select(&links, queryLinks)
83+
return
8484
}
8585

86-
func (db *SqliteDB) GetLinkAnalytics() ([]AnalyticsItem, error) {
87-
visits := []AnalyticsItem{}
88-
err := db.db.Select(&visits, getVisits)
89-
return visits, err
86+
func (db *SqliteDB) GetLinkAnalytics() (visits []AnalyticsItem, err error) {
87+
err = db.db.Select(&visits, queryVisits)
88+
return
9089
}
9190

92-
func (db *SqliteDB) LogVisit(v AnalyticsItem) error {
93-
_, err := db.db.Exec(logVisit, v.ShortUrl, v.Country, v.Referer, v.Ip, v.Ts)
94-
return err
91+
func (db *SqliteDB) LogVisit(v AnalyticsItem) (err error) {
92+
_, err = db.db.Exec(insertVisit, v.ShortUrl, v.Country, v.Referer, v.Ip, v.Ts)
93+
return
9594
}
9695

97-
func (db *SqliteDB) GetConfigKey(key string) (string, error) {
98-
_, err := db.db.Exec(logVisit, v.ShortUrl, v.Country, v.Referer, v.Ip, v.Ts)
99-
return err
96+
func (db *SqliteDB) GetConfigItem(key string) (value string, err error) {
97+
err = db.db.Get(&value, queryConfig, key)
98+
return
99+
}
100+
101+
func (db *SqliteDB) SetConfigItem(key, value string) (err error) {
102+
_, err = db.db.Exec(upsertConfig, key, value)
103+
return
100104
}

internal/shortener/charts/speed.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func generateScatterData(runs int, count int, xIndex int) []opts.ScatterData {
2727
fmt.Println("Start for len ", count)
2828
var start time.Time
2929
var duration time.Duration
30-
for i := 0; i < runs; i++ {
30+
for i := range runs {
3131
start = time.Now()
3232
shortener.ShortUrlWithLen(count)
3333
duration = time.Since(start)

0 commit comments

Comments
 (0)