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

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 # 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]