database/sqlite: make optional
SQLite requires cgo, for some use cases this is undesirable.
This commit is contained in:
parent
d27880e03e
commit
a9949c2e95
@ -18,7 +18,7 @@ Dependencies:
|
|||||||
|
|
||||||
- Go
|
- Go
|
||||||
- BSD or GNU make
|
- BSD or GNU make
|
||||||
- a C89 compiler (for SQLite)
|
- a C89 compiler (optional, for SQLite)
|
||||||
- scdoc (optional, for man pages)
|
- scdoc (optional, for man pages)
|
||||||
|
|
||||||
For end users, a `Makefile` is provided:
|
For end users, a `Makefile` is provided:
|
||||||
@ -28,7 +28,8 @@ For end users, a `Makefile` is provided:
|
|||||||
|
|
||||||
For development, you can use `go run ./cmd/soju` as usual.
|
For development, you can use `go run ./cmd/soju` as usual.
|
||||||
|
|
||||||
To link with the system libsqlite3, set `GOFLAGS="-tags=libsqlite3"`.
|
To link with the system libsqlite3, set `GOFLAGS="-tags=libsqlite3"`. To disable
|
||||||
|
SQLite support, set `GOFLAGS="-tags=nosqlite"`.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ package database
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strings"
|
"strings"
|
||||||
@ -235,3 +236,10 @@ type WebPushSubscription struct {
|
|||||||
VAPID string
|
VAPID string
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func toNullString(s string) sql.NullString {
|
||||||
|
return sql.NullString{
|
||||||
|
String: s,
|
||||||
|
Valid: s != "",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
//go:build !nosqlite
|
||||||
|
|
||||||
package database
|
package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
@ -13,6 +15,8 @@ import (
|
|||||||
promcollectors "github.com/prometheus/client_golang/prometheus/collectors"
|
promcollectors "github.com/prometheus/client_golang/prometheus/collectors"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const SqliteEnabled = true
|
||||||
|
|
||||||
const sqliteQueryTimeout = 5 * time.Second
|
const sqliteQueryTimeout = 5 * time.Second
|
||||||
|
|
||||||
const sqliteTimeLayout = "2006-01-02T15:04:05.000Z"
|
const sqliteTimeLayout = "2006-01-02T15:04:05.000Z"
|
||||||
@ -339,13 +343,6 @@ func (db *SqliteDB) Stats(ctx context.Context) (*DatabaseStats, error) {
|
|||||||
return &stats, nil
|
return &stats, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func toNullString(s string) sql.NullString {
|
|
||||||
return sql.NullString{
|
|
||||||
String: s,
|
|
||||||
Valid: s != "",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (db *SqliteDB) ListUsers(ctx context.Context) ([]User, error) {
|
func (db *SqliteDB) ListUsers(ctx context.Context) ([]User, error) {
|
||||||
ctx, cancel := context.WithTimeout(ctx, sqliteQueryTimeout)
|
ctx, cancel := context.WithTimeout(ctx, sqliteQueryTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
17
database/sqlite_stub.go
Normal file
17
database/sqlite_stub.go
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
//go:build nosqlite
|
||||||
|
|
||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
const SqliteEnabled = false
|
||||||
|
|
||||||
|
func OpenSqliteDB(source string) (Database, error) {
|
||||||
|
return nil, errors.New("SQLite support is disabled")
|
||||||
|
}
|
||||||
|
|
||||||
|
func OpenTempSqliteDB() (Database, error) {
|
||||||
|
return OpenSqliteDB("")
|
||||||
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
//go:build !nosqlite
|
||||||
|
|
||||||
package database
|
package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -20,6 +20,10 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func createTempSqliteDB(t *testing.T) database.Database {
|
func createTempSqliteDB(t *testing.T) database.Database {
|
||||||
|
if !database.SqliteEnabled {
|
||||||
|
t.Skip("SQLite support is disabled")
|
||||||
|
}
|
||||||
|
|
||||||
db, err := database.OpenTempSqliteDB()
|
db, err := database.OpenTempSqliteDB()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to create temporary SQLite database: %v", err)
|
t.Fatalf("failed to create temporary SQLite database: %v", err)
|
||||||
|
Loading…
Reference in New Issue
Block a user