Blog

Форк
0
/
AddressRepository.cs 
41 строка · 1.5 Кб
1
using Blog.Application.Common.Interfaces.Repositories;
2
using Blog.Domain.Entities.Address;
3
using Blog.Persistence.Contexts;
4
using Microsoft.EntityFrameworkCore;
5

6
namespace Blog.Persistence.Repositories;
7

8
public sealed class AddressRepository : IAddressRepository
9
{
10
    private readonly AddressesDbContext _dbContext;
11

12
    public AddressRepository(AddressesDbContext dbContext) =>
13
        _dbContext = dbContext;
14

15
    public IQueryable<House> Houses => _dbContext.Houses;
16
    public IQueryable<AddressElement> AddressElements => _dbContext.AddressElements;
17
    public IQueryable<AddressHierarchy> Hierarchies => _dbContext.AddressHierarchies;
18

19
    public async Task<House?> GetHouseAsync(long objectId) =>
20
        await Houses
21
            .FirstOrDefaultAsync(house => house.ObjectId == objectId);
22

23
    public async Task<House?> GetHouseAsync(Guid objectGuid) =>
24
        await Houses
25
            .FirstOrDefaultAsync(house => house.ObjectGuid == objectGuid);
26

27
    public async Task<AddressElement?> GetAddressElementAsync(long objectId) =>
28
        await AddressElements
29
            .FirstOrDefaultAsync(address => address.ObjectId == objectId);
30

31
    public async Task<AddressElement?> GetAddressElementAsync(Guid objectGuid) =>
32
        await AddressElements
33
            .FirstOrDefaultAsync(address => address.ObjectGuid == objectGuid);
34

35
    public async Task<string?> GetPathAsync(long objectId)
36
    {
37
        var hierarchy = await _dbContext.AddressHierarchies
38
            .FirstOrDefaultAsync(hierarchy => hierarchy.ObjectId == objectId);
39
        return hierarchy?.Path;
40
    }
41
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.