Skip to content

Commit

Permalink
Merge pull request #33 from microsoft/bilong-dbpath
Browse files Browse the repository at this point in the history
Move database files into VFS AppData path
  • Loading branch information
jschick04 authored May 13, 2023
2 parents 0decc41 + 0b64df9 commit 35168d6
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,25 @@ public class EventProviderDatabaseEventResolver : EventResolverBase, IEventResol
{
private List<EventProviderDbContext> dbContexts = new();

private readonly string dbFolder = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "EventLogExpert", "Databases");
private readonly string _dbFolder;

private Dictionary<string, ProviderDetails?> _providerDetails = new();

private bool disposedValue;

public EventProviderDatabaseEventResolver() : this(ImmutableArray<string>.Empty, s => { }) { }
public EventProviderDatabaseEventResolver(string databaseFolder) : this(databaseFolder, ImmutableArray<string>.Empty, s => { }) { }

public EventProviderDatabaseEventResolver(Action<string> tracer) : this(ImmutableArray<string>.Empty, tracer) { }
public EventProviderDatabaseEventResolver(string databaseFolder, Action<string> tracer) : this(databaseFolder, ImmutableArray<string>.Empty, tracer) { }

public EventProviderDatabaseEventResolver(IEnumerable<string> activeDatabases) : this(activeDatabases, s => { }) { }
public EventProviderDatabaseEventResolver(string databaseFolder, IEnumerable<string> activeDatabases) : this(databaseFolder, activeDatabases, s => { }) { }

public EventProviderDatabaseEventResolver(IEnumerable<string> activeDatabases, Action<string> tracer) : base(tracer)
public EventProviderDatabaseEventResolver(string databaseFolder, IEnumerable<string> activeDatabases, Action<string> tracer) : base(tracer)
{
if (!Directory.Exists(dbFolder))
_dbFolder = databaseFolder;

if (!Directory.Exists(_dbFolder))
{
Directory.CreateDirectory(dbFolder);
Directory.CreateDirectory(_dbFolder);
}

AvailableDatabases = ImmutableArray<string>.Empty;
Expand Down Expand Up @@ -59,7 +61,7 @@ private void LoadDatabases()
context.Dispose();
}

var allDbFiles = SortDatabases(Directory.GetFiles(dbFolder, "*.db"));
var allDbFiles = SortDatabases(Directory.GetFiles(_dbFolder, "*.db"));

AvailableDatabases = allDbFiles.ToImmutableArray();

Expand Down
8 changes: 7 additions & 1 deletion src/EventLogExpert.Test/EventResolverTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,13 @@ public void Test1()
var resolvers = new List<IEventResolver>()
{
new LocalProviderEventResolver(),
new EventProviderDatabaseEventResolver(null, s => { _outputHelper.WriteLine(s); Debug.WriteLine(s); Debug.Flush(); })
new EventProviderDatabaseEventResolver(
"C:\\" /* TODO: Figure out how to specify the VFS database path without a Microsoft.Maui.Storage.FileSystem dependency */,
s => {
_outputHelper.WriteLine(s);
Debug.WriteLine(s);
Debug.Flush();
})
};

EventRecord er;
Expand Down
6 changes: 4 additions & 2 deletions src/EventLogExpert/MauiProgram.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,11 @@ public static MauiApp CreateMauiApp()
options.AddMiddleware<LoggingMiddleware>();
});

if (Utils.HasProviderDatabases())
var databasePath = Path.Join(FileSystem.AppDataDirectory, "Databases");

if (Utils.HasProviderDatabases(databasePath))
{
builder.Services.AddSingleton<IEventResolver>(new EventProviderDatabaseEventResolver(Utils.Trace));
builder.Services.AddSingleton<IEventResolver>(new EventProviderDatabaseEventResolver(databasePath, Utils.Trace));
}
else
{
Expand Down
6 changes: 1 addition & 5 deletions src/EventLogExpert/Utils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,8 @@ internal class Utils
{
private static readonly long _maxLogSize = 10 * 1024 * 1024;

internal static bool HasProviderDatabases()
internal static bool HasProviderDatabases(string path)
{
var path = Path.Join(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
"EventLogExpert",
"Databases");

try
{
return Directory.EnumerateFiles(path, "*.db").Any();
Expand Down

0 comments on commit 35168d6

Please sign in to comment.