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

1""" 

2Database configuration environment settings. 

3 

4These settings control SQLite and SQLCipher database parameters 

5that must be set before opening the database connection. 

6 

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""" 

12 

13from ..env_settings import ( 

14 IntegerSetting, 

15 EnumSetting, 

16) 

17 

18 

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]