Files
pocketbase-posts-slug/main.go

67 lines
1.5 KiB
Go

package main
import (
"fmt"
"io"
"log"
"os"
"strings"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/core"
)
var Error *log.Logger
var Warning *log.Logger
func init() {
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
Error = log.New(io.MultiWriter(os.Stderr, os.Stdout),
fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"),
log.Lmicroseconds|log.Lshortfile)
Warning = log.New(io.MultiWriter(os.Stdout),
fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"),
log.Lmicroseconds|log.Lshortfile)
}
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
}