Implement slugifying logic
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
pb_data
|
58
main.go
58
main.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/pocketbase/pocketbase"
|
"github.com/pocketbase/pocketbase"
|
||||||
"github.com/pocketbase/pocketbase/core"
|
"github.com/pocketbase/pocketbase/core"
|
||||||
@@ -12,6 +13,7 @@ import (
|
|||||||
|
|
||||||
var Error *log.Logger
|
var Error *log.Logger
|
||||||
var Warning *log.Logger
|
var Warning *log.Logger
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
|
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
|
||||||
|
|
||||||
@@ -23,22 +25,42 @@ func init() {
|
|||||||
log.Lmicroseconds|log.Lshortfile)
|
log.Lmicroseconds|log.Lshortfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
var cstrings = struct {
|
||||||
app := pocketbase.New()
|
posts string
|
||||||
|
title string
|
||||||
app.OnModelBeforeCreate().Add(func(e *core.ModelEvent) error {
|
slug string
|
||||||
log.Println(e.Model.TableName())
|
}{
|
||||||
log.Println(e.Model.GetId())
|
"posts",
|
||||||
return nil
|
"title",
|
||||||
})
|
"slug",
|
||||||
|
}
|
||||||
app.OnModelBeforeCreate("users", "members").Add(func(e *core.ModelEvent) error {
|
|
||||||
log.Println(e.Model.TableName())
|
func main() {
|
||||||
log.Println(e.Model.GetId())
|
app := pocketbase.New()
|
||||||
return nil
|
|
||||||
})
|
app.OnRecordBeforeCreateRequest(cstrings.posts).Add(func(e *core.RecordCreateEvent) error {
|
||||||
|
title := e.Record.GetString(cstrings.title)
|
||||||
if err := app.Start(); err != nil {
|
slug := MakeSlug(title)
|
||||||
log.Fatal(err)
|
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
|
||||||
}
|
}
|
Reference in New Issue
Block a user