Blog
41 строка · 1.5 Кб
1using Blog.Application.Common.Interfaces.Repositories;
2using Blog.Domain.Entities.Address;
3using Blog.Persistence.Contexts;
4using Microsoft.EntityFrameworkCore;
5
6namespace Blog.Persistence.Repositories;
7
8public sealed class AddressRepository : IAddressRepository
9{
10private readonly AddressesDbContext _dbContext;
11
12public AddressRepository(AddressesDbContext dbContext) =>
13_dbContext = dbContext;
14
15public IQueryable<House> Houses => _dbContext.Houses;
16public IQueryable<AddressElement> AddressElements => _dbContext.AddressElements;
17public IQueryable<AddressHierarchy> Hierarchies => _dbContext.AddressHierarchies;
18
19public async Task<House?> GetHouseAsync(long objectId) =>
20await Houses
21.FirstOrDefaultAsync(house => house.ObjectId == objectId);
22
23public async Task<House?> GetHouseAsync(Guid objectGuid) =>
24await Houses
25.FirstOrDefaultAsync(house => house.ObjectGuid == objectGuid);
26
27public async Task<AddressElement?> GetAddressElementAsync(long objectId) =>
28await AddressElements
29.FirstOrDefaultAsync(address => address.ObjectId == objectId);
30
31public async Task<AddressElement?> GetAddressElementAsync(Guid objectGuid) =>
32await AddressElements
33.FirstOrDefaultAsync(address => address.ObjectGuid == objectGuid);
34
35public async Task<string?> GetPathAsync(long objectId)
36{
37var hierarchy = await _dbContext.AddressHierarchies
38.FirstOrDefaultAsync(hierarchy => hierarchy.ObjectId == objectId);
39return hierarchy?.Path;
40}
41}