sabisan/internal/store/helpers.go

46 lines
753 B
Go
Raw Normal View History

2026-05-16 23:03:50 +00:00
package store
import (
"database/sql"
"errors"
"fmt"
"time"
)
func IsNotFound(err error) bool {
return errors.Is(err, sql.ErrNoRows)
}
func boolInt(v bool) int {
if v {
return 1
}
return 0
}
func SlugFromTitle(title string) string {
out := make([]rune, 0, len(title))
lastDash := false
for _, r := range title {
if r >= 'A' && r <= 'Z' {
r += 'a' - 'A'
}
if (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') {
out = append(out, r)
lastDash = false
continue
}
if !lastDash && len(out) > 0 {
out = append(out, '-')
lastDash = true
}
}
for len(out) > 0 && out[len(out)-1] == '-' {
out = out[:len(out)-1]
}
if len(out) == 0 {
return fmt.Sprintf("project-%d", time.Now().Unix())
}
return string(out)
}