sharp-chat/SharpChat/Config/ScopedConfig.cs
flashwave e17aed7c25
Switched to Index brand random Snowflakes instead of SharpIds.
If you were still handling message ids as integers in an environment that can't handle signed 64-bit integers you're going to be having a fun time after this update!
2025-04-25 20:05:57 +00:00

34 lines
1.2 KiB
C#

namespace SharpChat.Config {
public class ScopedConfig(IConfig config, string prefix) : IConfig {
private IConfig Config { get; } = config ?? throw new ArgumentNullException(nameof(config));
private string Prefix { get; } = prefix ?? throw new ArgumentNullException(nameof(prefix));
private string GetName(string name) {
return Prefix + name;
}
public string? ReadValue(string name, string? fallback = null) {
return Config.ReadValue(GetName(name), fallback);
}
public T? ReadValue<T>(string name, T? fallback = default) {
return Config.ReadValue(GetName(name), fallback);
}
public T? SafeReadValue<T>(string name, T? fallback) {
return Config.SafeReadValue(GetName(name), fallback);
}
public IConfig ScopeTo(string prefix) {
return Config.ScopeTo(GetName(prefix));
}
public CachedValue<T> ReadCached<T>(string name, T? fallback = default, TimeSpan? lifetime = null) {
return Config.ReadCached(GetName(name), fallback, lifetime);
}
public void Dispose() {
GC.SuppressFinalize(this);
}
}
}