From 470fb51d130d1e6d86e609a472c0d0d3ddb501ed Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 18 Jan 2023 06:56:44 +0100 Subject: [PATCH] fix all cases where schema has been set to undefined --- backend/windmill-api/src/workspaces.rs | 67 ++++++++++--------- .../src/lib/components/ScriptBuilder.svelte | 5 +- .../src/lib/components/ScriptEditor.svelte | 1 + .../InlineScriptEditor.svelte | 3 + 4 files changed, 43 insertions(+), 33 deletions(-) diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index 15940e2ab2..5af235bab3 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -206,39 +206,42 @@ async fn premium_info( } async fn stripe_checkout(authed: Authed, Extension(base_url): Extension>) { - // let client = stripe::Client::new(std::env::var("STRIPE_KEY").expect("STRIPE_KEY")); - // let success_rd = format!( - // "{}/workspace_settings?session={{CHECKOUT_SESSION_ID}}", - // base_url.0 - // ); - // let failure_rd = format!("{}/workspace_settings", base_url.0); - // let checkout_session = { - // let mut params = stripe::CreateCheckoutSession::new(&failure_rd, &success_rd); - // params.mode = Some(stripe::CheckoutSessionMode::Subscription); - // params.line_items = Some(vec![ - // stripe::CreateCheckoutSessionLineItems { - // quantity: None, - // price: Some("price_1MQzMHGU3NdFi9eLWFC7IXEv".to_string()), - // ..Default::default() - // }, - // stripe::CreateCheckoutSessionLineItems { - // quantity: None, - // price: Some("price_1MR2BZGU3NdFi9eLNRuibxPx".to_string()), - // ..Default::default() - // }, - // ]); - // params.customer_email = Some(&authed.email); - // params.client_reference_id = Some("foo"); - // stripe::CheckoutSession::create(&client, params) - // .await - // .unwrap() - // }; + #[cfg(feature = "enterprise")] + { + let client = stripe::Client::new(std::env::var("STRIPE_KEY").expect("STRIPE_KEY")); + let success_rd = format!( + "{}/workspace_settings?session={{CHECKOUT_SESSION_ID}}", + base_url.0 + ); + let failure_rd = format!("{}/workspace_settings", base_url.0); + let checkout_session = { + let mut params = stripe::CreateCheckoutSession::new(&failure_rd, &success_rd); + params.mode = Some(stripe::CheckoutSessionMode::Subscription); + params.line_items = Some(vec![ + stripe::CreateCheckoutSessionLineItems { + quantity: None, + price: Some("price_1MQzMHGU3NdFi9eLWFC7IXEv".to_string()), + ..Default::default() + }, + stripe::CreateCheckoutSessionLineItems { + quantity: None, + price: Some("price_1MR2BZGU3NdFi9eLNRuibxPx".to_string()), + ..Default::default() + }, + ]); + params.customer_email = Some(&authed.email); + params.client_reference_id = Some("foo"); + stripe::CheckoutSession::create(&client, params) + .await + .unwrap() + }; - // println!( - // "created a {} at {}", - // checkout_session.payment_status, - // checkout_session.url.unwrap() - // ); + println!( + "created a {} at {}", + checkout_session.payment_status, + checkout_session.url.unwrap() + ); + } } async fn exists_workspace( diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index d83985da74..9e15aba92a 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -6,7 +6,7 @@ import { inferArgs } from '$lib/infer' import { initialCode, isInitialCode } from '$lib/script_helpers' import { userStore, workspaceStore } from '$lib/stores' - import { encodeState, sendUserToast, setQueryWithoutLoad } from '$lib/utils' + import { emptySchema, encodeState, sendUserToast, setQueryWithoutLoad } from '$lib/utils' import Path from './Path.svelte' import RadioButton from './RadioButton.svelte' import ScriptEditor from './ScriptEditor.svelte' @@ -58,6 +58,8 @@ try { $dirtyStore = false localStorage.removeItem(script.path) + + script.schema = script.schema ?? emptySchema() if (!script.schema) { await inferArgs(script.language, script.content, script.schema) } @@ -84,6 +86,7 @@ async function changeStep(step: number) { if (step > 1) { + script.schema = script.schema ?? emptySchema() await inferArgs(script.language, script.content, script.schema) } goto(`?step=${step}`) diff --git a/frontend/src/lib/components/ScriptEditor.svelte b/frontend/src/lib/components/ScriptEditor.svelte index 6c5736dd0c..c7a4b562fa 100644 --- a/frontend/src/lib/components/ScriptEditor.svelte +++ b/frontend/src/lib/components/ScriptEditor.svelte @@ -71,6 +71,7 @@ } async function inferSchema(code: string) { + schema = schema ?? emptySchema() let isDefault: string[] = [] Object.entries(args).forEach(([k, v]) => { if (schema.properties[k].default == v) { diff --git a/frontend/src/lib/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte b/frontend/src/lib/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte index 6b07fa76ff..4ff76b3b7b 100644 --- a/frontend/src/lib/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +++ b/frontend/src/lib/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte @@ -137,6 +137,9 @@ on:change={async (e) => { if (inlineScript) { const oldSchema = JSON.stringify(inlineScript.schema) + if (inlineScript.schema == undefined) { + inlineScript.schema = emptySchema() + } await inferInlineScriptSchema(inlineScript?.language, e.detail, inlineScript.schema) if (JSON.stringify(inlineScript.schema) != oldSchema) { inlineScript = inlineScript