Абстракции для парсинга файлов

This commit is contained in:
Степанов Дмитрий 2024-01-29 14:39:53 +05:00
parent a281bccce1
commit a726602be8
5 changed files with 72 additions and 1 deletions

View File

@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace AsbCloudApp.Data;
/// <summary>
/// Результат парсинга файла
/// </summary>
/// <typeparam name="TDto"></typeparam>
public class ParserResultDto<TDto> : ValidationResultDto<IEnumerable<ValidationResultDto<TDto>>>
where TDto : class, IId
{
}

View File

@ -5,7 +5,7 @@ namespace AsbCloudApp.Data.Trajectory
/// <summary>
/// Базовая географическая траектория
/// </summary>
public abstract class TrajectoryGeoDto
public abstract class TrajectoryGeoDto : IId
{
/// <summary>
/// ИД строки с координатами

View File

@ -0,0 +1,17 @@
namespace AsbCloudApp.Requests.Import;
/// <summary>
/// Параметры парсинга
/// </summary>
public abstract class ParserOptionsRequestBase
{
/// <summary>
/// Id сервиса для парсинга
/// </summary>
public int IdParserService { get; set; }
/// <summary>
/// Название листа в файле Excel
/// </summary>
public string SheetName { get; set; } = null!;
}

View File

@ -0,0 +1,12 @@
namespace AsbCloudApp.Requests.Import;
/// <summary>
/// Параметры парсинга траекторий
/// </summary>
public class TrajectoryParserRequest : ParserOptionsRequestBase
{
/// <summary>
/// Количество строк заголовка
/// </summary>
public int HeaderRowsCount { get; set; }
}

View File

@ -0,0 +1,30 @@
using System.IO;
using AsbCloudApp.Data;
using AsbCloudApp.Requests.Import;
namespace AsbCloudApp.Services;
/// <summary>
/// Сервис парсинга файлов
/// </summary>
/// <typeparam name="TDto"></typeparam>
/// <typeparam name="TOptions"></typeparam>
public interface IParserService<TDto, in TOptions> : IParserService
where TDto : class, IId
where TOptions : ParserOptionsRequestBase
{
/// <summary>
/// Распарсить файл
/// </summary>
/// <param name="file"></param>
/// <param name="options"></param>
/// <returns></returns>
ParserResultDto<TDto> Parse(Stream file, TOptions options);
}
/// <summary>
/// Сервис парсинга файлов
/// </summary>
public interface IParserService
{
}