mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-09-12 00:06:14 +00:00
feat: support native jobs from hub
This commit is contained in:
@@ -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()
|
||||
);
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user