/// <summary> /// Saves or updates the current snapshot for a given aggregate /// </summary> /// <typeparam name="T">Type of snapshot detail</typeparam> /// <param name="snapshot">Snapshot instance</param> public void SaveSnapshot <T>(Snapshot <T> snapshot) { var snapshotDetail = new SnapshotDetail { AggregateRootId = snapshot.AggregateRootId, Version = snapshot.Version, SnapshotData = JsonConvert.SerializeObject(snapshot.Data, SerializerSettings) }; GetRepository().InsertSnapshot(snapshotDetail); }
/// <summary> /// Saves or updates the current snapshot for a given aggregate /// </summary> /// <typeparam name="T">Type of snapshot detail</typeparam> /// <param name="snapshot">Snapshot instance</param> public void SaveSnapshot <T>(Snapshot <T> snapshot) { var snapshotDetail = new SnapshotDetail { AggregateRootId = snapshot.AggregateRootId, Version = snapshot.Version, SnapshotData = snapshot.Data }; GetRepository().InsertSnapshot(snapshotDetail); }
/// <summary> /// Saves a snapshot to a given file /// </summary> /// <typeparam name="T">Type of snapshot</typeparam> /// <param name="snapshot">Snapshot instance</param> /// <param name="fileName">File name to create or overwrite</param> public void SaveSnapshotInstance <T>(Snapshot <T> snapshot, string fileName) { var aggregateRootDirectory = Path.Combine(FileUtility.GetSnapshotDirectory(), snapshot.AggregateRootId.ToString()); if (!Directory.Exists(aggregateRootDirectory)) { Directory.CreateDirectory(aggregateRootDirectory); } var snapshotData = new SnapshotDetail { AggregateRootId = snapshot.AggregateRootId, Version = snapshot.Version, Data = snapshot.Data }; var filePath = Path.Combine(aggregateRootDirectory, fileName); File.WriteAllText(filePath, GetSnapshotText(snapshotData)); }
/// <summary> /// Gets the text to save as the file's contents /// </summary> /// <param name="snapshotData">Snapshot details</param> /// <returns>Text representation of the snapshot details</returns> public abstract string GetSnapshotText(SnapshotDetail snapshotData);
/// <summary> /// Gets the text to save as the file's contents /// </summary> /// <param name="snapshotData">Snapshot details</param> /// <returns>Text representation of the snapshot details</returns> public override string GetSnapshotText(SnapshotDetail snapshotData) { return(JsonConvert.SerializeObject(snapshotData, SerializerSettings)); }