From d4ee744512a96850859bd59bd707e467370da3ae Mon Sep 17 00:00:00 2001 From: Brendan Allan Date: Sun, 20 Aug 2023 06:14:57 -0700 Subject: [PATCH] use Uuid::from_str instead of Uuid::from_slice (#389) --- Cargo.lock | 9 +++++++ crates/generator/src/header.rs | 9 ------- crates/lib/src/raw.rs | 4 +-- prisma-cli/Cargo.toml | 1 + tests/database/sqlserver/.cargo/config.toml | 2 ++ tests/database/sqlserver/Cargo.toml | 25 +++++++++++++++++++ .../sqlserver/prisma/migrations/.gitkeep | 0 tests/database/sqlserver/prisma/schema.prisma | 16 ++++++++++++ tests/database/sqlserver/tests/lib.rs | 19 ++++++++++++++ 9 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 tests/database/sqlserver/.cargo/config.toml create mode 100644 tests/database/sqlserver/Cargo.toml create mode 100644 tests/database/sqlserver/prisma/migrations/.gitkeep create mode 100644 tests/database/sqlserver/prisma/schema.prisma create mode 100644 tests/database/sqlserver/tests/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 582245b3..3d8a48ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6540,6 +6540,15 @@ dependencies = [ "log", ] +[[package]] +name = "sqlserver-tests" +version = "0.1.0" +dependencies = [ + "prisma-client-rust", + "serde", + "tokio", +] + [[package]] name = "stable-pattern" version = "0.1.0" diff --git a/crates/generator/src/header.rs b/crates/generator/src/header.rs index d118fe7a..4faed3b0 100644 --- a/crates/generator/src/header.rs +++ b/crates/generator/src/header.rs @@ -40,14 +40,5 @@ pub fn generate(args: &GenerateArgs) -> TokenStream { static DATABASE_STR: &'static str = #database_string; #migrations_include - - pub async fn new_client() -> Result { - PrismaClient::_builder().build().await - } - - // adapted from https://github.com/polytope-labs/prisma-client-rs/blob/0dec2a67081e78b42700f6a62f414236438f84be/codegen/src/prisma.rs.template#L182 - pub async fn new_client_with_url(url: &str) -> Result { - PrismaClient::_builder().with_url(url.to_string()).build().await - } } } diff --git a/crates/lib/src/raw.rs b/crates/lib/src/raw.rs index 43fafda8..27f7449c 100644 --- a/crates/lib/src/raw.rs +++ b/crates/lib/src/raw.rs @@ -89,9 +89,7 @@ impl From for RawPrismaValue { } ("json", v) => RawPrismaValue::Json(v), ("xml", String(s)) => RawPrismaValue::Xml(s), - ("uuid", String(s)) => { - RawPrismaValue::Uuid(uuid::Uuid::from_slice(s.as_bytes()).unwrap()) - } + ("uuid", String(s)) => RawPrismaValue::Uuid(uuid::Uuid::from_str(&s).unwrap()), ("datetime", String(s)) => { RawPrismaValue::DateTime(chrono::DateTime::parse_from_rfc3339(&s).unwrap().into()) } diff --git a/prisma-cli/Cargo.toml b/prisma-cli/Cargo.toml index 6f5835f9..1ea55d74 100644 --- a/prisma-cli/Cargo.toml +++ b/prisma-cli/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" sqlite = ["prisma-client-rust-cli/sqlite", "prisma-client-rust-cli/sqlite-create-many"] mongodb = ["prisma-client-rust-cli/mongodb"] postgresql = ["prisma-client-rust-cli/postgresql"] +mssql = ["prisma-client-rust-cli/mssql"] specta = ["prisma-client-rust-cli/specta"] mocking = ["prisma-client-rust-cli/mocking"] diff --git a/tests/database/sqlserver/.cargo/config.toml b/tests/database/sqlserver/.cargo/config.toml new file mode 100644 index 00000000..2c0954d5 --- /dev/null +++ b/tests/database/sqlserver/.cargo/config.toml @@ -0,0 +1,2 @@ +[alias] +prisma = "run -p prisma-cli --features mssql --" diff --git a/tests/database/sqlserver/Cargo.toml b/tests/database/sqlserver/Cargo.toml new file mode 100644 index 00000000..8209a1ad --- /dev/null +++ b/tests/database/sqlserver/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "sqlserver-tests" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[test]] +name = "integration_tests" +path = "tests/lib.rs" +harness = true + +[dependencies] +prisma-client-rust = { workspace = true, features = [ + "mssql", + "migrations", +] } +serde = { version = "1.0", features = ["derive"] } + +[dev-dependencies] +tokio = { version = "1.17.0", features = ["rt", "macros"] } +prisma-client-rust = { workspace = true, features = [ + "mssql", + "migrations", +] } diff --git a/tests/database/sqlserver/prisma/migrations/.gitkeep b/tests/database/sqlserver/prisma/migrations/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/tests/database/sqlserver/prisma/schema.prisma b/tests/database/sqlserver/prisma/schema.prisma new file mode 100644 index 00000000..94ce3909 --- /dev/null +++ b/tests/database/sqlserver/prisma/schema.prisma @@ -0,0 +1,16 @@ +datasource db { + provider = "sqlserver" + url = env("DATABASE_URL") +} + +generator client { + provider = "cargo prisma" + output = "../tests/db" + + module_path = "crate::db" + client_format = "folder" +} + +model TestTable { + id String @id @default(uuid()) @db.UniqueIdentifier +} diff --git a/tests/database/sqlserver/tests/lib.rs b/tests/database/sqlserver/tests/lib.rs new file mode 100644 index 00000000..69353faa --- /dev/null +++ b/tests/database/sqlserver/tests/lib.rs @@ -0,0 +1,19 @@ +use prisma_client_rust::raw; + +use crate::db::{test_table, PrismaClient}; + +#[allow(warnings)] +mod db; + +#[tokio::test] +async fn issue_378() -> Result<(), Box> { + let client = PrismaClient::_builder().build().await?; + + client.test_table().create(vec![]).exec().await?; + let _: Vec = client + ._query_raw(raw!("SELECT id FROM TestTable")) + .exec() + .await?; + + Ok(()) +}