Skip to content

Commit 8b696d4

Browse files
committed
Add time based placeholders for scan/visit templates
{ts_hms} for HourMinuteSecond, eg 142117 {ts_ymd} for YearMonthDay, eg 20250221
1 parent 6bfa8c2 commit 8b696d4

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/graphql/mod.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use axum::{Extension, Json, Router};
3333
use axum_extra::headers::authorization::Bearer;
3434
use axum_extra::headers::Authorization;
3535
use axum_extra::TypedHeader;
36-
use chrono::{Datelike, Local};
36+
use chrono::{DateTime, Datelike, Local};
3737
use derive_more::{Display, Error};
3838
use tokio::net::TcpListener;
3939
use tracing::{debug, info, instrument, trace, warn};
@@ -145,6 +145,7 @@ struct DirectoryPath {
145145
struct ScanPaths {
146146
directory: DirectoryPath,
147147
subdirectory: Subdirectory,
148+
timestamp: DateTime<Local>,
148149
}
149150

150151
/// GraphQL type to provide current configuration for an instrument
@@ -308,6 +309,8 @@ impl FieldSource<ScanField> for ScanPaths {
308309
ScanField::Subdirectory => self.subdirectory.to_string().into(),
309310
ScanField::ScanNumber => self.directory.info.scan_number().to_string().into(),
310311
ScanField::Directory(dir) => self.directory.resolve(dir),
312+
ScanField::YearMonthDay => self.timestamp.format("%Y%m%d").to_string().into(),
313+
ScanField::HourMinuteSecond => self.timestamp.format("%H%M%S").to_string().into(),
311314
}
312315
}
313316
}
@@ -425,6 +428,7 @@ impl Mutation {
425428
instrument_session,
426429
info: next_scan,
427430
},
431+
timestamp: Local::now(),
428432
subdirectory: sub.unwrap_or_default(),
429433
})
430434
}

src/paths.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ pub enum ScanField {
3838
Subdirectory,
3939
#[display("scan_number")]
4040
ScanNumber,
41+
#[display("ts_ymd")]
42+
YearMonthDay,
43+
#[display("ts_hms")]
44+
HourMinuteSecond,
4145
#[display("{_0}")]
4246
Directory(DirectoryField),
4347
}
@@ -73,6 +77,8 @@ impl TryFrom<String> for ScanField {
7377
match value.as_str() {
7478
"scan_number" => Ok(ScanField::ScanNumber),
7579
"subdirectory" => Ok(ScanField::Subdirectory),
80+
"ts_hms" => Ok(ScanField::HourMinuteSecond),
81+
"ts_ymd" => Ok(ScanField::YearMonthDay),
7682
_ => Ok(ScanField::Directory(DirectoryField::try_from(value)?)),
7783
}
7884
}

0 commit comments

Comments
 (0)