From cd07020edb8ff652d086023771caa07755b5b2a2 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 11 Apr 2024 01:12:47 +0200 Subject: [PATCH] fix: remove requirement on full wasm parser for row insert of db studio --- .../Cargo.toml | 20 ++++++++++ .../build.sh | 4 ++ .../package-lock.json | 6 +++ .../package.json | 4 ++ .../src/lib.rs | 40 +++++++++++++++++++ 5 files changed, 74 insertions(+) create mode 100644 backend/parsers/windmill-sql-datatype-parser-wasm/Cargo.toml create mode 100644 backend/parsers/windmill-sql-datatype-parser-wasm/build.sh create mode 100644 backend/parsers/windmill-sql-datatype-parser-wasm/package-lock.json create mode 100644 backend/parsers/windmill-sql-datatype-parser-wasm/package.json create mode 100644 backend/parsers/windmill-sql-datatype-parser-wasm/src/lib.rs diff --git a/backend/parsers/windmill-sql-datatype-parser-wasm/Cargo.toml b/backend/parsers/windmill-sql-datatype-parser-wasm/Cargo.toml new file mode 100644 index 0000000000..3176ec1ce6 --- /dev/null +++ b/backend/parsers/windmill-sql-datatype-parser-wasm/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "windmill-sql-datatype-parser-wasm" +version.workspace = true +edition.workspace = true +authors.workspace = true + + +[lib] +crate-type = ["cdylib"] +name = "windmill_sql_datatype_parser_wasm" +path = "./src/lib.rs" + +[dev-dependencies] +wasm-bindgen-test.workspace = true + +[dependencies] +windmill-parser.workspace = true +windmill-parser-sql.workspace = true +wasm-bindgen.workspace = true +serde = { version = "1.0", features = ["derive"] } \ No newline at end of file diff --git a/backend/parsers/windmill-sql-datatype-parser-wasm/build.sh b/backend/parsers/windmill-sql-datatype-parser-wasm/build.sh new file mode 100644 index 0000000000..0ac5a6fde0 --- /dev/null +++ b/backend/parsers/windmill-sql-datatype-parser-wasm/build.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -eou pipefail + +deno task wasmbuild --out ../../../cli/wasm/ diff --git a/backend/parsers/windmill-sql-datatype-parser-wasm/package-lock.json b/backend/parsers/windmill-sql-datatype-parser-wasm/package-lock.json new file mode 100644 index 0000000000..f88d35a75a --- /dev/null +++ b/backend/parsers/windmill-sql-datatype-parser-wasm/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "windmill-parser-wasm", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/backend/parsers/windmill-sql-datatype-parser-wasm/package.json b/backend/parsers/windmill-sql-datatype-parser-wasm/package.json new file mode 100644 index 0000000000..fa9dffe133 --- /dev/null +++ b/backend/parsers/windmill-sql-datatype-parser-wasm/package.json @@ -0,0 +1,4 @@ +{ + "name": "windmill-sql-datatype-parser-wasm", + "version": "0.1.0" +} diff --git a/backend/parsers/windmill-sql-datatype-parser-wasm/src/lib.rs b/backend/parsers/windmill-sql-datatype-parser-wasm/src/lib.rs new file mode 100644 index 0000000000..30103beafd --- /dev/null +++ b/backend/parsers/windmill-sql-datatype-parser-wasm/src/lib.rs @@ -0,0 +1,40 @@ +use wasm_bindgen::prelude::*; +use windmill_parser_sql::Typ; + +fn to_str(typ: Typ) -> String { + match typ { + Typ::Str(_) => "str".to_string(), + Typ::Int => "int".to_string(), + Typ::Float => "float".to_string(), + Typ::Bool => "bool".to_string(), + Typ::List(t) => format!("list-{}", to_str(*t)), + Typ::Bytes => "bytes".to_string(), + Typ::Datetime => "datetime".to_string(), + _ => "unknown".to_string(), + } +} + +#[wasm_bindgen] +pub fn parse_sql(typ: &str) -> String { + to_str(windmill_parser_sql::parse_pg_typ(typ)) +} + +#[wasm_bindgen] +pub fn parse_mysql(typ: &str) -> String { + to_str(windmill_parser_sql::parse_mysql_typ(typ)) +} + +#[wasm_bindgen] +pub fn parse_bigquery(typ: &str) -> String { + to_str(windmill_parser_sql::parse_bigquery_typ(typ)) +} + +#[wasm_bindgen] +pub fn parse_snowflake(typ: &str) -> String { + to_str(windmill_parser_sql::parse_snowflake_typ(typ)) +} + +#[wasm_bindgen] +pub fn parse_mssql(typ: &str) -> String { + to_str(windmill_parser_sql::parse_mssql_typ(typ)) +}