Coverage for src / local_deep_research / settings / env_definitions / db_config.py: 100%
2 statements
« prev ^ index » next coverage.py v7.13.4, created at 2026-02-25 01:07 +0000
« prev ^ index » next coverage.py v7.13.4, created at 2026-02-25 01:07 +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 # Storage settings
54 IntegerSetting(
55 key="db_config.page_size",
56 description="SQLite page size (must be power of 2)",
57 min_value=512,
58 max_value=65536,
59 default=16384,
60 deprecated_env_var="LDR_DB_PAGE_SIZE",
61 ),
62 # Encryption settings
63 IntegerSetting(
64 key="db_config.kdf_iterations",
65 description="Number of KDF iterations for key derivation",
66 min_value=1000,
67 max_value=1000000,
68 default=256000,
69 deprecated_env_var="LDR_DB_KDF_ITERATIONS",
70 ),
71 EnumSetting(
72 key="db_config.kdf_algorithm",
73 description="Key derivation function algorithm",
74 allowed_values={
75 "PBKDF2_HMAC_SHA512",
76 "PBKDF2_HMAC_SHA256",
77 "PBKDF2_HMAC_SHA1", # DevSkim: ignore DS126858 — backwards compat for existing databases; default is SHA512
78 },
79 default="PBKDF2_HMAC_SHA512",
80 case_sensitive=False,
81 deprecated_env_var="LDR_DB_KDF_ALGORITHM",
82 ),
83 EnumSetting(
84 key="db_config.hmac_algorithm",
85 description="HMAC algorithm for database integrity",
86 allowed_values={
87 "HMAC_SHA512",
88 "HMAC_SHA256",
89 "HMAC_SHA1", # DevSkim: ignore DS126858 — backwards compat for existing databases; default is SHA512
90 },
91 default="HMAC_SHA512",
92 case_sensitive=False,
93 deprecated_env_var="LDR_DB_HMAC_ALGORITHM",
94 ),
95 # Runtime security settings
96 EnumSetting(
97 key="db_config.cipher_memory_security",
98 description="SQLCipher memory security (ON=clear memory after use + mlock, OFF=faster). ON requires IPC_LOCK in Docker.",
99 allowed_values={"ON", "OFF"},
100 default="OFF",
101 case_sensitive=False,
102 ),
103]