feat(directory): init IQueryDirectory

This commit is contained in:
Collin M. Barrett 2020-08-22 12:31:13 -05:00
parent 2a5623494b
commit c7593e60e4
4 changed files with 67 additions and 0 deletions

View file

@ -8,4 +8,8 @@
<Folder Include="Persistence\Queries\Mappings\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="3.1.4" />
</ItemGroup>
</Project>

View file

@ -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<FilterList> FilterLists { get; set; }
public DbSet<Language> Languages { get; set; }
public DbSet<License> Licenses { get; set; }
public DbSet<Maintainer> Maintainers { get; set; }
public DbSet<Software> Software { get; set; }
public DbSet<Syntax> Syntaxes { get; set; }
public DbSet<Tag> Tags { get; set; }
}
}

View file

@ -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<FilterList> FilterLists => _db.FilterLists.AsNoTracking();
public IQueryable<Language> Languages => _db.Languages.AsNoTracking();
public IQueryable<License> Licenses => _db.Licenses.AsNoTracking();
public IQueryable<Maintainer> Maintainers => _db.Maintainers.AsNoTracking();
public IQueryable<Software> Software => _db.Software.AsNoTracking();
public IQueryable<Syntax> Syntaxes => _db.Syntaxes.AsNoTracking();
public IQueryable<Tag> Tags => _db.Tags.AsNoTracking();
}
}

View file

@ -0,0 +1,16 @@
using System.Linq;
using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities;
namespace FilterLists.Directory.Infrastructure.Persistence.Queries
{
public interface IQueryDirectory
{
IQueryable<FilterList> FilterLists { get; }
IQueryable<Language> Languages { get; }
IQueryable<License> Licenses { get; }
IQueryable<Maintainer> Maintainers { get; }
IQueryable<Software> Software { get; }
IQueryable<Syntax> Syntaxes { get; }
IQueryable<Tag> Tags { get; }
}
}