Implement slugifying logic

This commit is contained in:
2024-10-09 18:47:44 +02:00
parent c2430b073c
commit 0c4d2b6071
2 changed files with 38 additions and 15 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
pb_data

58
main.go
View File

@@ -5,6 +5,7 @@ import (
"io"
"log"
"os"
"strings"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/core"
@@ -12,6 +13,7 @@ import (
var Error *log.Logger
var Warning *log.Logger
func init() {
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
@@ -23,22 +25,42 @@ func init() {
log.Lmicroseconds|log.Lshortfile)
}
func main() {
app := pocketbase.New()
app.OnModelBeforeCreate().Add(func(e *core.ModelEvent) error {
log.Println(e.Model.TableName())
log.Println(e.Model.GetId())
return nil
})
app.OnModelBeforeCreate("users", "members").Add(func(e *core.ModelEvent) error {
log.Println(e.Model.TableName())
log.Println(e.Model.GetId())
return nil
})
if err := app.Start(); err != nil {
log.Fatal(err)
}
var cstrings = struct {
posts string
title string
slug string
}{
"posts",
"title",
"slug",
}
func main() {
app := pocketbase.New()
app.OnRecordBeforeCreateRequest(cstrings.posts).Add(func(e *core.RecordCreateEvent) error {
title := e.Record.GetString(cstrings.title)
slug := MakeSlug(title)
e.Record.Set(cstrings.slug, slug)
return nil
})
app.OnRecordBeforeUpdateRequest(cstrings.posts).Add(func(e *core.RecordUpdateEvent) error {
title := e.Record.GetString(cstrings.title)
slug := MakeSlug(title)
e.Record.Set(cstrings.slug, slug)
return nil
})
if err := app.Start(); err != nil {
log.Fatal(err)
}
}
func MakeSlug(input string) string {
slug := strings.ToLower(strings.TrimSpace(input))
slug = strings.ReplaceAll(slug, " ", "-")
slug = strings.ReplaceAll(slug, "&", "and")
slug = strings.ReplaceAll(slug, "?", "")
return slug
}