Skip to content

Commit

Permalink
wip - prisma 13097
Browse files Browse the repository at this point in the history
  • Loading branch information
tomhoule committed Sep 13, 2022
1 parent a652eea commit e2a7282
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 2 deletions.
@@ -1,5 +1,6 @@
mod max_integer;
mod prisma_10098;
mod prisma_13097;
mod prisma_10935;
mod prisma_12929;
mod prisma_14696;
Expand Down
@@ -0,0 +1,68 @@
use query_engine_tests::*;

#[test_suite(schema(schema), only(Postgres))]
mod prisma_13097 {
fn schema() -> String {
r#"
enum AppCategories {
calendar
messaging
payment
other
}
model App {
slug String @id @unique
categories AppCategories[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Opp {
slug String @id @unique
categories Boolean[]
}
"#
.to_owned()
}

#[connector_test]
async fn group_by_enum_array(runner: Runner) -> TestResult<()> {
// Insert some data first
run_query!(
runner,
r#"mutation { createManyApp(data: [{slug:"a",categories:[calendar,other]},{slug:"b",categories:[]},{slug:"c",categories:[calendar,other]},{slug:"d",categories:[messaging, payment]}]) { count } }"#
);

let result = run_query!(
runner,
r#"{groupByApp(by: [categories], orderBy: { categories: "desc" }) { _count { slug } categories }}"#
);
assert_eq!(result, "{\"data\":{\"groupByApp\":[{\"_count\":{\"slug\":1},\"categories\":[\"messaging\",\"payment\"]},{\"_count\":{\"slug\":2},\"categories\":[\"calendar\",\"other\"]},{\"_count\":{\"slug\":1},\"categories\":[]}]}}");

let result = run_query!(
runner,
r#"{groupByApp(by: [categories], orderBy: { categories: "asc" }) { _count { slug categories } }}"#
);
assert_eq!(result, "{\"data\":{\"groupByApp\":[{\"_count\":{\"slug\":1,\"categories\":1}},{\"_count\":{\"slug\":2,\"categories\":2}},{\"_count\":{\"slug\":1,\"categories\":1}}]}}");

Ok(())
}

#[connector_test]
async fn group_by_boolean_array(runner: Runner) -> TestResult<()> {
// Insert some data first
run_query!(
runner,
r#"mutation { createManyOpp(data: [{slug:"a",categories:[true,false]},{slug:"b",categories:[]},{slug:"c",categories:[false,true]},{slug:"d",categories:[true,false]}]) { count } }"#
);

let result = run_query!(
runner,
r#"{groupByOpp(by: [categories], orderBy: { categories: "desc" }) { _count { slug } categories }}"#
);
assert_eq!(result, "{\"data\":{\"groupByOpp\":[{\"_count\":{\"slug\":2},\"categories\":[true,false]},{\"_count\":{\"slug\":1},\"categories\":[false,true]},{\"_count\":{\"slug\":1},\"categories\":[]}]}}");

Ok(())
}
}
2 changes: 1 addition & 1 deletion query-engine/connectors/query-connector/src/interface.rs
Expand Up @@ -119,7 +119,7 @@ impl AggregationSelection {
AggregationSelection::Field(field) => vec![(
field.db_name().to_owned(),
field.type_identifier.clone(),
FieldArity::Required,
field.arity,
)],

AggregationSelection::Count { all, fields } => {
Expand Down
2 changes: 1 addition & 1 deletion query-engine/connectors/sql-query-connector/src/row.rs
Expand Up @@ -122,7 +122,7 @@ impl ToSqlRow for ResultRow {
}
}

pub fn row_value_to_prisma_value(p_value: Value, meta: ColumnMetadata<'_>) -> Result<PrismaValue, SqlError> {
fn row_value_to_prisma_value(p_value: Value, meta: ColumnMetadata<'_>) -> Result<PrismaValue, SqlError> {
let create_error = |value: &Value| {
let message = match meta.name() {
Some(name) => {
Expand Down

0 comments on commit e2a7282

Please sign in to comment.