summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/internal
diff options
context:
space:
mode:
authorLibravatar kim <grufwub@gmail.com>2025-10-03 15:29:41 +0200
committerLibravatar kim <gruf@noreply.codeberg.org>2025-10-03 15:29:41 +0200
commitff950e94bb8a2e1b3c905bdba4c44d0232704b18 (patch)
treea6aedfd6a89438f400bc20c90457552e4176f1ba /vendor/github.com/ncruces/go-sqlite3/internal
parent[chore] Use bulk updates + fewer loops in status rethreading migration (#4459) (diff)
downloadgotosocial-ff950e94bb8a2e1b3c905bdba4c44d0232704b18.tar.xz
[chore] update dependencies (#4468)
- github.com/ncruces/go-sqlite3 - codeberg.org/gruf/go-mempool - codeberg.org/gruf/go-structr (changes related on the above) * - codeberg.org/gruf/go-mutexes (changes related on the above) * * this is largely just fiddling around with package internals in structr and mutexes to rely on changes in mempool, which added a new concurrency-safe pool Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4468 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/json.go2
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go52
2 files changed, 54 insertions, 0 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
index 846237405..f582734cf 100644
--- a/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
+++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
@@ -1,3 +1,5 @@
+//go:build !goexperiment.jsonv2
+
package util
import (
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go
new file mode 100644
index 000000000..2fb052233
--- /dev/null
+++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go
@@ -0,0 +1,52 @@
+//go:build goexperiment.jsonv2
+
+package util
+
+import (
+ "encoding/json/v2"
+ "math"
+ "strconv"
+ "time"
+ "unsafe"
+)
+
+type JSON struct{ Value any }
+
+func (j JSON) Scan(value any) error {
+ var buf []byte
+
+ switch v := value.(type) {
+ case []byte:
+ buf = v
+ case string:
+ buf = unsafe.Slice(unsafe.StringData(v), len(v))
+ case int64:
+ buf = strconv.AppendInt(nil, v, 10)
+ case float64:
+ buf = AppendNumber(nil, v)
+ case time.Time:
+ buf = append(buf, '"')
+ buf = v.AppendFormat(buf, time.RFC3339Nano)
+ buf = append(buf, '"')
+ case nil:
+ buf = []byte("null")
+ default:
+ panic(AssertErr())
+ }
+
+ return json.Unmarshal(buf, j.Value)
+}
+
+func AppendNumber(dst []byte, f float64) []byte {
+ switch {
+ case math.IsNaN(f):
+ dst = append(dst, "null"...)
+ case math.IsInf(f, 1):
+ dst = append(dst, "9.0e999"...)
+ case math.IsInf(f, -1):
+ dst = append(dst, "-9.0e999"...)
+ default:
+ return strconv.AppendFloat(dst, f, 'g', -1, 64)
+ }
+ return dst
+}