Skip to content

Commit

Permalink
fix: tests & naming & types
Browse files Browse the repository at this point in the history
  • Loading branch information
luckasRanarison committed Feb 5, 2025
1 parent 87e2527 commit 2f1186d
Show file tree
Hide file tree
Showing 37 changed files with 11,161 additions and 4,082 deletions.
49 changes: 35 additions & 14 deletions src/typegraph/core/src/runtimes/prisma/type_generation/filters.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,25 +47,46 @@ pub enum NumberType {
}

pub struct NumberFilter {
pub type_id: TypeId,
pub number_type: NumberType,
pub with_aggregates: bool,
}

impl NumberFilter {
pub fn new(number_type: NumberType, with_aggregates: bool) -> Self {
Self {
pub fn from_id(type_id: TypeId, with_aggregates: bool) -> Result<Self> {
Ok(Self {
type_id,
number_type: match type_id.as_xdef()?.type_def {
TypeDef::Integer(_) => NumberType::Integer,
TypeDef::Float(_) => NumberType::Float,
_ => unreachable!("non-number type"),
},
with_aggregates,
})
}

pub fn from_type(number_type: NumberType, with_aggregates: bool) -> Result<Self> {
Ok(Self {
type_id: match number_type {
NumberType::Integer => t::integer().build()?,
NumberType::Float => t::float().build()?,
},
number_type,
with_aggregates,
}
})
}
}

impl TypeGen for NumberFilter {
fn generate(&self, context: &PrismaContext) -> Result<TypeId> {
if self.with_aggregates {
let base = context.generate(&NumberFilter::new(self.number_type, false))?;
let float_base = context.generate(&NumberFilter::new(NumberType::Float, false))?;
let int_base = context.generate(&NumberFilter::new(NumberType::Integer, false))?;
let base_filter = NumberFilter::from_type(self.number_type, false)?;
let float_filter = NumberFilter::from_type(NumberType::Float, false);
let int_filter = NumberFilter::from_type(NumberType::Integer, false);

let base = context.generate(&base_filter)?;
let float_base = context.generate(&float_filter?)?;
let int_base = context.generate(&int_filter?)?;
t::unionx![
base,
t::struct_().prop("_count", int_base),
Expand All @@ -76,10 +97,7 @@ impl TypeGen for NumberFilter {
]
.build_named(self.name(context)?)
} else {
let type_id = match self.number_type {
NumberType::Integer => t::integer().build()?,
NumberType::Float => t::float().build()?,
};
let type_id = self.type_id;
let opt_type_id = t::optional(type_id).build()?;
let list_type_id = t::list(type_id).build()?;
t::eitherx![
Expand All @@ -106,8 +124,8 @@ impl TypeGen for NumberFilter {
""
};
Ok(match self.number_type {
NumberType::Integer => format!("_prisma_integer_filter{suffix}"),
NumberType::Float => format!("_prisma_float_filter{suffix}"),
NumberType::Integer => format!("_prisma_integer_filter{suffix}_t{}", self.type_id.0),
NumberType::Float => format!("_prisma_float_filter{suffix}_t{}", self.type_id.0),
})
}
}
Expand Down Expand Up @@ -143,7 +161,7 @@ impl TypeGen for StringFilter {
}

fn name(&self, _context: &PrismaContext) -> Result<String> {
Ok(format!("_prisma_string_filter{}", self.type_id.0))
Ok(format!("_prisma_string_filter_t{}", self.type_id.0))
}
}

Expand Down Expand Up @@ -334,7 +352,10 @@ fn gen_aggregate_filter<P, F: Fn(P) -> (String, NumberType)>(
let (prop_name, number_type) = map(prop);
builder.prop(
prop_name,
context.generate(&CompleteFilter(NumberFilter::new(number_type, false)))?,
context.generate(&CompleteFilter(NumberFilter::from_type(
number_type,
false,
)?))?,
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,33 @@
source: src/typegraph/core/src/runtimes/prisma/type_generation/query_where_expr.rs
expression: "tree::print(post_where_expr)"
---
root: struct 'Post_query_where_input' #103
├── [AND]: optional #100
│ └── item: list #99
│ └── item: &Post_query_where_input #98
├── [NOT]: optional #101
│ └── item: &Post_query_where_input #98
├── [OR]: optional #100
│ └── item: list #99
│ └── item: &Post_query_where_input #98
├── [author]: optional #95
│ └── item: struct 'User_where_excluding_Post' #94
│ ├── [id]: optional #82
│ │ └── item: &_prisma_integer_filter_ex #16
│ ├── [name]: optional #83
│ │ └── item: &_prisma_string_filter_ex #33
│ └── [posts]: optional #92
│ └── item: union #91
│ ├── variant_0: struct #86
│ │ └── [every]: optional #85
│ │ └── item: &Post_where #84
│ ├── variant_1: struct #88
│ │ └── [some]: optional #87
│ │ └── item: &Post_where #84
│ └── variant_2: struct #90
│ └── [none]: optional #89
│ └── item: &Post_where #84
├── [id]: optional #79
│ └── item: &_prisma_integer_filter_ex #16
└── [title]: optional #80
└── item: &_prisma_string_filter_ex #33
root: struct 'Post_query_where_input' #135
├── [AND]: optional #132
│ └── item: list #131
│ └── item: &Post_query_where_input #130
├── [NOT]: optional #133
│ └── item: &Post_query_where_input #130
├── [OR]: optional #132
│ └── item: list #131
│ └── item: &Post_query_where_input #130
├── [author]: optional #127
│ └── item: struct 'User_where_excluding_Post' #126
│ ├── [id]: optional #114
│ │ └── item: &_prisma_integer_filter_t1_ex #16
│ ├── [name]: optional #115
│ │ └── item: &_prisma_string_filter_t2_ex #32
│ └── [posts]: optional #124
│ └── item: union #123
│ ├── variant_0: struct #118
│ │ └── [every]: optional #117
│ │ └── item: &Post_where #116
│ ├── variant_1: struct #120
│ │ └── [some]: optional #119
│ │ └── item: &Post_where #116
│ └── variant_2: struct #122
│ └── [none]: optional #121
│ └── item: &Post_where #116
├── [id]: optional #111
│ └── item: &_prisma_integer_filter_t9_ex #53
└── [title]: optional #112
└── item: &_prisma_string_filter_t10_ex #69
Loading

0 comments on commit 2f1186d

Please sign in to comment.