mstar-webserver/storage/db.go
mstar 2920dcbfec
Some checks failed
/ docker (push) Failing after 58s
Add counting for link visits
Because funny
2025-03-24 18:05:27 +01:00

35 lines
997 B
Go

package storage
import (
"git.mstar.dev/mstar/goutils/other"
"github.com/rs/zerolog/log"
"gorm.io/gorm"
"git.mstar.dev/mstar/mstar-webserver/storage/generated"
"git.mstar.dev/mstar/mstar-webserver/storage/models"
)
func IncrementLinkCounter(link string) error {
model, err := generated.Link.Where(generated.Link.Link.Eq(link)).First()
switch err {
case gorm.ErrRecordNotFound:
log.Info().Msg("Creating link counter")
err = generated.Link.Create(&models.Link{Link: link, Count: 1})
if err != nil {
return other.Error("storage", "failed to create new link entry", err)
} else {
return nil
}
case nil:
log.Info().Uint64("current", model.Count).Msg("Updating link")
_, err = generated.Link.Where(generated.Link.Link.Eq(link)).
Update(generated.Link.Count_, model.Count+1)
if err != nil {
return other.Error("storage", "failed to increment link count", err)
} else {
return nil
}
default:
return other.Error("storage", "failed to find link", err)
}
}