summaryrefslogtreecommitdiffstats
path: root/crates/common/clock/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/common/clock/src/lib.rs')
-rw-r--r--crates/common/clock/src/lib.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/crates/common/clock/src/lib.rs b/crates/common/clock/src/lib.rs
new file mode 100644
index 00000000..c110e240
--- /dev/null
+++ b/crates/common/clock/src/lib.rs
@@ -0,0 +1,19 @@
+use chrono::{DateTime, FixedOffset, Local};
+use mockall::automock;
+
+pub type Timestamp = DateTime<FixedOffset>;
+
+#[automock]
+pub trait Clock: Sync + Send + 'static {
+ fn now(&self) -> Timestamp;
+}
+
+#[derive(Clone)]
+pub struct WallClock;
+
+impl Clock for WallClock {
+ fn now(&self) -> Timestamp {
+ let local_time_now = Local::now();
+ local_time_now.with_timezone(local_time_now.offset())
+ }
+}