diff --git a/backend/parsers/windmill-parser-sql/src/lib.rs b/backend/parsers/windmill-parser-sql/src/lib.rs index a5e8a3f8cb..ad7d3f256c 100644 --- a/backend/parsers/windmill-parser-sql/src/lib.rs +++ b/backend/parsers/windmill-parser-sql/src/lib.rs @@ -76,6 +76,18 @@ lazy_static::lazy_static! { } +fn parsed_default(parsed_typ: &Typ, default: String) -> Option { + match parsed_typ { + _ if default.to_lowercase() == "null" => None, + Typ::Int => default.parse::().ok().map(|x| json!(x)), + Typ::Float => default.parse::().ok().map(|x| json!(x)), + Typ::Bool => default.parse::().ok().map(|x| json!(x)), + Typ::Str(_) if default.len() >= 2 && default.starts_with("'") && default.ends_with("'") => { + Some(json!(&default[1..default.len() - 1])) + } + _ => Some(json!(default)), + } +} fn parse_mysql_file(code: &str) -> anyhow::Result>> { let mut args: Vec = vec![]; @@ -91,11 +103,7 @@ fn parse_mysql_file(code: &str) -> anyhow::Result>> { let has_default = default.is_some(); let parsed_typ = parse_mysql_typ(typ.as_str()); - let parsed_default = default.and_then(|x| match parsed_typ { - Typ::Int => x.parse::().ok().map(|x| json!(x)), - Typ::Float => x.parse::().ok().map(|x| json!(x)), - _ => Some(json!(x)), - }); + let parsed_default = default.and_then(|x| parsed_default(&parsed_typ, x)); args.push(Arg { name, typ: parsed_typ, @@ -117,11 +125,8 @@ fn parse_mysql_file(code: &str) -> anyhow::Result>> { let has_default = default.is_some(); let parsed_typ = parse_mysql_typ(typ.as_str()); - let parsed_default = default.and_then(|x| match parsed_typ { - Typ::Int => x.parse::().ok().map(|x| json!(x)), - Typ::Float => x.parse::().ok().map(|x| json!(x)), - _ => Some(json!(x)), - }); + let parsed_default = default.and_then(|x| parsed_default(&parsed_typ, x)); + args.push(Arg { name, typ: parsed_typ, @@ -171,11 +176,8 @@ fn parse_pg_file(code: &str) -> anyhow::Result>> { let default = cap.get(3).map(|x| x.as_str().to_string()); let has_default = default.is_some(); let oarg = args[(i.unwrap() - 1) as usize].clone(); - let parsed_default = default.and_then(|x| match oarg.typ { - Typ::Int => x.parse::().ok().map(|x| json!(x)), - Typ::Float => x.parse::().ok().map(|x| json!(x)), - _ => Some(json!(x)), - }); + let parsed_default = default.and_then(|x| parsed_default(&oarg.typ, x)); + args[(i.unwrap() - 1) as usize] = Arg { name, typ: oarg.typ, default: parsed_default, otyp: oarg.otyp, has_default }; } @@ -196,11 +198,8 @@ fn parse_bigquery_file(code: &str) -> anyhow::Result>> { let has_default = default.is_some(); let parsed_typ = parse_bigquery_typ(typ.as_str()); - let parsed_default = default.and_then(|x| match parsed_typ { - Typ::Int => x.parse::().ok().map(|x| json!(x)), - Typ::Float => x.parse::().ok().map(|x| json!(x)), - _ => Some(json!(x)), - }); + let parsed_default = default.and_then(|x| parsed_default(&parsed_typ, x)); + args.push(Arg { name, typ: parsed_typ, @@ -226,11 +225,8 @@ fn parse_snowflake_file(code: &str) -> anyhow::Result>> { let has_default = default.is_some(); let parsed_typ = parse_snowflake_typ(typ.as_str()); - let parsed_default = default.and_then(|x| match parsed_typ { - Typ::Int => x.parse::().ok().map(|x| json!(x)), - Typ::Float => x.parse::().ok().map(|x| json!(x)), - _ => Some(json!(x)), - }); + let parsed_default = default.and_then(|x| parsed_default(&parsed_typ, x)); + args.push(Arg { name, typ: parsed_typ, @@ -256,11 +252,8 @@ fn parse_mssql_file(code: &str) -> anyhow::Result>> { let has_default = default.is_some(); let parsed_typ = parse_mssql_typ(typ.as_str()); - let parsed_default = default.and_then(|x| match parsed_typ { - Typ::Int => x.parse::().ok().map(|x| json!(x)), - Typ::Float => x.parse::().ok().map(|x| json!(x)), - _ => Some(json!(x)), - }); + let parsed_default = default.and_then(|x| parsed_default(&parsed_typ, x)); + args.push(Arg { name, typ: parsed_typ, diff --git a/backend/windmill-api/src/workspaces.rs b/backend/windmill-api/src/workspaces.rs index 5eec9fb54e..f3148d8485 100644 --- a/backend/windmill-api/src/workspaces.rs +++ b/backend/windmill-api/src/workspaces.rs @@ -756,9 +756,9 @@ async fn edit_auto_invite( let domain = if ea.invite_all.is_some_and(|x| x) { if *CLOUD_HOSTED { - return Err(Error::BadRequest( - "invite_all is only available locally".to_string(), - )); + return Err(Error::BadRequest( + "invite_all is only available locally".to_string(), + )); } else { "*" } diff --git a/frontend/src/lib/components/settings/WorkspaceUserSettings.svelte b/frontend/src/lib/components/settings/WorkspaceUserSettings.svelte index bbbac46cfd..089fe282aa 100644 --- a/frontend/src/lib/components/settings/WorkspaceUserSettings.svelte +++ b/frontend/src/lib/components/settings/WorkspaceUserSettings.svelte @@ -276,7 +276,7 @@ await removeAllInvitesFromDomain() await WorkspaceService.editAutoInvite({ workspace: $workspaceStore ?? '', - requestBody: { operator: e.detail } + requestBody: { operator: e.detail, invite_all: !isCloudHosted() } }) loadSettings() listInvites() @@ -287,7 +287,6 @@ size="sm" checked={auto_invite_domain != undefined} on:change={async (e) => { - console.log(e.detail) await removeAllInvitesFromDomain() await WorkspaceService.editAutoInvite({ workspace: $workspaceStore ?? '',