using Microsoft.Extensions.Configuration; using System.IO; using Timeline.Configs; namespace Timeline.Services { public interface IPathProvider { public string GetWorkingDirectory(); public string GetDatabaseFilePath(); public string GetDatabaseBackupDirectory(); } public class PathProvider : IPathProvider { private readonly IConfiguration _configuration; private readonly string _workingDirectory; public PathProvider(IConfiguration configuration) { _configuration = configuration; _workingDirectory = configuration.GetValue(ApplicationConfiguration.WorkDirKey) ?? ApplicationConfiguration.DefaultWorkDir; } public string GetWorkingDirectory() { return _workingDirectory; } public string GetDatabaseFilePath() { return Path.Combine(_workingDirectory, ApplicationConfiguration.DatabaseFileName); } public string GetDatabaseBackupDirectory() { return Path.Combine(_workingDirectory, ApplicationConfiguration.DatabaseBackupDirectoryName); } } }