Automatic push from FunctionsAPI

This commit is contained in:
FunctionsAPI 2025-04-09 23:06:54 +00:00
parent 3c09f877be
commit 07e6422067
4 changed files with 3505 additions and 1 deletions

3355
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

12
Cargo.toml Normal file
View File

@ -0,0 +1,12 @@
[package]
edition = "2024"
name = "web"
version = "0.1.0"
[dependencies]
chrono = { version = "0.4" }
fathom-function = { git = "ssh://git@github.com/fathom-io/pipeline-calculations.git", branch = "johnabell/pipeline-route" }
pipeline-application = { git = "ssh://git@github.com/fathom-io/pipeline-calculations.git", branch = "johnabell/pipeline-route" }
serde = { version = "1.0.219", features = ["derive"] }
tokio = { version = "1.43.0", features = ["macros", "rt-multi-thread"] }
uuid = { version = "1" }

File diff suppressed because one or more lines are too long

69
src/main.rs Normal file
View File

@ -0,0 +1,69 @@
use chrono::NaiveDate;
use fathom_function::Context;
use pipeline_application::application::{
Application, InlineInspection, InspectionType, ReportType, ToolTolerances,
};
use serde::{Deserialize, Deserializer};
use uuid::Uuid;
#[fathom_function::function(default(
org_id = "2cbfe270-d195-48ad-aed1-24145924635c",
project_id = "67c6f36910e4c56ed42bf841"
))]
async fn pipeline_route(context: Context, input: Input) -> Result<String, String> {
Application::new(context.env, context.org_id, &context.project_id)
.unwrap()
.process_ili_report(
uuid::uuid!("0195a527-f16b-7d83-b936-35bc2dd92f9d"),
input.file_details.first().unwrap().file_id,
ToolTolerances::default(),
input,
)
.await
.unwrap();
Ok("Success".to_owned())
}
#[derive(Debug, Deserialize)]
struct Input {
pipeline_id: Vec<Uuid>,
#[serde(deserialize_with = "deserialize_date")]
date: NaiveDate,
vendor_name: String,
report_type: ReportType,
/// The inspection type and technology used.
inspection_type: InspectionType,
file_details: Vec<FileDetails>,
// TODO: parse the output of the tool tolerances.
}
impl From<Input> for InlineInspection {
fn from(value: Input) -> Self {
Self {
date: value.date,
vendor_name: value.vendor_name,
report_type: value.report_type,
inspection_type: value.inspection_type,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FileDetails {
pub file_id: Uuid,
pub revision_id: Uuid,
}
const FORMAT: &'static str = "%a %b %d %Y";
pub fn deserialize_date<'de, D>(
deserializer: D,
) -> Result<NaiveDate, D::Error>
where
D: Deserializer<'de>,
{
let s = String::deserialize(deserializer)?;
let dt = NaiveDate::parse_from_str(&s, FORMAT).map_err(serde::de::Error::custom)?;
Ok(dt)
}