diff --git a/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj b/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj index a02de8e18..963def9e5 100644 --- a/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj +++ b/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj @@ -8,4 +8,8 @@ + + + + diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryDbContext.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryDbContext.cs new file mode 100644 index 000000000..350f064d5 --- /dev/null +++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryDbContext.cs @@ -0,0 +1,16 @@ +using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; +using Microsoft.EntityFrameworkCore; + +namespace FilterLists.Directory.Infrastructure.Persistence.Queries +{ + internal class DirectoryQueryDbContext : DbContext + { + public DbSet FilterLists { get; set; } + public DbSet Languages { get; set; } + public DbSet Licenses { get; set; } + public DbSet Maintainers { get; set; } + public DbSet Software { get; set; } + public DbSet Syntaxes { get; set; } + public DbSet Tags { get; set; } + } +} \ No newline at end of file diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryFacade.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryFacade.cs new file mode 100644 index 000000000..fcfc3d9b2 --- /dev/null +++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryFacade.cs @@ -0,0 +1,31 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; +using Microsoft.EntityFrameworkCore; + +namespace FilterLists.Directory.Infrastructure.Persistence.Queries +{ + internal class DirectoryQueryFacade : IQueryDirectory, IAsyncDisposable + { + private readonly DirectoryQueryDbContext _db; + + public DirectoryQueryFacade() + { + _db = new DirectoryQueryDbContext(); + } + + public async ValueTask DisposeAsync() + { + await _db.DisposeAsync(); + } + + public IQueryable FilterLists => _db.FilterLists.AsNoTracking(); + public IQueryable Languages => _db.Languages.AsNoTracking(); + public IQueryable Licenses => _db.Licenses.AsNoTracking(); + public IQueryable Maintainers => _db.Maintainers.AsNoTracking(); + public IQueryable Software => _db.Software.AsNoTracking(); + public IQueryable Syntaxes => _db.Syntaxes.AsNoTracking(); + public IQueryable Tags => _db.Tags.AsNoTracking(); + } +} \ No newline at end of file diff --git a/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/IQueryDirectory.cs b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/IQueryDirectory.cs new file mode 100644 index 000000000..c2e2bc407 --- /dev/null +++ b/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/IQueryDirectory.cs @@ -0,0 +1,16 @@ +using System.Linq; +using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; + +namespace FilterLists.Directory.Infrastructure.Persistence.Queries +{ + public interface IQueryDirectory + { + IQueryable FilterLists { get; } + IQueryable Languages { get; } + IQueryable Licenses { get; } + IQueryable Maintainers { get; } + IQueryable Software { get; } + IQueryable Syntaxes { get; } + IQueryable Tags { get; } + } +} \ No newline at end of file