Converting flake metadata into sql rows in separate functions
This commit is contained in:
parent
796d2bf8c1
commit
55e0bbc6c6
64
src/scan.rs
64
src/scan.rs
@ -23,33 +23,16 @@ use std::process::Command;
|
|||||||
pub async fn scan_flake(storage: Storage, flake_uri: &str) -> Result<()> {
|
pub async fn scan_flake(storage: Storage, flake_uri: &str) -> Result<()> {
|
||||||
let scan_time = Utc::now().timestamp();
|
let scan_time = Utc::now().timestamp();
|
||||||
|
|
||||||
let flake_metadata_raw = Command::new("nix")
|
let flake_metadata = fetch_metadata(flake_uri)
|
||||||
.arg("flake")
|
.await?;
|
||||||
.arg("metadata")
|
|
||||||
.arg("--json")
|
|
||||||
.arg(flake_uri)
|
|
||||||
.output()
|
|
||||||
.context("Failed to fetch flake metadata")?;
|
|
||||||
|
|
||||||
let flake_metadata: FlakeMetadata = serde_json::from_slice(&flake_metadata_raw.stdout)
|
let revision_row = get_revision_from_metadata(&flake_metadata)?;
|
||||||
.context("Failed to parse flake metadata")?;
|
|
||||||
|
|
||||||
let revision_row = RevisionRow {
|
|
||||||
revision_uri: flake_metadata.locked.flake_uri()?.clone(),
|
|
||||||
flake_uri: Some(flake_metadata.resolved.flake_uri()?.clone()),
|
|
||||||
nix_store_path: Some(flake_metadata.path.clone()),
|
|
||||||
nar_hash: Some(flake_metadata.locked.nar_hash.clone()),
|
|
||||||
last_modified: Some(flake_metadata.locked.last_modified.clone()),
|
|
||||||
};
|
|
||||||
|
|
||||||
storage.set_revision(revision_row)
|
storage.set_revision(revision_row)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let flake_row = FlakeRow {
|
let mut flake_row = get_flake_from_metadata(&flake_metadata)?;
|
||||||
flake_uri: flake_metadata.resolved.flake_uri()?.clone(),
|
flake_row.tracker_last_scanned = Some(scan_time.clone());
|
||||||
tracker_track: false,
|
|
||||||
tracker_last_scanned: Some(scan_time.clone()),
|
|
||||||
};
|
|
||||||
|
|
||||||
storage.set_flake(flake_row)
|
storage.set_flake(flake_row)
|
||||||
.await?;
|
.await?;
|
||||||
@ -99,3 +82,40 @@ pub async fn scan_flake(storage: Storage, flake_uri: &str) -> Result<()> {
|
|||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn fetch_metadata(flake_uri: &str) -> Result<FlakeMetadata> {
|
||||||
|
let flake_metadata_raw = Command::new("nix")
|
||||||
|
.arg("flake")
|
||||||
|
.arg("metadata")
|
||||||
|
.arg("--json")
|
||||||
|
.arg(flake_uri)
|
||||||
|
.output()
|
||||||
|
.context("Failed to fetch flake metadata")?;
|
||||||
|
|
||||||
|
let flake_metadata: FlakeMetadata = serde_json::from_slice(&flake_metadata_raw.stdout)
|
||||||
|
.context("Failed to parse flake metadata")?;
|
||||||
|
|
||||||
|
Ok(flake_metadata)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_flake_from_metadata(flake_metadata: &FlakeMetadata) -> Result<FlakeRow> {
|
||||||
|
let flake_row = FlakeRow {
|
||||||
|
flake_uri: flake_metadata.resolved.flake_uri()?.clone(),
|
||||||
|
tracker_track: false,
|
||||||
|
tracker_last_scanned: None,
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(flake_row)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_revision_from_metadata(flake_metadata: &FlakeMetadata) -> Result<RevisionRow> {
|
||||||
|
let revision_row = RevisionRow {
|
||||||
|
revision_uri: flake_metadata.locked.flake_uri()?.clone(),
|
||||||
|
flake_uri: Some(flake_metadata.resolved.flake_uri()?.clone()),
|
||||||
|
nix_store_path: Some(flake_metadata.path.clone()),
|
||||||
|
nar_hash: Some(flake_metadata.locked.nar_hash.clone()),
|
||||||
|
last_modified: Some(flake_metadata.locked.last_modified.clone()),
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(revision_row)
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user