dirsql 0.3.90__tar.gz → 0.3.91__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. {dirsql-0.3.90 → dirsql-0.3.91}/Cargo.lock +1 -1
  2. {dirsql-0.3.90 → dirsql-0.3.91}/PKG-INFO +1 -1
  3. {dirsql-0.3.90/packages/rust → dirsql-0.3.91}/docs/reference/sdk.md +6 -3
  4. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/Cargo.toml +1 -1
  5. {dirsql-0.3.90 → dirsql-0.3.91/packages/python}/docs/reference/sdk.md +6 -3
  6. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/e2e-attestation.json +2 -2
  7. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/src/lib.rs +1 -4
  8. {dirsql-0.3.90/packages/python → dirsql-0.3.91/packages/rust}/docs/reference/sdk.md +6 -3
  9. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/bin/dirsql.rs +1 -4
  10. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/lib.rs +44 -20
  11. {dirsql-0.3.90 → dirsql-0.3.91}/Cargo.toml +0 -0
  12. {dirsql-0.3.90 → dirsql-0.3.91}/README.md +0 -0
  13. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/__init__.py +0 -0
  14. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/_async.py +0 -0
  15. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/_dirsql.pyi +0 -0
  16. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/cli/__init__.py +0 -0
  17. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/cli/binary_path.py +0 -0
  18. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/cli/is_windows.py +0 -0
  19. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/cli/main.py +0 -0
  20. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/cli/resolve_config_extensions.py +0 -0
  21. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/py.typed +0 -0
  22. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/resolve_config_extensions.py +0 -0
  23. {dirsql-0.3.90 → dirsql-0.3.91}/dirsql/resolve_extension.py +0 -0
  24. {dirsql-0.3.90 → dirsql-0.3.91}/docs/.claude/CLAUDE.md +0 -0
  25. {dirsql-0.3.90 → dirsql-0.3.91}/docs/.vitepress/config.ts +0 -0
  26. {dirsql-0.3.90 → dirsql-0.3.91}/docs/.vitepress/theme/index.ts +0 -0
  27. {dirsql-0.3.90 → dirsql-0.3.91}/docs/.vitepress/theme/lang.ts +0 -0
  28. {dirsql-0.3.90 → dirsql-0.3.91}/docs/AGENTS.md +0 -0
  29. {dirsql-0.3.90 → dirsql-0.3.91}/docs/explanation.md +0 -0
  30. {dirsql-0.3.90 → dirsql-0.3.91}/docs/getting-started.md +0 -0
  31. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/columns-from-paths.md +0 -0
  32. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/define-tables.md +0 -0
  33. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/embed.md +0 -0
  34. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/extract-from-contents.md +0 -0
  35. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/load-extension.md +0 -0
  36. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/persist.md +0 -0
  37. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/react-to-changes.md +0 -0
  38. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/search-by-meaning.md +0 -0
  39. {dirsql-0.3.90 → dirsql-0.3.91}/docs/howto/skip-files.md +0 -0
  40. {dirsql-0.3.90 → dirsql-0.3.91}/docs/index.md +0 -0
  41. {dirsql-0.3.90 → dirsql-0.3.91}/docs/migrations.md +0 -0
  42. {dirsql-0.3.90 → dirsql-0.3.91}/docs/package.json +0 -0
  43. {dirsql-0.3.90 → dirsql-0.3.91}/docs/playwright.config.ts +0 -0
  44. {dirsql-0.3.90 → dirsql-0.3.91}/docs/pnpm-lock.yaml +0 -0
  45. {dirsql-0.3.90 → dirsql-0.3.91}/docs/pnpm-workspace.yaml +0 -0
  46. {dirsql-0.3.90 → dirsql-0.3.91}/docs/reference/cli.md +0 -0
  47. {dirsql-0.3.90 → dirsql-0.3.91}/docs/reference/columns.md +0 -0
  48. {dirsql-0.3.90 → dirsql-0.3.91}/docs/reference/config.md +0 -0
  49. {dirsql-0.3.90 → dirsql-0.3.91}/docs/reference/hooks.md +0 -0
  50. {dirsql-0.3.90 → dirsql-0.3.91}/docs/reference/http-api.md +0 -0
  51. {dirsql-0.3.90 → dirsql-0.3.91}/docs/tests/integration/home.spec.ts +0 -0
  52. {dirsql-0.3.90 → dirsql-0.3.91}/docs/tests/integration/language-flag.spec.ts +0 -0
  53. {dirsql-0.3.90 → dirsql-0.3.91}/docs/tests/integration/sidebar.spec.ts +0 -0
  54. {dirsql-0.3.90 → dirsql-0.3.91}/docs/tests/unit/config.test.ts +0 -0
  55. {dirsql-0.3.90 → dirsql-0.3.91}/docs/tests/unit/lang.test.ts +0 -0
  56. {dirsql-0.3.90 → dirsql-0.3.91}/docs/vitest.config.ts +0 -0
  57. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/README.md +0 -0
  58. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/conftest.py +0 -0
  59. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/.claude/CLAUDE.md +0 -0
  60. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/.vitepress/config.ts +0 -0
  61. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  62. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  63. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/AGENTS.md +0 -0
  64. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/explanation.md +0 -0
  65. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/getting-started.md +0 -0
  66. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/columns-from-paths.md +0 -0
  67. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/define-tables.md +0 -0
  68. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/embed.md +0 -0
  69. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/extract-from-contents.md +0 -0
  70. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/load-extension.md +0 -0
  71. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/persist.md +0 -0
  72. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/react-to-changes.md +0 -0
  73. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/search-by-meaning.md +0 -0
  74. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/howto/skip-files.md +0 -0
  75. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/index.md +0 -0
  76. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/migrations.md +0 -0
  77. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/package.json +0 -0
  78. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/playwright.config.ts +0 -0
  79. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/pnpm-lock.yaml +0 -0
  80. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/pnpm-workspace.yaml +0 -0
  81. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/reference/cli.md +0 -0
  82. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/reference/columns.md +0 -0
  83. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/reference/config.md +0 -0
  84. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/reference/hooks.md +0 -0
  85. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/reference/http-api.md +0 -0
  86. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/tests/integration/home.spec.ts +0 -0
  87. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/tests/integration/language-flag.spec.ts +0 -0
  88. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/tests/integration/sidebar.spec.ts +0 -0
  89. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/tests/unit/config.test.ts +0 -0
  90. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/tests/unit/lang.test.ts +0 -0
  91. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/docs/vitest.config.ts +0 -0
  92. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/tests/__init__.py +0 -0
  93. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/tests/conftest.py +0 -0
  94. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/tests/e2e/__init__.py +0 -0
  95. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/tests/integration/__init__.py +0 -0
  96. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/tests/integration/binding/__init__.py +0 -0
  97. {dirsql-0.3.90 → dirsql-0.3.91}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  98. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/Cargo.toml +0 -0
  99. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/README.md +0 -0
  100. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/benches/db_bench.rs +0 -0
  101. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/benches/differ_bench.rs +0 -0
  102. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/benches/matcher_bench.rs +0 -0
  103. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/benches/scanner_bench.rs +0 -0
  104. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/explanation.md +0 -0
  105. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/getting-started.md +0 -0
  106. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  107. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/define-tables.md +0 -0
  108. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/embed.md +0 -0
  109. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  110. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/load-extension.md +0 -0
  111. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/persist.md +0 -0
  112. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/react-to-changes.md +0 -0
  113. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  114. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/howto/skip-files.md +0 -0
  115. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/index.md +0 -0
  116. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/migrations.md +0 -0
  117. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/reference/cli.md +0 -0
  118. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/reference/columns.md +0 -0
  119. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/reference/config.md +0 -0
  120. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/reference/hooks.md +0 -0
  121. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/docs/reference/http-api.md +0 -0
  122. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/cli/execute.rs +0 -0
  123. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/cli/init.rs +0 -0
  124. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/cli/mod.rs +0 -0
  125. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/cli/router.rs +0 -0
  126. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/cli/serialize.rs +0 -0
  127. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/cli/server.rs +0 -0
  128. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/command.rs +0 -0
  129. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/config.rs +0 -0
  130. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/db.rs +0 -0
  131. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/default_config.toml +0 -0
  132. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/differ.rs +0 -0
  133. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/matcher.rs +0 -0
  134. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/persist.rs +0 -0
  135. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/scanner.rs +0 -0
  136. {dirsql-0.3.90 → dirsql-0.3.91}/packages/rust/src/watcher.rs +0 -0
  137. {dirsql-0.3.90 → dirsql-0.3.91}/pyproject.toml +0 -0
@@ -500,7 +500,7 @@ dependencies = [
500
500
 
501
501
  [[package]]
502
502
  name = "dirsql-py-ext"
503
- version = "0.3.90"
503
+ version = "0.3.91"
504
504
  dependencies = [
505
505
  "dirsql",
506
506
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.3.90
3
+ Version: 0.3.91
4
4
  Summary: Ephemeral SQL index over a local directory
5
5
  Keywords: sql,filesystem,directory,sqlite,index
6
6
  Author: Kevin Scott
@@ -81,8 +81,8 @@ DirSQL::builder()
81
81
  .tables(tables) // optional; append one with .table(t)
82
82
  .ignore(patterns) // optional
83
83
  .config(config_toml_path) // optional
84
- .persist(true) // optional; default false
85
- .persist_path(path) // optional
84
+ .persist(cache_path) // optional; Some(path), or None for the
85
+ // default <root>/.dirsql/cache.db
86
86
  .extensions(extensions) // optional; append one with .extension(e)
87
87
  .poll_interval(duration) // optional; watch-loop cadence, default 200ms
88
88
  .build() // -> Result<DirSQL> (synchronous scan)
@@ -114,7 +114,10 @@ directory" error.
114
114
  changed are re-parsed. (The CLI exposes the same switch as the
115
115
  [`--persist [PATH]`](./cli.md#server-mode) flag; it is not a config key.)
116
116
  - `persist_path` / `persistPath` — Override the cache location. Ignored when
117
- persistence is off. Constructor values are used as given.
117
+ persistence is off. Constructor values are used as given. In Rust these two
118
+ parameters collapse into a single builder method: `.persist(None)` enables
119
+ persistence at the default location, `.persist(Some(path))` enables it at
120
+ `path`.
118
121
  - `extensions` — SQLite extensions to load at startup, before any table
119
122
  DDL (enable → load → disable, so SQL `load_extension()` is never
120
123
  exposed). Each entry pairs a shared-library `path` with an optional
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
4
4
  # pypi/maturin handler can rewrite it via `write-version` before
5
5
  # `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
6
6
  # and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
7
- version = "0.3.90"
7
+ version = "0.3.91"
8
8
  # abi3 note: the `abi3-py311` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp311-abi3` wheel per platform that loads on every CPython >= 3.11
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.11"`), instead of
@@ -81,8 +81,8 @@ DirSQL::builder()
81
81
  .tables(tables) // optional; append one with .table(t)
82
82
  .ignore(patterns) // optional
83
83
  .config(config_toml_path) // optional
84
- .persist(true) // optional; default false
85
- .persist_path(path) // optional
84
+ .persist(cache_path) // optional; Some(path), or None for the
85
+ // default <root>/.dirsql/cache.db
86
86
  .extensions(extensions) // optional; append one with .extension(e)
87
87
  .poll_interval(duration) // optional; watch-loop cadence, default 200ms
88
88
  .build() // -> Result<DirSQL> (synchronous scan)
@@ -114,7 +114,10 @@ directory" error.
114
114
  changed are re-parsed. (The CLI exposes the same switch as the
115
115
  [`--persist [PATH]`](./cli.md#server-mode) flag; it is not a config key.)
116
116
  - `persist_path` / `persistPath` — Override the cache location. Ignored when
117
- persistence is off. Constructor values are used as given.
117
+ persistence is off. Constructor values are used as given. In Rust these two
118
+ parameters collapse into a single builder method: `.persist(None)` enables
119
+ persistence at the default location, `.persist(Some(path))` enables it at
120
+ `path`.
118
121
  - `extensions` — SQLite extensions to load at startup, before any table
119
122
  DDL (enable → load → disable, so SQL `load_extension()` is never
120
123
  exposed). Each entry pairs a shared-library `path` with an optional
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "command": "uv run python -m pytest tests/e2e/ -x -q",
3
- "ran_at": 1783637710,
3
+ "ran_at": 1783639859,
4
4
  "exit_code": 0,
5
- "commit": "c7c626ca03beb1b23e26ab96febf3c9df5d4a67f"
5
+ "commit": "8b7d30b7097ed56f7f1cca359b7a67ffaf8c4e65"
6
6
  }
@@ -154,10 +154,7 @@ mod python {
154
154
  builder = builder.config(c);
155
155
  }
156
156
  if persist {
157
- builder = builder.persist(true);
158
- }
159
- if let Some(p) = persist_path {
160
- builder = builder.persist_path(p);
157
+ builder = builder.persist(persist_path);
161
158
  }
162
159
  if !rust_extensions.is_empty() {
163
160
  builder = builder.extensions(rust_extensions);
@@ -81,8 +81,8 @@ DirSQL::builder()
81
81
  .tables(tables) // optional; append one with .table(t)
82
82
  .ignore(patterns) // optional
83
83
  .config(config_toml_path) // optional
84
- .persist(true) // optional; default false
85
- .persist_path(path) // optional
84
+ .persist(cache_path) // optional; Some(path), or None for the
85
+ // default <root>/.dirsql/cache.db
86
86
  .extensions(extensions) // optional; append one with .extension(e)
87
87
  .poll_interval(duration) // optional; watch-loop cadence, default 200ms
88
88
  .build() // -> Result<DirSQL> (synchronous scan)
@@ -114,7 +114,10 @@ directory" error.
114
114
  changed are re-parsed. (The CLI exposes the same switch as the
115
115
  [`--persist [PATH]`](./cli.md#server-mode) flag; it is not a config key.)
116
116
  - `persist_path` / `persistPath` — Override the cache location. Ignored when
117
- persistence is off. Constructor values are used as given.
117
+ persistence is off. Constructor values are used as given. In Rust these two
118
+ parameters collapse into a single builder method: `.persist(None)` enables
119
+ persistence at the default location, `.persist(Some(path))` enables it at
120
+ `path`.
118
121
  - `extensions` — SQLite extensions to load at startup, before any table
119
122
  DDL (enable → load → disable, so SQL `load_extension()` is never
120
123
  exposed). Each entry pairs a shared-library `path` with an optional
@@ -76,10 +76,7 @@ impl Cli {
76
76
  /// → persist at `<path>`.
77
77
  fn apply_persist(&self, mut builder: dirsql::DirSQLBuilder) -> dirsql::DirSQLBuilder {
78
78
  if let Some(path) = &self.persist {
79
- builder = builder.persist(true);
80
- if let Some(path) = path {
81
- builder = builder.persist_path(path);
82
- }
79
+ builder = builder.persist(path.as_ref());
83
80
  }
84
81
  builder
85
82
  }
@@ -932,20 +932,15 @@ impl DirSQLBuilder {
932
932
  self
933
933
  }
934
934
 
935
- /// Enable persistent on-disk storage. When `true`, the SQLite database is
936
- /// written to `<root>/.dirsql/cache.db` (override via
937
- /// [`persist_path`](Self::persist_path)) so subsequent startups only
938
- /// re-parse files that have actually changed. See
939
- /// `docs/howto/persist.md` for the reconcile contract.
940
- pub fn persist(mut self, persist: bool) -> Self {
941
- self.persist = persist;
942
- self
943
- }
944
-
945
- /// Override the location of the persistent cache file. Ignored when
946
- /// [`persist`](Self::persist) is `false`.
947
- pub fn persist_path(mut self, path: impl AsRef<Path>) -> Self {
948
- self.persist_path = Some(path.as_ref().to_path_buf());
935
+ /// Enable persistent on-disk storage. `None` writes the SQLite database to
936
+ /// the default `<root>/.dirsql/cache.db`; `Some(path)` writes it to `path`.
937
+ /// Either way, subsequent startups only re-parse files that have actually
938
+ /// changed. See `docs/howto/persist.md` for the reconcile contract.
939
+ pub fn persist(mut self, path: Option<impl AsRef<Path>>) -> Self {
940
+ self.persist = true;
941
+ if let Some(path) = path {
942
+ self.persist_path = Some(path.as_ref().to_path_buf());
943
+ }
949
944
  self
950
945
  }
951
946
 
@@ -2651,8 +2646,7 @@ mod internal_tests {
2651
2646
  .ignore(["skip/**"])
2652
2647
  .extensions(Vec::<Extension>::new())
2653
2648
  .suppress_config_extensions(true)
2654
- .persist(true)
2655
- .persist_path(&cache)
2649
+ .persist(Some(&cache))
2656
2650
  .poll_interval(Duration::from_millis(50))
2657
2651
  .build()
2658
2652
  .unwrap();
@@ -2661,6 +2655,38 @@ mod internal_tests {
2661
2655
  assert_eq!(db.inner.poll_interval, Duration::from_millis(50));
2662
2656
  }
2663
2657
 
2658
+ #[test]
2659
+ fn persist_none_enables_default_path() {
2660
+ let resolved = DirSQL::builder()
2661
+ .root("/tmp/x")
2662
+ .persist(None::<&Path>)
2663
+ .resolve()
2664
+ .unwrap();
2665
+ assert!(resolved.persist);
2666
+ assert!(resolved.persist_path.is_none());
2667
+ }
2668
+
2669
+ #[test]
2670
+ fn persist_some_enables_explicit_path() {
2671
+ let resolved = DirSQL::builder()
2672
+ .root("/tmp/x")
2673
+ .persist(Some("/tmp/x/custom.db"))
2674
+ .resolve()
2675
+ .unwrap();
2676
+ assert!(resolved.persist);
2677
+ assert_eq!(
2678
+ resolved.persist_path,
2679
+ Some(PathBuf::from("/tmp/x/custom.db"))
2680
+ );
2681
+ }
2682
+
2683
+ #[test]
2684
+ fn persist_unset_leaves_persistence_off() {
2685
+ let resolved = DirSQL::builder().root("/tmp/x").resolve().unwrap();
2686
+ assert!(!resolved.persist);
2687
+ assert!(resolved.persist_path.is_none());
2688
+ }
2689
+
2664
2690
  /// A second persist build over the same root+cache finds a compatible
2665
2691
  /// meta block and reuses the cache instead of a cold rebuild.
2666
2692
  #[test]
@@ -2674,8 +2700,7 @@ mod internal_tests {
2674
2700
  "*.txt",
2675
2701
  |_| vec![],
2676
2702
  )])
2677
- .persist(true)
2678
- .persist_path(&cache)
2703
+ .persist(Some(&cache))
2679
2704
  .build()
2680
2705
  .unwrap();
2681
2706
  drop(first);
@@ -2686,8 +2711,7 @@ mod internal_tests {
2686
2711
  "*.txt",
2687
2712
  |_| vec![],
2688
2713
  )])
2689
- .persist(true)
2690
- .persist_path(&cache)
2714
+ .persist(Some(&cache))
2691
2715
  .build()
2692
2716
  .unwrap();
2693
2717
  assert!(second.query("SELECT * FROM t").is_ok());
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes