fix: create sqlite db parent directory before opening#157
Merged
Conversation
095de90 to
45c9407
Compare
node:sqlite does not create missing parent directories and fails with "unable to open database file". The default db path resolves under the package dir, which ships no data/ folder, so sideshow serve crashed on first run. Create the parent dir before opening the database.
45c9407 to
2f1b915
Compare
This was referenced Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
npx sideshow@0.8.0 servecrashes on first run:node:sqlite'sDatabaseSyncdoes not create missing parent directories. The default db path resolves to<package>/data/sideshow.db, but the package ships nodata/folder — so the directory never exists on a fresh install and every default-path startup fails. It reproduces regardless of port or working directory; the only workaround today is settingSIDESHOW_DBto a path whose directory already exists.Proposal
In
createSqliteStorage,mkdirSync(dirname(path), { recursive: true })before opening the database, guarded by the existingpath !== ":memory:"check so the in-memory contract suite is untouched.Impact
sideshow serveworks out of the box on first run with noSIDESHOW_DBoverride.SIDESHOW_DBpointing into a not-yet-created directory now works too.:memory:or existing directories.Verified: server boots against a nested non-existent db path and creates it; existing
test/sqlStore.test.tssuite passes (30/30).