forked from tangled.org/core
this repo has no description

*/db: actually enable foreign keys

`sql.DB` pools connections, which means that there's a good chance that
our foreign keys aren't actually being enforced, unless a goroutine
happens to be using the connection that was made when we set `pragma
foreign_keys = 1`.

Signed-off-by: Winter <winter@winter.cafe>

authored by winter.bsky.social and committed by Tangled 4e27d297 c8d76b33

Changed files
+8 -11
appview
db
cmd
punchcardPopulate
eventconsumer
cursor
knotserver
db
rbac
spindle
db
secrets
+1 -2
appview/db/db.go
··· 27 } 28 29 func Make(dbPath string) (*DB, error) { 30 - db, err := sql.Open("sqlite3", dbPath) 31 if err != nil { 32 return nil, err 33 } 34 _, err = db.Exec(` 35 pragma journal_mode = WAL; 36 pragma synchronous = normal; 37 - pragma foreign_keys = on; 38 pragma temp_store = memory; 39 pragma mmap_size = 30000000000; 40 pragma page_size = 32768;
··· 27 } 28 29 func Make(dbPath string) (*DB, error) { 30 + db, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=1") 31 if err != nil { 32 return nil, err 33 } 34 _, err = db.Exec(` 35 pragma journal_mode = WAL; 36 pragma synchronous = normal; 37 pragma temp_store = memory; 38 pragma mmap_size = 30000000000; 39 pragma page_size = 32768;
+1 -1
cmd/punchcardPopulate/main.go
··· 11 ) 12 13 func main() { 14 - db, err := sql.Open("sqlite3", "./appview.db") 15 if err != nil { 16 log.Fatal("Failed to open database:", err) 17 }
··· 11 ) 12 13 func main() { 14 + db, err := sql.Open("sqlite3", "./appview.db?_foreign_keys=1") 15 if err != nil { 16 log.Fatal("Failed to open database:", err) 17 }
+1 -1
eventconsumer/cursor/sqlite.go
··· 21 } 22 23 func NewSQLiteStore(dbPath string, opts ...SqliteStoreOpt) (*SqliteStore, error) { 24 - db, err := sql.Open("sqlite3", dbPath) 25 if err != nil { 26 return nil, fmt.Errorf("failed to open sqlite database: %w", err) 27 }
··· 21 } 22 23 func NewSQLiteStore(dbPath string, opts ...SqliteStoreOpt) (*SqliteStore, error) { 24 + db, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=1") 25 if err != nil { 26 return nil, fmt.Errorf("failed to open sqlite database: %w", err) 27 }
+1 -2
knotserver/db/init.go
··· 11 } 12 13 func Setup(dbPath string) (*DB, error) { 14 - db, err := sql.Open("sqlite3", dbPath) 15 if err != nil { 16 return nil, err 17 } ··· 19 _, err = db.Exec(` 20 pragma journal_mode = WAL; 21 pragma synchronous = normal; 22 - pragma foreign_keys = on; 23 pragma temp_store = memory; 24 pragma mmap_size = 30000000000; 25 pragma page_size = 32768;
··· 11 } 12 13 func Setup(dbPath string) (*DB, error) { 14 + db, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=1") 15 if err != nil { 16 return nil, err 17 } ··· 19 _, err = db.Exec(` 20 pragma journal_mode = WAL; 21 pragma synchronous = normal; 22 pragma temp_store = memory; 23 pragma mmap_size = 30000000000; 24 pragma page_size = 32768;
+1 -1
rbac/rbac.go
··· 43 return nil, err 44 } 45 46 - db, err := sql.Open("sqlite3", path) 47 if err != nil { 48 return nil, err 49 }
··· 43 return nil, err 44 } 45 46 + db, err := sql.Open("sqlite3", path+"?_foreign_keys=1") 47 if err != nil { 48 return nil, err 49 }
+1 -1
rbac/rbac_test.go
··· 14 ) 15 16 func setup(t *testing.T) *rbac.Enforcer { 17 - db, err := sql.Open("sqlite3", ":memory:") 18 assert.NoError(t, err) 19 20 a, err := adapter.NewAdapter(db, "sqlite3", "acl")
··· 14 ) 15 16 func setup(t *testing.T) *rbac.Enforcer { 17 + db, err := sql.Open("sqlite3", ":memory:?_foreign_keys=1") 18 assert.NoError(t, err) 19 20 a, err := adapter.NewAdapter(db, "sqlite3", "acl")
+1 -2
spindle/db/db.go
··· 11 } 12 13 func Make(dbPath string) (*DB, error) { 14 - db, err := sql.Open("sqlite3", dbPath) 15 if err != nil { 16 return nil, err 17 } ··· 19 _, err = db.Exec(` 20 pragma journal_mode = WAL; 21 pragma synchronous = normal; 22 - pragma foreign_keys = on; 23 pragma temp_store = memory; 24 pragma mmap_size = 30000000000; 25 pragma page_size = 32768;
··· 11 } 12 13 func Make(dbPath string) (*DB, error) { 14 + db, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=1") 15 if err != nil { 16 return nil, err 17 } ··· 19 _, err = db.Exec(` 20 pragma journal_mode = WAL; 21 pragma synchronous = normal; 22 pragma temp_store = memory; 23 pragma mmap_size = 30000000000; 24 pragma page_size = 32768;
+1 -1
spindle/secrets/sqlite.go
··· 24 } 25 26 func NewSQLiteManager(dbPath string, opts ...SqliteManagerOpt) (*SqliteManager, error) { 27 - db, err := sql.Open("sqlite3", dbPath) 28 if err != nil { 29 return nil, fmt.Errorf("failed to open sqlite database: %w", err) 30 }
··· 24 } 25 26 func NewSQLiteManager(dbPath string, opts ...SqliteManagerOpt) (*SqliteManager, error) { 27 + db, err := sql.Open("sqlite3", dbPath+"?_foreign_keys=1") 28 if err != nil { 29 return nil, fmt.Errorf("failed to open sqlite database: %w", err) 30 }