update sqlite pragmas, add fk constraints & idxs
Jes Olson j3s@c3f.net
Fri, 11 Apr 2025 16:25:37 -0500
2 files changed,
20 insertions(+),
1 deletions(-)
M
site.go
→
site.go
@@ -40,7 +40,13 @@ }
// New returns a fully populated & ready for action Site func New() *Site { - db := sqlite.New("vore.db?_pragma=journal_mode(WAL)") + // pragmas: + // - journal_mode=WAL: enable write-ahead log for concurrency & perf + // - foreign_keys=ON: need foreign keyz + // - busy_timeout=5000: locky locky 5 secs + // - synchronous=NORMAL: "The synchronous=NORMAL setting is a good choice for most applications running in WAL mode." + // - cache_size=-64000: 64MB ram for db cache (yum yum more perf) + db := sqlite.New("vore.db?_pragma=journal_mode(WAL)&_pragma=foreign_keys(ON)&_pragma=busy_timeout(5000)&_pragma=synchronous(NORMAL)&_pragma=cache_size(-64000)") s := Site{ title: "vore", reaper: reaper.New(db),
A
sqlite/migrations/3_add_foreign_keys.sql
@@ -0,0 +1,13 @@
+ALTER TABLE subscribe ADD CONSTRAINT fk_subscribe_user FOREIGN KEY (user_id) REFERENCES user (id); + +ALTER TABLE subscribe ADD CONSTRAINT fk_subscribe_feed FOREIGN KEY (feed_id) REFERENCES feed (id); + +ALTER TABLE saved_item ADD CONSTRAINT fk_saved_item_user FOREIGN KEY (user_id) REFERENCES user (id); + +CREATE INDEX IF NOT EXISTS idx_subscribe_user_feed ON subscribe (user_id, feed_id); + +CREATE INDEX IF NOT EXISTS idx_saved_item_user ON saved_item (user_id); + +CREATE INDEX IF NOT EXISTS idx_saved_item_url ON saved_item (item_url); + +CREATE INDEX IF NOT EXISTS idx_saved_item_created ON saved_item (created_at);