Coverage for src/local_deep_research/settings/env_definitions/db_config.py: 100%
2 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-03 23:15 +0000
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-03 23:15 +0000
1"""
2Database configuration environment settings.
4These settings control SQLite and SQLCipher database parameters
5that must be set before opening the database connection.
7Each setting has a canonical env var name (auto-generated from the key,
8e.g. db_config.kdf_iterations -> LDR_DB_CONFIG_KDF_ITERATIONS) and an
9optional deprecated alias for backward compatibility with older env var
10names (e.g. LDR_DB_KDF_ITERATIONS).
11"""
13from ..env_settings import (
14 IntegerSetting,
15 EnumSetting,
16)
19# Database configuration settings
20DB_CONFIG_SETTINGS = [
21 # Performance settings
22 IntegerSetting(
23 key="db_config.cache_size_mb",
24 description="SQLite cache size in MB",
25 min_value=1,
26 max_value=10000,
27 default=64,
28 deprecated_env_var="LDR_DB_CACHE_SIZE_MB",
29 ),
30 EnumSetting(
31 key="db_config.journal_mode",
32 description="SQLite journal mode",
33 allowed_values={
34 "DELETE",
35 "TRUNCATE",
36 "PERSIST",
37 "MEMORY",
38 "WAL",
39 "OFF",
40 },
41 default="WAL",
42 case_sensitive=False,
43 deprecated_env_var="LDR_DB_JOURNAL_MODE",
44 ),
45 EnumSetting(
46 key="db_config.synchronous",
47 description="SQLite synchronous mode",
48 allowed_values={"OFF", "NORMAL", "FULL", "EXTRA"},
49 default="NORMAL",
50 case_sensitive=False,
51 deprecated_env_var="LDR_DB_SYNCHRONOUS",
52 ),
53 IntegerSetting(
54 key="db_config.wal_autocheckpoint",
55 description="WAL frames threshold for automatic PASSIVE checkpoint at commit. Lower = smaller WAL high-water-mark, faster recovery on open, slightly more frequent fsyncs.",
56 min_value=10,
57 max_value=10000,
58 default=250,
59 ),
60 # Storage settings
61 IntegerSetting(
62 key="db_config.page_size",
63 description="SQLite page size (must be power of 2)",
64 min_value=512,
65 max_value=65536,
66 default=16384,
67 deprecated_env_var="LDR_DB_PAGE_SIZE",
68 ),
69 # Encryption settings
70 IntegerSetting(
71 key="db_config.kdf_iterations",
72 description="Number of KDF iterations for key derivation",
73 min_value=1000,
74 max_value=1000000,
75 default=256000,
76 deprecated_env_var="LDR_DB_KDF_ITERATIONS",
77 ),
78 EnumSetting(
79 key="db_config.kdf_algorithm",
80 description="Key derivation function algorithm",
81 allowed_values={
82 "PBKDF2_HMAC_SHA512",
83 "PBKDF2_HMAC_SHA256",
84 "PBKDF2_HMAC_SHA1", # DevSkim: ignore DS126858 — backwards compat for existing databases; default is SHA512
85 },
86 default="PBKDF2_HMAC_SHA512",
87 case_sensitive=False,
88 deprecated_env_var="LDR_DB_KDF_ALGORITHM",
89 ),
90 EnumSetting(
91 key="db_config.hmac_algorithm",
92 description="HMAC algorithm for database integrity",
93 allowed_values={
94 "HMAC_SHA512",
95 "HMAC_SHA256",
96 "HMAC_SHA1", # DevSkim: ignore DS126858 — backwards compat for existing databases; default is SHA512
97 },
98 default="HMAC_SHA512",
99 case_sensitive=False,
100 deprecated_env_var="LDR_DB_HMAC_ALGORITHM",
101 ),
102 # Runtime security settings
103 EnumSetting(
104 key="db_config.cipher_memory_security",
105 description="SQLCipher memory security (ON=clear memory after use + mlock, OFF=faster). ON requires IPC_LOCK in Docker.",
106 allowed_values={"ON", "OFF"},
107 default="OFF",
108 case_sensitive=False,
109 ),
110]