OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      f07d8c45f9c5
DATE      2026-07-16
SUBJECT   ookstats: replace go-libsql with mattn go-sqlite3
FILES     6 CHANGED
HASH      f07d8c45f9c5
DATE      2026-07-16
SUBJECT   ookstats: replace go-libsql with mattn
          go-sqlite3
FILES     6 CHANGED
 

diff --git a/nix/pkgs/default.nix b/nix/pkgs/default.nix
index bc25609..1975349 100644
--- a/nix/pkgs/default.nix
+++ b/nix/pkgs/default.nix
@@ -23,14 +23,7 @@
     racePackages = lib.mapAttrs (_name: sim: sim.script) (simulation.generateRace
Comparisons pkgs);
     trinketPackages = lib.mapAttrs (_name: sim: sim.script) (simulation.generateT
rinketComparisons pkgs);
 
-    go-libsql-src = pkgs.fetchFromGitHub {
-      owner = "tursodatabase";
-      repo = "go-libsql";
-      rev = "60e59c7150f4";
-      hash = "sha256-TuD/7AWkC13lQct2QguO31dP1th+nD0ZTPqD+RUfnu8=";
-    };
-
-    ookstats = callPackage ./ookstats {inherit go-libsql-src wowsims-db;};
+    ookstats = callPackage ./ookstats {inherit wowsims-db;};
     ookstats-deploy = callPackage ./ookstats-deploy {inherit ookstats;};
   in {
     packages =

diff --git a/nix/pkgs/default.nix b/nix/pkgs
/default.nix
index bc25609..1975349 100644
--- a/nix/pkgs/default.nix
+++ b/nix/pkgs/default.nix
@@ -23,14 +23,7 @@
     racePackages = lib.mapAttrs (_name: sim
: sim.script) (simulation.generateRaceCompar
isons pkgs);
     trinketPackages = lib.mapAttrs (_name: 
sim: sim.script) (simulation.generateTrinket
Comparisons pkgs);
 
-    go-libsql-src = pkgs.fetchFromGitHub {
-      owner = "tursodatabase";
-      repo = "go-libsql";
-      rev = "60e59c7150f4";
-      hash = "sha256-TuD/7AWkC13lQct2QguO31
dP1th+nD0ZTPqD+RUfnu8=";
-    };
-
-    ookstats = callPackage ./ookstats {inhe
rit go-libsql-src wowsims-db;};
+    ookstats = callPackage ./ookstats {inhe
rit wowsims-db;};
     ookstats-deploy = callPackage ./ookstat
s-deploy {inherit ookstats;};
   in {
     packages =
 

diff --git a/nix/pkgs/ookstats/default.nix b/nix/pkgs/ookstats/default.nix
index 06006b2..5c4d1a4 100644
--- a/nix/pkgs/ookstats/default.nix
+++ b/nix/pkgs/ookstats/default.nix
@@ -2,40 +2,21 @@
   buildGoModule,
   lib,
   gcc,
-  pkgs,
-  go-libsql-src,
   installShellFiles,
   makeWrapper,
   wowsims-db,
   ...
-}: let
-  # map nix platform to go-libsql's platform string
-  libsqlArch =
-    if pkgs.stdenv.hostPlatform.system == "x86_64-linux"
-    then "linux_amd64"
-    else if pkgs.stdenv.hostPlatform.system == "aarch64-linux"
-    then "linux_arm64"
-    else if pkgs.stdenv.hostPlatform.system == "aarch64-darwin"
-    then "darwin_arm64"
-    else throw "Unsupported platform for go-libsql pre-compiled library";
-in
+}:
   buildGoModule {
     pname = "ookstats";
     version = "0.2.0";
     src = ./src;
 
-    vendorHash = "sha256-DHj4DTsXkFQZUimMrnqYc6RVTfsbukBmUcYt/dRwKUo=";
+    vendorHash = "sha256-QJxCINaMiJ6OjRJaOnHMW4gSfXLkXOYQU8xfbKdgQuQ=";
 
     nativeBuildInputs = [gcc installShellFiles makeWrapper];
 
-    env = {
-      CGO_ENABLED = "1";
-      # see:
-      # https://github.com/tursodatabase/go-libsql/issues/21
-      # https://github.com/tursodatabase/go-libsql/issues/57
-      CGO_CFLAGS = "-I${go-libsql-src}/lib/include";
-      CGO_LDFLAGS = "-L${go-libsql-src}/lib/${libsqlArch} -lsql_experimental";
-    };
+    env.CGO_ENABLED = "1";
 
     # Generate shell completions
     postInstall = ''

diff --git a/nix/pkgs/ookstats/default.nix b
/nix/pkgs/ookstats/default.nix
index 06006b2..5c4d1a4 100644
--- a/nix/pkgs/ookstats/default.nix
+++ b/nix/pkgs/ookstats/default.nix
@@ -2,40 +2,21 @@
   buildGoModule,
   lib,
   gcc,
-  pkgs,
-  go-libsql-src,
   installShellFiles,
   makeWrapper,
   wowsims-db,
   ...
-}: let
-  # map nix platform to go-libsql's platfor
m string
-  libsqlArch =
-    if pkgs.stdenv.hostPlatform.system == "
x86_64-linux"
-    then "linux_amd64"
-    else if pkgs.stdenv.hostPlatform.system
 == "aarch64-linux"
-    then "linux_arm64"
-    else if pkgs.stdenv.hostPlatform.system
 == "aarch64-darwin"
-    then "darwin_arm64"
-    else throw "Unsupported platform for go
-libsql pre-compiled library";
-in
+}:
   buildGoModule {
     pname = "ookstats";
     version = "0.2.0";
     src = ./src;
 
-    vendorHash = "sha256-DHj4DTsXkFQZUimMrn
qYc6RVTfsbukBmUcYt/dRwKUo=";
+    vendorHash = "sha256-QJxCINaMiJ6OjRJaOn
HMW4gSfXLkXOYQU8xfbKdgQuQ=";
 
     nativeBuildInputs = [gcc installShellFi
les makeWrapper];
 
-    env = {
-      CGO_ENABLED = "1";
-      # see:
-      # https://github.com/tursodatabase/go
-libsql/issues/21
-      # https://github.com/tursodatabase/go
-libsql/issues/57
-      CGO_CFLAGS = "-I${go-libsql-src}/lib/
include";
-      CGO_LDFLAGS = "-L${go-libsql-src}/lib
/${libsqlArch} -lsql_experimental";
-    };
+    env.CGO_ENABLED = "1";
 
     # Generate shell completions
     postInstall = ''
 

diff --git a/nix/pkgs/ookstats/src/cmd/generate.go b/nix/pkgs/ookstats/src/cmd/gen
erate.go
index 51ca78b..88a793e 100644
--- a/nix/pkgs/ookstats/src/cmd/generate.go
+++ b/nix/pkgs/ookstats/src/cmd/generate.go
@@ -8,7 +8,6 @@ import (
 	"strings"
 
 	"github.com/spf13/cobra"
-	_ "github.com/tursodatabase/go-libsql"
 	"ookstats/internal/database"
 	"ookstats/internal/generator"
 	"ookstats/internal/generator/indexes"

diff --git a/nix/pkgs/ookstats/src/cmd/gener
ate.go b/nix/pkgs/ookstats/src/cmd/generate.
go
index 51ca78b..88a793e 100644
--- a/nix/pkgs/ookstats/src/cmd/generate.go
+++ b/nix/pkgs/ookstats/src/cmd/generate.go
@@ -8,7 +8,6 @@ import (
 	"strings"
 
 	"github.com/spf13/cobra"
-	_ "github.com/tursodatabase/go-libsql"
 	"ookstats/internal/database"
 	"ookstats/internal/generator"
 	"ookstats/internal/generator/indexes"
 

diff --git a/nix/pkgs/ookstats/src/go.mod b/nix/pkgs/ookstats/src/go.mod
index 89f2250..016addc 100644
--- a/nix/pkgs/ookstats/src/go.mod
+++ b/nix/pkgs/ookstats/src/go.mod
@@ -4,12 +4,11 @@ go 1.21
 
 require (
 	github.com/charmbracelet/log v0.4.2
+	github.com/mattn/go-sqlite3 v1.14.48
 	github.com/spf13/cobra v1.10.1
-	github.com/tursodatabase/go-libsql v0.0.0-20250723062947-60e59c7150f4
 )
 
 require (
-	github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
 	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
 	github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // in
direct
 	github.com/charmbracelet/lipgloss v1.1.0 // indirect
@@ -18,7 +17,6 @@ require (
 	github.com/charmbracelet/x/term v0.2.1 // indirect
 	github.com/go-logfmt/logfmt v0.6.0 // indirect
 	github.com/inconshreveable/mousetrap v1.1.0 // indirect
-	github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06 // ind
irect
 	github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
 	github.com/mattn/go-isatty v0.0.20 // indirect
 	github.com/mattn/go-runewidth v0.0.16 // indirect

diff --git a/nix/pkgs/ookstats/src/go.mod b/
nix/pkgs/ookstats/src/go.mod
index 89f2250..016addc 100644
--- a/nix/pkgs/ookstats/src/go.mod
+++ b/nix/pkgs/ookstats/src/go.mod
@@ -4,12 +4,11 @@ go 1.21
 
 require (
 	github.com/charmbracelet/log v0.4.2
+	github.com/mattn/go-sqlite3 v1.14.48
 	github.com/spf13/cobra v1.10.1
-	github.com/tursodatabase/go-libsql v0.0.0-
20250723062947-60e59c7150f4
 )
 
 require (
-	github.com/antlr4-go/antlr/v4 v4.13.0 // i
ndirect
 	github.com/aymanbagabas/go-osc52/v2 v2.0.1
 // indirect
 	github.com/charmbracelet/colorprofile v0.2
.3-0.20250311203215-f60798e515dc // indirect
 	github.com/charmbracelet/lipgloss v1.1.0 /
/ indirect
@@ -18,7 +17,6 @@ require (
 	github.com/charmbracelet/x/term v0.2.1 // 
indirect
 	github.com/go-logfmt/logfmt v0.6.0 // indi
rect
 	github.com/inconshreveable/mousetrap v1.1.
0 // indirect
-	github.com/libsql/sqlite-antlr4-parser v0.
0.0-20240327125255-dbf53b6cbf06 // indirect
 	github.com/lucasb-eyer/go-colorful v1.2.0 
// indirect
 	github.com/mattn/go-isatty v0.0.20 // indi
rect
 	github.com/mattn/go-runewidth v0.0.16 // i
ndirect
 

diff --git a/nix/pkgs/ookstats/src/go.sum b/nix/pkgs/ookstats/src/go.sum
index ea0f955..3c909b1 100644
--- a/nix/pkgs/ookstats/src/go.sum
+++ b/nix/pkgs/ookstats/src/go.sum
@@ -1,5 +1,3 @@
-github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8T
VTI=
-github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9U
TnmpPaOR2g=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiEr
DT4WkJ2k=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2
ASbcXHWsFqH8hp8=
 github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZ
I35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
@@ -19,22 +17,18 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARq
s3+rkHYY13jYWTU97c
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI
+c5H38=
 github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4
=
 github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEV
veWlfTs=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNG
IjoY=
 github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s
0bqwp9tc8=
 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfs
EA9PFc4w1p2J65bw=
-github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06 h1:JLvn
7D+wXjH9g4Jsjo+VqmzTUpl/LX7vfr6VOfSWTdM=
-github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06/go.mod 
h1:FUkZ5OHjlGPjnM2UyGJz9TypXQFgYqw6AFNO1UiROTM=
 github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69A
j6K7nkY=
 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7
ruzyGqttikkLy0=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY
=
 github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7
dTCTo3Y=
 github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TU
LQc=
 github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh1
53qUoGf23w=
+github.com/mattn/go-sqlite3 v1.14.48 h1:7XHIgl0a8HwOaiK4E47ozLkST78rR9+OtNGx27D/T
Fs=
+github.com/mattn/go-sqlite3 v1.14.48/go.mod h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv
5gtm9sB6w=
 github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
 github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3V
fY/Cnk=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl
0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbA
QM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNV
Y4sRDYZ/4=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJt
xc=
@@ -47,19 +41,13 @@ github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iR
ViNW+4lEMi0PvY=
 github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2
Bg=
 github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJ
A=
 github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8
C91i36aY=
-github.com/tursodatabase/go-libsql v0.0.0-20250723062947-60e59c7150f4 h1:UwxG3Vmt
rhYRF38SDa1M829udKBXGqYcbzcWd0EBImc=
-github.com/tursodatabase/go-libsql v0.0.0-20250723062947-60e59c7150f4/go.mod h1:T
jsB2miB8RW2Sse8sdxzVTdeGlx74GloD5zJYUC38d8=
 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF
/ppJZNG9ZpyihvCd0w101no=
 github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuq
unuUZ/Dhy/avygyECGrLceyNeo4LiM=
 golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pS
yOt+UgdZw2BFZ+lEw=
 golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR
2hssIjF07kZFEiieALBM/ARQ=
-golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
 golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8h
uTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
-gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81H
FBacw=

diff --git a/nix/pkgs/ookstats/src/go.sum b/
nix/pkgs/ookstats/src/go.sum
index ea0f955..3c909b1 100644
--- a/nix/pkgs/ookstats/src/go.sum
+++ b/nix/pkgs/ookstats/src/go.sum
@@ -1,5 +1,3 @@
-github.com/antlr4-go/antlr/v4 v4.13.0 h1:lx
Cg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
-github.com/antlr4-go/antlr/v4 v4.13.0/go.mo
d h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPa
OR2g=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1 
h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ
2k=
 github.com/aymanbagabas/go-osc52/v2 v2.0.1/
go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXH
WsFqH8hp8=
 github.com/charmbracelet/colorprofile v0.2.
3-0.20250311203215-f60798e515dc h1:4pZI35227
imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
@@ -19,22 +17,18 @@ github.com/davecgh/go-sp
ew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkH
YY13jYWTU97c
 github.com/davecgh/go-spew v1.1.1/go.mod h1
:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38
=
 github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu
3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
 github.com/go-logfmt/logfmt v0.6.0/go.mod h
1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfT
s=
-github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg
4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
-github.com/google/go-cmp v0.5.9/go.mod h1:1
7dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/inconshreveable/mousetrap v1.1.0
 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9
tc8=
 github.com/inconshreveable/mousetrap v1.1.0
/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc
4w1p2J65bw=
-github.com/libsql/sqlite-antlr4-parser v0.0
.0-20240327125255-dbf53b6cbf06 h1:JLvn7D+wXj
H9g4Jsjo+VqmzTUpl/LX7vfr6VOfSWTdM=
-github.com/libsql/sqlite-antlr4-parser v0.0
.0-20240327125255-dbf53b6cbf06/go.mod h1:FUk
Z5OHjlGPjnM2UyGJz9TypXQFgYqw6AFNO1UiROTM=
 github.com/lucasb-eyer/go-colorful v1.2.0 h
1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nk
Y=
 github.com/lucasb-eyer/go-colorful v1.2.0/g
o.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGq
ttikkLy0=
 github.com/mattn/go-isatty v0.0.20 h1:xfD0i
DuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
 github.com/mattn/go-isatty v0.0.20/go.mod h
1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3
Y=
 github.com/mattn/go-runewidth v0.0.16 h1:E5
ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
 github.com/mattn/go-runewidth v0.0.16/go.mo
d h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoG
f23w=
+github.com/mattn/go-sqlite3 v1.14.48 h1:7XH
Igl0a8HwOaiK4E47ozLkST78rR9+OtNGx27D/TFs=
+github.com/mattn/go-sqlite3 v1.14.48/go.mod
 h1:6JTjA44L93a0QCyJef5YvlPoKXntQPjzWv5gtm9s
B6w=
 github.com/muesli/termenv v0.16.0 h1:S5AlUN
9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
 github.com/muesli/termenv v0.16.0/go.mod h1
:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk
=
-github.com/pkg/errors v0.9.1 h1:FEBLx1zS214
owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
-github.com/pkg/errors v0.9.1/go.mod h1:bwaw
xfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DB
wDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod
 h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDY
Z/4=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6w
j4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
@@ -47,19 +41,13 @@ github.com/spf13/pflag v
1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4
lEMi0PvY=
 github.com/spf13/pflag v1.0.9/go.mod h1:McX
fInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/testify v1.10.0 h1:Xv5e
rBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
 github.com/stretchr/testify v1.10.0/go.mod 
h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36
aY=
-github.com/tursodatabase/go-libsql v0.0.0-2
0250723062947-60e59c7150f4 h1:UwxG3VmtrhYRF3
8SDa1M829udKBXGqYcbzcWd0EBImc=
-github.com/tursodatabase/go-libsql v0.0.0-2
0250723062947-60e59c7150f4/go.mod h1:TjsB2mi
B8RW2Sse8sdxzVTdeGlx74GloD5zJYUC38d8=
 github.com/xo/terminfo v0.0.0-2022091000202
9-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZN
G9ZpyihvCd0w101no=
 github.com/xo/terminfo v0.0.0-2022091000202
9-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/
Dhy/avygyECGrLceyNeo4LiM=
 golang.org/x/exp v0.0.0-20240325151524-a685
a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+Ug
dZw2BFZ+lEw=
 golang.org/x/exp v0.0.0-20240325151524-a685
a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIj
F07kZFEiieALBM/ARQ=
-golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr
1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1
gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJr
h7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFY
WkSue1YwXzLmsV5Gfq7Eiy72C1uc=
 golang.org/x/sys v0.30.0/go.mod h1:/VUhepia
JMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d
25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQ
CZ016jof/cbN4VW5Yz0=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuv
ctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7B
CEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gotest.tools v2.2.0+incompatible h1:VsBPFP1
AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
-gotest.tools v2.2.0+incompatible/go.mod h1:
DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 

diff --git a/nix/pkgs/ookstats/src/internal/database/client.go b/nix/pkgs/ookstats
/src/internal/database/client.go
index 3dcee09..d6d8d14 100644
--- a/nix/pkgs/ookstats/src/internal/database/client.go
+++ b/nix/pkgs/ookstats/src/internal/database/client.go
@@ -6,10 +6,19 @@ import (
 	"os"
 	"strings"
 
-	_ "github.com/tursodatabase/go-libsql"
+	sqlite3 "github.com/mattn/go-sqlite3"
 )
 
-// connect creates a local libSQL database connection
+func init() {
+	sql.Register("sqlite3_ookstats", &sqlite3.SQLiteDriver{
+		ConnectHook: func(conn *sqlite3.SQLiteConn) error {
+			// cache_size has no DSN param in mattn/go-sqlite3; apply per connection
+			_, err := conn.Exec("PRAGMA cache_size = -64000", nil)
+			return err
+		},
+	})
+}
+
 var dbPathOverride string
 
 // SetDBPath allows callers (CLI) to override the local SQLite filename
@@ -17,7 +26,7 @@ func SetDBPath(path string) {
 	dbPathOverride = path
 }
 
-// DBConnString returns the libsql connection string for the local SQLite file
+// DBConnString returns the DSN for the local SQLite file
 func DBConnString() string {
 	// Priority: explicit override -> env vars -> default
 	if dbPathOverride != "" {
@@ -48,11 +57,7 @@ func ensureDSNParams(base string) string {
 	if strings.Contains(base, "?") {
 		return base
 	}
-	return base + "?" +
-		"_pragma=journal_mode(WAL)&" +
-		"_pragma=synchronous=NORMAL&" +
-		"_pragma=busy_timeout=5000&" +
-		"_pragma=cache_size=-64000"
+	return base + "?_journal_mode=WAL&_synchronous=NORMAL&_busy_timeout=5000"
 }
 
 // DBFilePath returns the plain filesystem path for the local DB (without file: p
refix)
@@ -69,7 +74,7 @@ func Connect() (*sql.DB, error) {
 	fmt.Printf("Using local SQLite database: %s\n", dsn)
 	fmt.Printf("Opening database connection...\n")
 
-	db, err := sql.Open("libsql", dsn)
+	db, err := sql.Open("sqlite3_ookstats", dsn)
 	if err != nil {
 		return nil, fmt.Errorf("failed to open database: %w", err)
 	}

diff --git a/nix/pkgs/ookstats/src/internal/
database/client.go b/nix/pkgs/ookstats/src/i
nternal/database/client.go
index 3dcee09..d6d8d14 100644
--- a/nix/pkgs/ookstats/src/internal/databas
e/client.go
+++ b/nix/pkgs/ookstats/src/internal/databas
e/client.go
@@ -6,10 +6,19 @@ import (
 	"os"
 	"strings"
 
-	_ "github.com/tursodatabase/go-libsql"
+	sqlite3 "github.com/mattn/go-sqlite3"
 )
 
-// connect creates a local libSQL database 
connection
+func init() {
+	sql.Register("sqlite3_ookstats", &sqlite3.
SQLiteDriver{
+		ConnectHook: func(conn *sqlite3.SQLiteCon
n) error {
+			// cache_size has no DSN param in mattn/
go-sqlite3; apply per connection
+			_, err := conn.Exec("PRAGMA cache_size =
 -64000", nil)
+			return err
+		},
+	})
+}
+
 var dbPathOverride string
 
 // SetDBPath allows callers (CLI) to overri
de the local SQLite filename
@@ -17,7 +26,7 @@ func SetDBPath(path string
) {
 	dbPathOverride = path
 }
 
-// DBConnString returns the libsql connecti
on string for the local SQLite file
+// DBConnString returns the DSN for the loc
al SQLite file
 func DBConnString() string {
 	// Priority: explicit override -> env vars
 -> default
 	if dbPathOverride != "" {
@@ -48,11 +57,7 @@ func ensureDSNParams(base
 string) string {
 	if strings.Contains(base, "?") {
 		return base
 	}
-	return base + "?" +
-		"_pragma=journal_mode(WAL)&" +
-		"_pragma=synchronous=NORMAL&" +
-		"_pragma=busy_timeout=5000&" +
-		"_pragma=cache_size=-64000"
+	return base + "?_journal_mode=WAL&_synchro
nous=NORMAL&_busy_timeout=5000"
 }
 
 // DBFilePath returns the plain filesystem 
path for the local DB (without file: prefix)
@@ -69,7 +74,7 @@ func Connect() (*sql.DB, e
rror) {
 	fmt.Printf("Using local SQLite database: %
s\n", dsn)
 	fmt.Printf("Opening database connection...
\n")
 
-	db, err := sql.Open("libsql", dsn)
+	db, err := sql.Open("sqlite3_ookstats", ds
n)
 	if err != nil {
 		return nil, fmt.Errorf("failed to open da
tabase: %w", err)
 	}
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET