67 lines
1.5 KiB
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
|
|
}
|