From b5c24a0ff9b766ab8950ba1226c95110cd90c630 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Thu, 17 Oct 2024 18:19:15 +0100
Subject: [PATCH] Upgrade ai3/go-common

---
 go.mod                                        |  2 +-
 go.sum                                        |  4 +--
 .../ai3/go-common/sqlutil/db.go               | 27 ++++++++++++++-----
 vendor/modules.txt                            |  2 +-
 4 files changed, 25 insertions(+), 10 deletions(-)

diff --git a/go.mod b/go.mod
index 28bdd44..c0a1eea 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.21.0
 toolchain go1.22.1
 
 require (
-	git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088
+	git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4
 	github.com/google/go-cmp v0.6.0
 	gopkg.in/yaml.v3 v3.0.1
 )
diff --git a/go.sum b/go.sum
index 77d4d42..dabe792 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +1,7 @@
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088 h1:VD6KF7j6y0yDETNFl5x0lGnQetpSBa3K4rYx9fiJqAQ=
-git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088/go.mod h1:JpPfOTGgbvAElF0wdmv81y6l3CRsdS4z3IkNOETUDVo=
+git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4 h1:xB5K4GL4VlguEOknhgz+AN3k8nmx19y91RRUvByaLnQ=
+git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4/go.mod h1:JpPfOTGgbvAElF0wdmv81y6l3CRsdS4z3IkNOETUDVo=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
 github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
diff --git a/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go b/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go
index 5316834..3b8bd3d 100644
--- a/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go
+++ b/vendor/git.autistici.org/ai3/go-common/sqlutil/db.go
@@ -5,6 +5,7 @@ import (
 	"database/sql"
 	"fmt"
 	"log"
+	"net/url"
 	"strings"
 
 	_ "github.com/mattn/go-sqlite3"
@@ -13,11 +14,24 @@ import (
 // DebugMigrations can be set to true to dump statements to stderr.
 var DebugMigrations bool
 
-const defaultOptions = "?cache=shared&_busy_timeout=10000&_journal=WAL&_sync=OFF"
+// See https://github.com/mattn/go-sqlite3/issues/209 for details on
+// why these default parameters were chosen. WAL mode is mandatory for
+// external litestream support.
+func defaultOptions() url.Values {
+	v := make(url.Values)
+	v.Set("cache", "shared")
+	v.Set("_journal", "WAL")
+	v.Set("_sync", "OFF")
+	v.Set("_busy_timeout", "999999")
+	v.Set("_fk", "true")
+	v.Set("_cache_size", "268435456")
+	v.Set("_auto_vacuum", "incremental")
+	return v
+}
 
 type sqlOptions struct {
 	migrations []func(*sql.Tx) error
-	sqlopts    string
+	sqlopts    url.Values
 }
 
 type Option func(*sqlOptions)
@@ -28,16 +42,16 @@ func WithMigrations(migrations []func(*sql.Tx) error) Option {
 	}
 }
 
-func WithSqliteOptions(sqlopts string) Option {
+func WithSqliteOption(opt, value string) Option {
 	return func(opts *sqlOptions) {
-		opts.sqlopts = sqlopts
+		opts.sqlopts.Set(opt, value)
 	}
 }
 
 // OpenDB opens a SQLite database and runs the database migrations.
 func OpenDB(dburi string, options ...Option) (*sql.DB, error) {
 	var opts sqlOptions
-	opts.sqlopts = defaultOptions
+	opts.sqlopts = defaultOptions()
 	for _, o := range options {
 		o(&opts)
 	}
@@ -45,7 +59,7 @@ func OpenDB(dburi string, options ...Option) (*sql.DB, error) {
 	// Add sqlite3-specific parameters if none are already
 	// specified in the connection URI.
 	if !strings.Contains(dburi, "?") {
-		dburi += opts.sqlopts
+		dburi = fmt.Sprintf("%s?%s", dburi, opts.sqlopts.Encode())
 	}
 
 	db, err := sql.Open("sqlite3", dburi)
@@ -56,6 +70,7 @@ func OpenDB(dburi string, options ...Option) (*sql.DB, error) {
 	// Limit the pool to a single connection.
 	// https://github.com/mattn/go-sqlite3/issues/209
 	db.SetMaxOpenConns(1)
+	db.SetMaxIdleConns(1)
 
 	if err = migrate(db, opts.migrations); err != nil {
 		db.Close() // nolint
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 3fc51d8..619bc14 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1,4 +1,4 @@
-# git.autistici.org/ai3/go-common v0.0.0-20240906100150-439608162088
+# git.autistici.org/ai3/go-common v0.0.0-20241017171051-880a2c5ae7f4
 ## explicit; go 1.21.0
 git.autistici.org/ai3/go-common
 git.autistici.org/ai3/go-common/clientutil
-- 
GitLab