From c7593e60e4eeaafc596e9b4c5cbbd588a5476bd1 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sat, 22 Aug 2020 12:31:13 -0500 Subject: [PATCH] =?UTF-8?q?feat(directory):=20=E2=9C=A8=20init=20IQueryDir?= =?UTF-8?q?ectory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ilterLists.Directory.Infrastructure.csproj | 4 +++ .../Queries/DirectoryQueryDbContext.cs | 16 ++++++++++ .../Queries/DirectoryQueryFacade.cs | 31 +++++++++++++++++++ .../Persistence/Queries/IQueryDirectory.cs | 16 ++++++++++ 4 files changed, 67 insertions(+) create mode 100644 directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryDbContext.cs create mode 100644 directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/DirectoryQueryFacade.cs create mode 100644 directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/IQueryDirectory.cs 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