From 519393da89e668a2fbb81fbbffc44bb891854942 Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Sat, 21 Feb 2026 22:19:44 -0800 Subject: [PATCH 1/2] Add MySQL `SET` type support Adds `SET` to be represented as a `string` in Typescript since MySQL returns back a comma delimited string, and typescript expects a comma delimited string for update/insertion. --- src/ts_generator/types/ts_query.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ts_generator/types/ts_query.rs b/src/ts_generator/types/ts_query.rs index b31797be..2257e9c4 100644 --- a/src/ts_generator/types/ts_query.rs +++ b/src/ts_generator/types/ts_query.rs @@ -112,7 +112,7 @@ impl TsFieldType { ) -> Self { match mysql_field_type.as_str() { "bigint" | "decimal" | "double" | "float" | "int" | "mediumint" | "smallint" | "year" => Self::Number, - "binary" | "bit" | "blob" | "char" | "text" | "varbinary" | "varchar" => Self::String, + "binary" | "bit" | "blob" | "char" | "text" | "varbinary" | "varchar" | "set" => Self::String, "tinyint" => Self::Boolean, "date" | "datetime" | "timestamp" => Self::Date, "enum" => { From f5fca8e700a34572cafb6a7f58ab7b1ac495e396 Mon Sep 17 00:00:00 2001 From: Jareth Gomes Date: Sun, 22 Feb 2026 16:19:38 -0800 Subject: [PATCH 2/2] Add tests for `SET` type generation --- tests/mysql_sets.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 tests/mysql_sets.rs diff --git a/tests/mysql_sets.rs b/tests/mysql_sets.rs new file mode 100644 index 00000000..d4c0c611 --- /dev/null +++ b/tests/mysql_sets.rs @@ -0,0 +1,67 @@ +#[cfg(test)] +mod sets { + use assert_cmd::prelude::*; + use pretty_assertions::assert_eq; + use std::env; + use std::fs; + use std::io::Write; + use std::process::Command; + use tempfile::tempdir; + + use test_utils::test_utils::TSString; + use test_utils::{run_test, sandbox::TestConfig}; + + #[rustfmt::skip] +run_test!(should_generate_sets_for_mysql, TestConfig::new("mysql", true, None, None), + +//// TS query //// +r#" +const setQuery = sql` + SELECT + set1 + FROM + random +`; +"#, + +//// Generated TS interfaces //// +r#" +export type SetQueryParams = []; + +export interface ISetQueryResult { + set1: string | null; +} + +export interface ISetQueryQuery { + params: SetQueryParams; + result: ISetQueryResult; +} +"#); + + #[rustfmt::skip] +run_test!(should_generate_set_insert_params_for_mysql, TestConfig::new("mysql", true, None, None), + +//// TS query //// +r#" +const setQuery = sql` + INSERT INTO + random (set1) + VALUES + (?) +`; +"#, + +//// Generated TS interfaces //// +r#" +export type SetQueryParams = [[string | null]]; + +export interface ISetQueryResult { + +} + +export interface ISetQueryQuery { + params: SetQueryParams; + result: ISetQueryResult; +} +"#); +}