From 0c4d2b6071ddae2cead22942e772d648399ec7cf Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Wed, 9 Oct 2024 18:47:44 +0200 Subject: [PATCH] Implement slugifying logic --- .gitignore | 1 + main.go | 52 +++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 38 insertions(+), 15 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b579b04 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +pb_data diff --git a/main.go b/main.go index 7f16e9a..8cad19e 100644 --- a/main.go +++ b/main.go @@ -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) } +var cstrings = struct { + posts string + title string + slug string +}{ + "posts", + "title", + "slug", +} + func main() { - app := pocketbase.New() + app := pocketbase.New() - app.OnModelBeforeCreate().Add(func(e *core.ModelEvent) error { - log.Println(e.Model.TableName()) - log.Println(e.Model.GetId()) - return nil - }) + 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.OnModelBeforeCreate("users", "members").Add(func(e *core.ModelEvent) error { - log.Println(e.Model.TableName()) - log.Println(e.Model.GetId()) - 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) - } -} \ No newline at end of file + 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 +}