82 lines
2.4 KiB
C#
82 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace gehGassiApp.Core.Interfaces.Synchronization
|
|
{
|
|
/// <summary>
|
|
/// Schnittstellenbeschreibung für einen Service der Push- und Pull unterstützt
|
|
/// </summary>
|
|
public interface ISyncPushPullService<T> where T : class
|
|
{
|
|
/// <summary>
|
|
/// Holen der Daten vom lokalen Speicher die noch nicht synchronisiert wurden und senden an den Server
|
|
/// </summary>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Task</returns>
|
|
Task<SyncResult<T>> PushAsync(string accessToken, CancellationToken token);
|
|
|
|
/// <summary>
|
|
/// Holen der letzten Daten vom Server und Synchronisieren mit den lokalen Daten
|
|
/// </summary>
|
|
/// <param name="language">Sprache</param>
|
|
/// <param name="accessToken">Aktuelles Accesstoken</param>
|
|
/// <param name="token">CancellationToken</param>
|
|
/// <returns>Task</returns>
|
|
Task<SyncResult<T>> PullAsync(string language, string accessToken, CancellationToken token);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ergebnis einer Synchronisierung
|
|
/// </summary>
|
|
/// <typeparam name="T">Typ der Klasse</typeparam>
|
|
public class SyncResult<T> where T : class
|
|
{
|
|
/// <summary>
|
|
/// Hinzugefügte Items
|
|
/// </summary>
|
|
public List<T> Added { get; set; }
|
|
|
|
/// <summary>
|
|
/// Aktualisierte Items
|
|
/// </summary>
|
|
public List<T> Updated { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gelöschte Items
|
|
/// </summary>
|
|
public List<T> Deleted { get; set; }
|
|
|
|
/// <summary>
|
|
/// Wann war das letzte Update?
|
|
/// </summary>
|
|
public DateTimeOffset? LastUpdate { get; set; }
|
|
|
|
/// <summary>
|
|
/// Gibt an ob Änderungen vorliegen
|
|
/// </summary>
|
|
public bool HasChanges
|
|
{
|
|
get
|
|
{
|
|
var changed = Added.Count > 0 || Updated.Count > 0 || Deleted.Count > 0;
|
|
return changed;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Erstellt eine Instanz
|
|
/// </summary>
|
|
public SyncResult()
|
|
{
|
|
Added = new List<T>();
|
|
Updated = new List<T>();
|
|
Deleted = new List<T>();
|
|
LastUpdate = null;
|
|
}
|
|
}
|
|
}
|