/ GUNRPG.Infrastructure / Persistence / StorageOptions.cs
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  }