Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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));
        }
Exemple #4
0
 /// <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));
 }