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 }