1 /**
2 * Copyright © DiamondMVC 2019
3 * License: MIT (https://github.com/DiamondMVC/Diamond/blob/master/LICENSE)
4 * Author: Jacob Jensen (bausshf)
5 */
6 module diamond.security.backup.backupservice;
7
8 import diamond.security.backup.backuppath;
9
10 /// Wrapper around a backup service.
11 abstract class BackupService
12 {
13 private:
14 /// The paths to backup.
15 BackupPath[] _paths;
16 /// The time to wait between backing up.
17 size_t _time;
18
19 protected:
20 /**
21 * Creates a new backup service.
22 * Params:
23 * time = The time to wait between backing up.
24 */
25 this(size_t time)
26 {
27 _time = time;
28 }
29
30 /**
31 * Handler for performing a backup.
32 * Params:
33 * paths = The paths to backup.
34 */
35 abstract void onBackup(const(BackupPath[]) paths);
36
37 public:
38 @property
39 {
40 /// Gets the time to wait between backing up.
41 const(size_t) time() { return _time; }
42 }
43 /**
44 * Adds a path to backup.
45 * Params:
46 * path = The path to backup.
47 */
48 void addPath(BackupPath path)
49 {
50 _paths ~= path;
51 }
52
53 package(diamond):
54 /// Performs the specified backup.
55 void backup()
56 {
57 if (_paths)
58 {
59 onBackup(_paths);
60 }
61 }
62 }