90 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using gehGassiApp.Domain.Common;
namespace gehGassiApp.Core.Interfaces.Synchronization
{
/// <summary>
/// Schnittstellenbeschreibung für einen Service der die Verwaltung von Push Synch-Infos ermöglicht.
/// </summary>
public interface ISyncInfoPushService : IService<SyncInfoPush>
{
/// <summary>
/// Hinzufügen eines Push-Deltas
/// </summary>
/// <typeparam name="T">Typ des Objekts</typeparam>
/// <param name="table">Name der Tabelle = nameof(objekt)</param>
/// <param name="key">ID des Objektes als string</param>
/// <param name="operation">Operationstyp. Hinzufügen, Aktualisieren, Löschen</param>
/// <param name="value">Objekt das Serialisiert werden soll</param>
/// <returns>SyncInfoPush</returns>
Task<SyncInfoPush> AddAsync<T>(string table, string key, SyncOperation operation, T value);
/// <summary>
/// Gibt eine Liste aller offenen SyncInfoPushs einer Tabelle zurück
/// </summary>
/// <param name="table">Tabelle = nameof(objcet)</param>
/// <param name="noTracking">Gibt an ob NoTRacking verwendet werden soll. Es werden keine Entitäten im EF-Speicher gehalten</param>
/// <returns>Liste von SyncInfoPushs</returns>
Task<List<SyncInfoPush>> GetAllAsync(string table, bool noTracking = true);
/// <summary>
/// Entfernen einer SyncInfoPush
/// </summary>
/// <param name="id">Eindeutige Id</param>
/// <returns>Task</returns>
Task RemoveAsync(Guid id);
/// <summary>
/// Entfernen einer SyncInfoPush
/// </summary>
/// <param name="item">SyncInfoPush</param>
/// <returns>Task</returns>
Task RemoveAsync(SyncInfoPush item);
/// <summary>
/// Löschen aller Sync-Infos
/// </summary>
/// <returns>Task</returns>
Task RemoveAllAsync();
/// <summary>
/// Löschen aller Sync-Infos
/// </summary>
/// <param name="before">Datum vor welchem alle Sync-Infos gelöscht werden sollen</param>
/// <returns>Task</returns>
Task RemoveAllAsync(DateTimeOffset before);
/// <summary>
/// Löschen aller Sync-Infos einer Tabelle
/// </summary>
/// <param name="table">Tabelle = nameof(objcet)</param>
/// <returns>Task</returns>
Task RemoveAllAsync(string table);
/// <summary>
/// Löschen aller Sync-Infos einer Tabelle
/// </summary>
/// <param name="table">Tabelle = nameof(objcet)</param>
/// <param name="before">Datum vor welchem alle Sync-Infos gelöscht werden sollen</param>
/// <returns>Task</returns>
Task RemoveAllAsync(string table, DateTimeOffset before);
/// <summary>
/// Gibt zurück ob offene Push-Infos anliegen
/// </summary>
/// <returns>Anzahl offene Push-Infos</returns>
Task<int> HasOpenAsync();
/// <summary>
/// Gibt zurück ob für eine Tabelle offene Push-Infos anliegen
/// </summary>
/// <param name="table">Tabelle = nameof(objcet)</param>
/// <returns>Anzahl offene Push-Infos</returns>
Task<int> HasOpenAsync(string table);
}
}