diff options
author | crupest <crupest@outlook.com> | 2020-06-14 22:18:25 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-06-14 22:18:25 +0800 |
commit | 98f1ec6e27616d292f86cce30223f0a267c35fd3 (patch) | |
tree | 13c609ef7132d5c6791756f8203fc181c161f08e /Timeline/Services/DatabaseBackupService.cs | |
parent | 0b71a0c3d3c8b86c01ea8d56d63ba5a0c6655646 (diff) | |
download | timeline-98f1ec6e27616d292f86cce30223f0a267c35fd3.tar.gz timeline-98f1ec6e27616d292f86cce30223f0a267c35fd3.tar.bz2 timeline-98f1ec6e27616d292f86cce30223f0a267c35fd3.zip |
feat(back): Add backup service and run it when start.
Diffstat (limited to 'Timeline/Services/DatabaseBackupService.cs')
-rw-r--r-- | Timeline/Services/DatabaseBackupService.cs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Timeline/Services/DatabaseBackupService.cs b/Timeline/Services/DatabaseBackupService.cs new file mode 100644 index 00000000..a76b2a0d --- /dev/null +++ b/Timeline/Services/DatabaseBackupService.cs @@ -0,0 +1,35 @@ +using System.Globalization;
+using System.IO;
+
+namespace Timeline.Services
+{
+ public interface IDatabaseBackupService
+ {
+ void BackupNow();
+ }
+
+ public class DatabaseBackupService : IDatabaseBackupService
+ {
+ private readonly IPathProvider _pathProvider;
+ private readonly IClock _clock;
+
+ public DatabaseBackupService(IPathProvider pathProvider, IClock clock)
+ {
+ _pathProvider = pathProvider;
+ _clock = clock;
+ }
+
+ public void BackupNow()
+ {
+ var databasePath = _pathProvider.GetDatabaseFilePath();
+ if (File.Exists(databasePath))
+ {
+ var backupDirPath = _pathProvider.GetDatabaseBackupDirectory();
+ Directory.CreateDirectory(backupDirPath);
+ var fileName = _clock.GetCurrentTime().ToString("yyyy-MM-ddTHH-mm-ss", CultureInfo.InvariantCulture);
+ var path = Path.Combine(backupDirPath, fileName);
+ File.Copy(databasePath, path);
+ }
+ }
+ }
+}
|