Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions migrations/0002_extension_name.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-- Revert back to fallback_extension name
ALTER TABLE beamline
RENAME COLUMN tracker_file_extension TO fallback_extension;
3 changes: 3 additions & 0 deletions migrations/0002_extension_name.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-- Rename column to match renamed struct field
ALTER TABLE beamline
RENAME COLUMN fallback_extension TO tracker_file_extension;
38 changes: 19 additions & 19 deletions src/db_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pub struct BeamlineConfiguration {
visit: RawPathTemplate<VisitTemplate>,
scan: RawPathTemplate<ScanTemplate>,
detector: RawPathTemplate<DetectorTemplate>,
extension: Option<String>,
tracker_file_extension: Option<String>,
}

impl BeamlineConfiguration {
Expand All @@ -78,8 +78,8 @@ impl BeamlineConfiguration {
self.scan_number
}

pub fn extension(&self) -> Option<&str> {
self.extension.as_deref()
pub fn tracker_file_extension(&self) -> Option<&str> {
self.tracker_file_extension.as_deref()
}

pub fn visit(&self) -> SqliteTemplateResult<BeamlineField> {
Expand All @@ -104,7 +104,7 @@ impl<'r> FromRow<'r, SqliteRow> for BeamlineConfiguration {
visit: row.try_get::<String, _>("visit")?,
scan: row.try_get::<String, _>("scan")?,
detector: row.try_get::<String, _>("detector")?,
fallback_extension: row.try_get::<Option<String>, _>("fallback_extension")?,
tracker_file_extension: row.try_get::<Option<String>, _>("tracker_file_extension")?,
}
.into())
}
Expand All @@ -117,7 +117,7 @@ pub struct BeamlineConfigurationUpdate {
pub visit: Option<PathTemplate<BeamlineField>>,
pub scan: Option<PathTemplate<ScanField>>,
pub detector: Option<PathTemplate<DetectorField>>,
pub extension: Option<String>,
pub tracker_file_extension: Option<String>,
}

impl BeamlineConfigurationUpdate {
Expand All @@ -126,7 +126,7 @@ impl BeamlineConfigurationUpdate {
&& self.visit.is_none()
&& self.scan.is_none()
&& self.detector.is_none()
&& self.extension.is_none()
&& self.tracker_file_extension.is_none()
}

pub async fn update_beamline(
Expand Down Expand Up @@ -158,10 +158,10 @@ impl BeamlineConfigurationUpdate {
fields.push("detector=");
fields.push_bind_unseparated(detector.to_string());
}
if let Some(ext) = &self.extension {
if let Some(ext) = &self.tracker_file_extension {
if ext != &self.name {
// extension defaults to beamline name
fields.push("fallback_extension=");
fields.push("tracker_file_extension=");
fields.push_bind_unseparated(ext);
}
}
Expand All @@ -188,7 +188,7 @@ impl BeamlineConfigurationUpdate {
visit: self.visit.ok_or("visit")?.to_string(),
scan: self.scan.ok_or("scan")?.to_string(),
detector: self.detector.ok_or("detector")?.to_string(),
fallback_extension: self.extension,
tracker_file_extension: self.tracker_file_extension,
};
Ok(dbc.insert_into(db).await?)
}
Expand All @@ -200,7 +200,7 @@ impl BeamlineConfigurationUpdate {
visit: None,
scan: None,
detector: None,
extension: None,
tracker_file_extension: None,
}
}
}
Expand All @@ -214,7 +214,7 @@ struct DbBeamlineConfig {
visit: String,
scan: String,
detector: String,
fallback_extension: Option<String>,
tracker_file_extension: Option<String>,
}

impl DbBeamlineConfig {
Expand All @@ -225,7 +225,7 @@ impl DbBeamlineConfig {
let bc = query_as!(
DbBeamlineConfig,
"INSERT INTO beamline
(name, scan_number, visit, scan, detector, fallback_extension)
(name, scan_number, visit, scan, detector, tracker_file_extension)
VALUES
(?,?,?,?,?,?)
RETURNING *",
Expand All @@ -234,7 +234,7 @@ impl DbBeamlineConfig {
self.visit,
self.scan,
self.detector,
self.fallback_extension
self.tracker_file_extension
)
.fetch_one(&db.pool)
.await?;
Expand All @@ -250,7 +250,7 @@ impl From<DbBeamlineConfig> for BeamlineConfiguration {
visit: value.visit.into(),
scan: value.scan.into(),
detector: value.detector.into(),
extension: value.fallback_extension,
tracker_file_extension: value.tracker_file_extension,
}
}
}
Expand Down Expand Up @@ -440,7 +440,7 @@ mod db_tests {
"{subdirectory}/{instrument}-{scan_number}-{detector}",
)
.ok(),
extension: Some("ext".into()),
tracker_file_extension: Some("ext".into()),
}
}

Expand Down Expand Up @@ -471,7 +471,7 @@ mod db_tests {
}

#[rstest]
#[case::directory(|u: &mut BeamlineConfigurationUpdate| u.extension = None)]
#[case::directory(|u: &mut BeamlineConfigurationUpdate| u.tracker_file_extension = None)]
#[case::scan_number(|u: &mut BeamlineConfigurationUpdate| u.scan_number = None)]
#[tokio::test]
async fn new_beamline_without_optional(
Expand Down Expand Up @@ -565,7 +565,7 @@ mod db_tests {
conf.detector().unwrap().to_string(),
"{subdirectory}/{instrument}-{scan_number}-{detector}"
);
let Some(ext) = conf.extension() else {
let Some(ext) = conf.tracker_file_extension() else {
panic!("Missing extension");
};
assert_eq!(ext, "ext");
Expand All @@ -587,8 +587,8 @@ mod db_tests {
|u: &mut Update| u.scan_number = Some(42),
|u: BeamlineConfiguration| assert_eq!(u.scan_number(), 42))]
#[case::extension(
|u: &mut Update| u.extension = Some("new".into()),
|u: BeamlineConfiguration| assert_eq!(u.extension().unwrap(), "new"))]
|u: &mut Update| u.tracker_file_extension = Some("new".into()),
|u: BeamlineConfiguration| assert_eq!(u.tracker_file_extension().unwrap(), "new"))]
#[tokio::test]
async fn update_existing(
#[future(awt)] db: SqliteScanPathService,
Expand Down
12 changes: 7 additions & 5 deletions src/graphql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -325,14 +325,16 @@ impl Mutation {
// while the DB is being queried or between the two queries but there
// isn't much we can do from here.
let current = db.current_configuration(&beamline).await?;
let dir = nt.for_beamline(&beamline, current.extension()).await?;
let dir = nt
.for_beamline(&beamline, current.tracker_file_extension())
.await?;

let next_scan = db
.next_scan_configuration(&beamline, dir.prev().await?)
.await?;

if let Err(e) = dir.set(next_scan.scan_number()).await {
warn!("Failed to increment fallback tracker directory: {e}");
warn!("Failed to increment tracker file: {e}");
}

Ok(ScanPaths {
Expand Down Expand Up @@ -386,7 +388,7 @@ struct ConfigurationUpdates {
scan: Option<InputTemplate<ScanTemplate>>,
detector: Option<InputTemplate<DetectorTemplate>>,
scan_number: Option<u32>,
extension: Option<String>,
tracker_file_extension: Option<String>,
}

impl ConfigurationUpdates {
Expand All @@ -397,7 +399,7 @@ impl ConfigurationUpdates {
visit: self.visit.map(|t| t.0),
scan: self.scan.map(|t| t.0),
detector: self.detector.map(|t| t.0),
extension: self.extension,
tracker_file_extension: self.tracker_file_extension,
}
}
}
Expand Down Expand Up @@ -597,7 +599,7 @@ mod tests {
scan: scan.map(|s| InputTemplate::parse(Some(Value::String(s.into()))).unwrap()),
detector: det.map(|d| InputTemplate::parse(Some(Value::String(d.into()))).unwrap()),
scan_number: num,
extension: ext.map(|e| e.into()),
tracker_file_extension: ext.map(|e| e.into()),
}
}

Expand Down
2 changes: 1 addition & 1 deletion static/service_schema
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ input ConfigurationUpdates {
scan: ScanTemplate
detector: DetectorTemplate
scanNumber: Int
extension: String
trackerFileExtension: String
}

scalar Detector
Expand Down