feat: support native jobs from hub

This commit is contained in:
Ruben Fiszel
2023-08-02 18:37:46 +02:00
parent c3c5b498bb
commit b34b02495f
4 changed files with 26 additions and 8 deletions
+2 -2
View File
@@ -113,9 +113,9 @@ async fn get_input_history(
let mut tx = user_db.begin(&authed).await?;
let sql = &format!(
"select * from (select distinct on (args) * from completed_job \
"select * from completed_job \
where {} = $1 and job_kind = $2 and workspace_id = $3 \
order by args, started_at desc) t ORDER BY started_at desc limit $4 offset $5",
order by args, started_at desc limit $4 offset $5",
r.runnable_type.column_name()
);
+15 -5
View File
@@ -963,13 +963,17 @@ pub async fn get_content(job: &QueuedJob, db: &Pool<Postgres>) -> Result<String,
}
async fn do_nativets(job: QueuedJob, logs: String, client: &AuthedClient, db: &sqlx::Pool<sqlx::Postgres>,) -> windmill_common::error::Result<JobCompleted> {
async fn do_nativets(job: QueuedJob, logs: String, client: &AuthedClient, db: &sqlx::Pool<sqlx::Postgres>, hub_code: Option<String>) -> windmill_common::error::Result<JobCompleted> {
let args = if let Some(args) = &job.args {
Some(transform_json_value("args", client, &job.workspace_id, args.clone()).await?)
} else {
None
};
let code = get_content(&job, db).await?;
let code = if let Some(code) = hub_code {
code
} else {
get_content(&job, db).await?
};
let args = args
.as_ref()
@@ -1153,7 +1157,7 @@ async fn handle_queued_job<R: rsmq_async::RsmqConnection + Send + Sync + Clone>(
tokio::task::spawn(async move {
let jc = do_nativets(job.clone(), logs, &client, &db).await;
let jc = do_nativets(job.clone(), logs, &client, &db, None).await;
parallel_count.fetch_sub(1, Ordering::SeqCst);
match jc {
Ok(jc) => job_completed_tx.send(jc).await.expect("send job completed"),
@@ -1278,7 +1282,7 @@ async fn handle_queued_job<R: rsmq_async::RsmqConnection + Send + Sync + Clone>(
}
} else if job.language == Some(ScriptLang::Nativets) {
logs.push_str("\n--- FETCH TS EXECUTION ---\n");
let jc = do_nativets(job.clone(), logs.clone(), &client.get_authed().await, &db).await?;
let jc = do_nativets(job.clone(), logs.clone(), &client.get_authed().await, &db, None).await?;
logs = jc.logs;
Ok(jc.result)
} else {
@@ -1655,7 +1659,13 @@ mount {{
)
.await
},
_ => panic!("unreachable"),
Some(ScriptLang::Nativets) => {
logs.push_str("\n--- FETCH TS EXECUTION ---\n");
let jc = do_nativets(job.clone(), logs.clone(), &client.get_authed().await, &db, Some(inner_content)).await?;
*logs = jc.logs;
Ok(jc.result)
},
_ => panic!("unreachable, language is not supported: {language:#?}"),
};
tracing::info!(
worker_name = %worker_name,
+8
View File
@@ -160,6 +160,11 @@
"svelte": "./package/components/RadioButton.svelte",
"default": "./package/components/RadioButton.svelte"
},
"./components/Toggle.svelte": {
"types": "./package/components/Toggle.svelte.d.ts",
"svelte": "./package/components/Toggle.svelte",
"default": "./package/components/Toggle.svelte"
},
"./components/common/tabs/Tabs.svelte": {
"types": "./package/components/common/tabs/Tabs.svelte.d.ts",
"svelte": "./package/components/common/tabs/Tabs.svelte",
@@ -295,6 +300,9 @@
"components/RadioButton.svelte": [
"./package/components/RadioButton.svelte.d.ts"
],
"components/Toggle.svelte": [
"./package/components/Toggle.svelte.d.ts"
],
"components/common/tabs/Tabs.svelte": [
"./package/components/common/tabs/Tabs.svelte.d.ts"
],
+1 -1
View File
@@ -188,7 +188,7 @@ function argSigToJsonSchemaType(
export async function loadSchemaFromPath(path: string, hash?: string): Promise<Schema> {
if (path.startsWith('hub/')) {
const { content, language, schema } = await ScriptService.getHubScriptByPath({ path })
if (language == 'deno') {
if (language == 'deno' || language == 'nativets') {
const newSchema = emptySchema()
await inferArgs('deno' as SupportedLanguage, content ?? '', newSchema)
return newSchema