IMapEdgeRepository.cs 1.47 KB
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Rcs.Domain.Entities;

namespace Rcs.Domain.Repositories
{
    /// <summary>
    /// 地图边仓储接口
    /// </summary>
    public interface IMapEdgeRepository : IRepository<MapEdge>
    {
        /// <summary>
        /// 根据地图ID获取所有边
        /// </summary>
        Task<IEnumerable<MapEdge>> GetByMapIdAsync(
            Guid mapId,
            CancellationToken cancellationToken = default);

        /// <summary>
        /// 根据地图ID和边编码获取边
        /// </summary>
        Task<MapEdge?> GetByMapIdAndEdgeCodeAsync(
            Guid mapId,
            string edgeCode,
            CancellationToken cancellationToken = default);

        /// <summary>
        /// 根据起点节点获取所有边
        /// </summary>
        Task<IEnumerable<MapEdge>> GetByFromNodeAsync(
            Guid fromNode,
            CancellationToken cancellationToken = default);

        /// <summary>
        /// 根据终点节点获取所有边
        /// </summary>
        Task<IEnumerable<MapEdge>> GetByToNodeAsync(
            Guid toNode,
            CancellationToken cancellationToken = default);

        /// <summary>
        /// 根据起点和终点节点获取边
        /// </summary>
        Task<IEnumerable<MapEdge>> GetByFromAndToNodeAsync(
            Guid fromNode,
            Guid toNode,
            CancellationToken cancellationToken = default);

    }
}