217 lines
6.5 KiB
C#
217 lines
6.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq.Expressions;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
using xDataService.Configuration;
|
|
using xFileService.Hubs;
|
|
using xFileService.Interfaces.Entities;
|
|
using xFileService.Models.Dtos;
|
|
using xFileService.Models.Entities;
|
|
using xIdentityModels.Models;
|
|
using xIdentityService.Interfaces;
|
|
using xModels.Dtos;
|
|
using xStorageService.Interfaces;
|
|
using XFileDto = xFileService.Models.Dtos.XFileDto;
|
|
|
|
namespace xFileService.Interfaces
|
|
{
|
|
public interface IXFileProvider
|
|
{
|
|
//
|
|
#region Props ...
|
|
IHubContext<XFileEntityHub> Hub { get; }
|
|
IXFileRepository FileRepository { get; }
|
|
IXStorageProvider StorageProvider { get; }
|
|
IXIdentityProvider IdentityProvider { get; }
|
|
XDataServiceConfiguration DataSercviceConfiguration { get; }
|
|
#endregion
|
|
|
|
//
|
|
#region Tools ...
|
|
/// <summary>
|
|
/// Stream Specified File ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
Task<FileStreamResult> Stream(Guid id);
|
|
|
|
/// <summary>
|
|
/// Stream Specified File ...
|
|
/// </summary>
|
|
/// <param name="fileName"></param>
|
|
/// <returns></returns>
|
|
Task<FileStreamResult> Stream(string fileName);
|
|
|
|
/// <summary>
|
|
/// Download Specified File ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
Task<PhysicalFileResult> Download(Guid id);
|
|
|
|
/// <summary>
|
|
/// Download Specified File ...
|
|
/// </summary>
|
|
/// <param name="fileName"></param>
|
|
/// <returns></returns>
|
|
Task<PhysicalFileResult> Download(string fileName);
|
|
|
|
/// <summary>
|
|
/// Upload Files ...
|
|
/// </summary>
|
|
/// <param name="files"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XFileDto>> Upload(
|
|
IFormFileCollection files,
|
|
XUserClaimsInfoDto userInfo = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Remove Specified Files ...
|
|
/// </summary>
|
|
/// <param name="ids"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<Guid>> Remove(
|
|
string ids,
|
|
XUserClaimsInfoDto userInfo = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// Retrieve Specified File Streaming Info ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
Task<XFileStreamDescriptorDto> GetFileDescriptor(Guid id);
|
|
|
|
/// <summary>
|
|
/// Retrieve Specified File Streaming Info ...
|
|
/// </summary>
|
|
/// <param name="fileName"></param>
|
|
/// <returns></returns>
|
|
Task<XFileStreamDescriptorDto> GetFileDescriptor(string fileName);
|
|
#endregion
|
|
|
|
//
|
|
#region Data Model ...
|
|
/// <summary>
|
|
/// Get Specified File Model ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <param name="ignoreSoftDeleteds"></param>
|
|
/// <returns></returns>
|
|
Task<XFileDto> Get(
|
|
Guid id
|
|
);
|
|
|
|
/// <summary>
|
|
/// Get All Exists File Models ...
|
|
/// </summary>
|
|
/// <param name="ignoreSoftDeleteds"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XFileDto>> GetAll();
|
|
|
|
/// <summary>
|
|
/// find an Entity by providing a Conditional Expression ...
|
|
/// </summary>
|
|
/// <param name="whereClause"></param>
|
|
Task<XFileDto> FindOne(Expression<Func<XFile, bool>> whereClause);
|
|
|
|
/// <summary>
|
|
/// find a collection of Entities by proving a Conditional Expression ...
|
|
/// </summary>
|
|
/// <param name="whereClause"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XFileDto>> FindMany(
|
|
Expression<Func<XFile, bool>> whereClause
|
|
);
|
|
|
|
/// <summary>
|
|
/// retrieve Entities based on XQuery Pagination structure ...
|
|
/// </summary>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XFileDto>> Query(
|
|
XQuery query
|
|
);
|
|
|
|
/// <summary>
|
|
/// retrieve Entities based on XQuery Pagination structure by providing a Conditional Expression ...
|
|
/// </summary>
|
|
/// <param name="whereClause"></param>
|
|
/// <param name="query"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XFileDto>> ConditionalQuery(
|
|
Expression<Func<XFile, bool>> whereClause,
|
|
XQuery query
|
|
);
|
|
|
|
/// <summary>
|
|
/// Update an Entity values ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <param name="item"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <returns></returns>
|
|
Task<XFileDto> Update(
|
|
Guid id,
|
|
XFileDto item,
|
|
XUserClaimsInfoDto userInfo = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// remove an Entity ...
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
/// <param name="userInfo"></param>
|
|
/// <returns></returns>
|
|
Task<XFileDto> Remove(
|
|
Guid id,
|
|
XUserClaimsInfoDto userInfo = null
|
|
);
|
|
|
|
/// <summary>
|
|
/// count all exists Entities ...
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
Task<int> Count();
|
|
|
|
/// <summary>
|
|
/// Check an Entity exists or not ...
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
Task<bool> IsExists(
|
|
Guid id
|
|
);
|
|
#endregion
|
|
|
|
//
|
|
#region Helpers ...
|
|
/// <summary>
|
|
/// Converts an Entity to Dto ...
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
Task<XFileDto> ToXFileDto(XFile model);
|
|
|
|
/// <summary>
|
|
/// Convert a List of Entities to Dto ...
|
|
/// </summary>
|
|
/// <param name="list"></param>
|
|
/// <returns></returns>
|
|
Task<IEnumerable<XFileDto>> ToXDtoList(IEnumerable<XFile> list);
|
|
|
|
/// <summary>
|
|
/// Converts an Entity Query Result to Dto ...
|
|
/// </summary>
|
|
/// <param name="queryResult"></param>
|
|
/// <returns></returns>
|
|
Task<XQueryResult<XFileDto>> ToXDtoQueryResult(XQueryResult<XFile> queryResult);
|
|
#endregion
|
|
}
|
|
} |