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