using DataLayer;
using LibationFileManager;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
namespace ApplicationServices
{
public static class DbContexts
{
/// Use for fully functional context, incl. SaveChanges(). For query-only, use the other method
public static LibationContext GetContext()
=> InstanceQueue.WaitToCreateInstance(() =>
{
var context = !string.IsNullOrEmpty(Configuration.Instance.PostgresqlConnectionString)
? LibationContextFactory.CreatePostgres(Configuration.Instance.PostgresqlConnectionString)
: LibationContextFactory.CreateSqlite(SqliteStorage.ConnectionString);
context.Database.Migrate();
return context;
});
/// Use for full library querying. No lazy loading
public static List GetLibrary_Flat_NoTracking(bool includeParents = false)
{
using var context = GetContext();
return context.GetLibrary_Flat_NoTracking(includeParents);
}
}
}