Open proever opened 3 months ago
looks like some (many) tests are failing, I'll try to fix them!
Is this feature something that should work with Pydantic v1 too? I'm not too familiar with it.
I've just hit exactly this problem; is there any chance you could update your MR please @proever?
Currently, it is not possible to specify a
SQLModel
with anOptional
complex type, such as aDecimal
, as follows:Doing so results in the following error (see #67, #312) in
get_sqlalchemy_type
:This PR attempts to fix this issue by adding a check in
get_sqlalchemy_type
for whether the type of theField
is atyping_extensions.AnnotatedAlias
. If it is, instead of using the class of theAnnotatedAlias
for the following comparisons (which results in the above error), it usesAnnotatedAlias.__origin__
. Similarly, it infers the metadata fromAnnotatedAlias.__metadata__
instead of theAnnotatedAlias
itself.In my testing, this approach seems to work well. I also added a simple test here that checks whether restrictions on an optional annotated field are enforced on the database side. It could probably be improved or extended.