Files
xPushService/Interfaces/IXPushConnectionStore.cs
T
2024-01-25 04:47:14 +03:30

108 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using xModels.Dtos;
using xModels.Interfaces;
using xPushService.Models;
namespace xPushService.Interfaces {
public interface IXPushConnectionStore : IXBaseStore<XPushConnectionDto, string> {
//
#region Custom ...
/// <summary>
/// retrieve specific connection by it's Id ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<XPushConnectionDto> GetByConnectionId (string connectionId);
/// <summary>
/// retrieve specific user's connections ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<IEnumerable<XPushConnectionDto>> GetByUserName (string userName);
/// <summary>
/// retrieve specific user's connected device connection
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<XPushConnectionDto> GetByUserDevice (string userName, XDeviceDto device);
/// <summary>
/// check a connection exists or not by it's id ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<bool> IsExistsConnectionId (string connectionId);
/// <summary>
/// check specific user connected or not ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<bool> IsExistsUser (string userName);
/// <summary>
/// retrieve specific user's connected devices ...
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<IEnumerable<XDeviceDto>> GetUserDevices (string userName);
/// <summary>
/// remove specific connection by it's id ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<bool> RemoveByConnectionId (string connectionId);
/// <summary>
/// remove specified user's connected device connection ...
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<bool> RemoveByUserDevice (string userName, XDeviceDto device);
/// <summary>
/// remove specific user's all connected devices ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<bool> RemoveUser (string userName);
/// <summary>
/// Get specific connections last seen ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<DateTime> GetLastSeenByConnectionId (string connectionId);
/// <summary>
/// get specific user's last seen ...
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
Task<DateTime> GetLastSeenByUserName (string userName);
/// <summary>
/// get specific user's connected device last seen ...
/// </summary>
/// <param name="userName"></param>
/// <param name="device"></param>
/// <returns></returns>
Task<DateTime> GetLastSeenByUserDevice (string userName, XDeviceDto device);
/// <summary>
/// Update Connection last seen ...
/// </summary>
/// <param name="connectionId"></param>
/// <returns></returns>
Task<bool> UpdateLastSeen(string connectionId);
#endregion
}
}