From 0cfe0b17de0ab20cb222ad86f0bcc97638346732 Mon Sep 17 00:00:00 2001 From: Nuno Cruces Date: Mon, 20 Oct 2025 11:55:40 +0100 Subject: [PATCH] Avoid unnecessary import of SQLite driver. --- db.go | 10 +++++++--- internal/testingutil/testingutil.go | 1 + litestream.go | 1 - 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/db.go b/db.go index 7e8cb7ccf..13454524c 100644 --- a/db.go +++ b/db.go @@ -20,7 +20,6 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "github.com/superfly/ltx" - "modernc.org/sqlite" "github.com/benbjohnson/litestream/internal" ) @@ -334,8 +333,13 @@ func (db *DB) setPersistWAL(ctx context.Context) error { } defer conn.Close() - return conn.Raw(func(driverConn interface{}) error { - fc, ok := driverConn.(sqlite.FileControl) + return conn.Raw(func(driverConn any) error { + // Using an anonymous interface here avoids unnecessarily importing our + // chosen driver. This is important for library users (e.g. the VFS) + // that don't need to depend on the driver. + fc, ok := driverConn.(interface { + FileControlPersistWAL(string, int) (int, error) + }) if !ok { return fmt.Errorf("driver does not implement FileControl") } diff --git a/internal/testingutil/testingutil.go b/internal/testingutil/testingutil.go index 52ea211f4..119aa7b84 100644 --- a/internal/testingutil/testingutil.go +++ b/internal/testingutil/testingutil.go @@ -17,6 +17,7 @@ import ( sftpserver "github.com/pkg/sftp" "golang.org/x/crypto/ssh" + _ "modernc.org/sqlite" "github.com/benbjohnson/litestream" "github.com/benbjohnson/litestream/abs" diff --git a/litestream.go b/litestream.go index b27de3c56..61caec7c6 100644 --- a/litestream.go +++ b/litestream.go @@ -12,7 +12,6 @@ import ( "strings" "github.com/superfly/ltx" - _ "modernc.org/sqlite" ) // Naming constants.