AppSettings.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. using System.Text.Json;
  2. namespace AutorentWinForms;
  3. public static class AppSettings
  4. {
  5. public static string LoadConnectionString()
  6. {
  7. var env = Environment.GetEnvironmentVariable("AUTORENT_CONNECTION_STRING");
  8. if (!string.IsNullOrWhiteSpace(env))
  9. return env;
  10. var file = Path.Combine(AppContext.BaseDirectory, "dbsettings.json");
  11. if (!File.Exists(file))
  12. file = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "dbsettings.json"));
  13. if (!File.Exists(file))
  14. throw new InvalidOperationException("Не найден dbsettings.json и не задана переменная AUTORENT_CONNECTION_STRING.");
  15. var json = File.ReadAllText(file);
  16. var settings = JsonSerializer.Deserialize<DbSettings>(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true });
  17. if (string.IsNullOrWhiteSpace(settings?.ConnectionString))
  18. throw new InvalidOperationException("В dbsettings.json не задана строка ConnectionString.");
  19. return settings.ConnectionString;
  20. }
  21. private sealed class DbSettings
  22. {
  23. public string? ConnectionString { get; set; }
  24. }
  25. }