StorageOptions.cs
1 namespace GUNRPG.Infrastructure.Persistence; 2 3 /// <summary> 4 /// Configuration settings for combat session storage. 5 /// </summary> 6 public sealed class StorageOptions 7 { 8 public const string SectionName = "Storage"; 9 10 /// <summary> 11 /// Storage provider to use: "InMemory" or "LiteDB" 12 /// </summary> 13 public string Provider { get; set; } = "LiteDB"; 14 15 /// <summary> 16 /// Connection string for LiteDB (file path or connection string). 17 /// Defaults to "<UserProfile>/.gunrpg/combat_sessions.db" in the current user's home directory. 18 /// 19 /// For production deployments, consider using an absolute path or a path 20 /// relative to a well-defined location (e.g., /var/lib/gunrpg/combat_sessions.db). 21 /// 22 /// Example values: 23 /// - "~/.gunrpg/combat_sessions.db" (home directory) 24 /// - "/var/lib/gunrpg/combat_sessions.db" (absolute path on Linux) 25 /// - "C:\\ProgramData\\GUNRPG\\combat_sessions.db" (absolute path on Windows) 26 /// </summary> 27 public string LiteDbConnectionString { get; set; } = GetDefaultLiteDbPath(); 28 29 private static string GetDefaultLiteDbPath() 30 { 31 var home = PathHelpers.GetUserHomeDirectory(); 32 if (string.IsNullOrWhiteSpace(home)) 33 return "~/.gunrpg/combat_sessions.db"; 34 35 return Path.Combine(home, ".gunrpg", "combat_sessions.db"); 36 } 37 }