All checks were successful
Publish / Test, build, and push image (push) Successful in 3m38s
46 lines
753 B
Go
46 lines
753 B
Go
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)
|
|
}
|