Automatically load extensions. (#115)

This commit is contained in:
Nuno Cruces
2024-07-08 12:06:57 +01:00
committed by GitHub
parent fff8b1c74f
commit b5f746aadf
36 changed files with 261 additions and 245 deletions

View File

@@ -12,19 +12,20 @@
package regexp
import (
"errors"
"regexp"
"github.com/ncruces/go-sqlite3"
)
// Register registers Unicode aware functions for a database connection.
func Register(db *sqlite3.Conn) {
func Register(db *sqlite3.Conn) error {
flags := sqlite3.DETERMINISTIC | sqlite3.INNOCUOUS
db.CreateFunction("regexp", 2, flags, regex)
db.CreateFunction("regexp_like", 2, flags, regexLike)
db.CreateFunction("regexp_substr", 2, flags, regexSubstr)
db.CreateFunction("regexp_replace", 3, flags, regexReplace)
return errors.Join(
db.CreateFunction("regexp", 2, flags, regex),
db.CreateFunction("regexp_like", 2, flags, regexLike),
db.CreateFunction("regexp_substr", 2, flags, regexSubstr),
db.CreateFunction("regexp_replace", 3, flags, regexReplace))
}
func load(ctx sqlite3.Context, i int, expr string) (*regexp.Regexp, error) {

View File

@@ -3,7 +3,6 @@ package regexp
import (
"testing"
"github.com/ncruces/go-sqlite3"
"github.com/ncruces/go-sqlite3/driver"
_ "github.com/ncruces/go-sqlite3/embed"
_ "github.com/ncruces/go-sqlite3/internal/testcfg"
@@ -12,10 +11,7 @@ import (
func TestRegister(t *testing.T) {
t.Parallel()
db, err := driver.Open(":memory:", func(conn *sqlite3.Conn) error {
Register(conn)
return nil
})
db, err := driver.Open(":memory:", Register)
if err != nil {
t.Fatal(err)
}
@@ -50,10 +46,7 @@ func TestRegister(t *testing.T) {
func TestRegister_errors(t *testing.T) {
t.Parallel()
db, err := driver.Open(":memory:", func(conn *sqlite3.Conn) error {
Register(conn)
return nil
})
db, err := driver.Open(":memory:", Register)
if err != nil {
t.Fatal(err)
}