From 2cad491f404e085b464869fdfbc7f6f077e3fe51 Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Wed, 11 Aug 2021 11:50:57 -0400 Subject: [PATCH] Better creation of SQLite DSNs --- db/db.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/db/db.go b/db/db.go index 0c1111ca..eb2dcd3a 100644 --- a/db/db.go +++ b/db/db.go @@ -99,7 +99,11 @@ func Open(dbPath string) (*DB, error) { return nil, err } - roDSN := fmt.Sprintf("file:%s?mode=ro", dbPath) + roOpts := []string{ + "mode=ro", + } + + roDSN := fmt.Sprintf("file:%s?%s", dbPath, strings.Join(roOpts, "&")) roDB, err := sql.Open("sqlite3", roDSN) if err != nil { return nil, err @@ -129,7 +133,13 @@ func Open(dbPath string) (*DB, error) { func OpenInMemory() (*DB, error) { inMemPath := fmt.Sprintf("file:/%s", randomString()) - rwDSN := fmt.Sprintf("%s?mode=rw&vfs=memdb&_txlock=immediate", inMemPath) + rwOpts := []string{ + "mode=rw", + "vfs=memdb", + "_txlock=immediate", + } + + rwDSN := fmt.Sprintf("%s?%s", inMemPath, strings.Join(rwOpts, "&")) rwDB, err := sql.Open("sqlite3", rwDSN) if err != nil { return nil, err @@ -142,7 +152,13 @@ func OpenInMemory() (*DB, error) { rwDB.SetMaxIdleConns(1) rwDB.SetMaxOpenConns(1) - roDSN := fmt.Sprintf("%s?mode=ro&vfs=memdb&_txlock=deferred", inMemPath) + roOpts := []string{ + "mode=ro", + "vfs=memdb", + "_txlock=deferred", + } + + roDSN := fmt.Sprintf("%s?%s", inMemPath, strings.Join(roOpts, "&")) roDB, err := sql.Open("sqlite3", roDSN) if err != nil { return nil, err