@@ -200,6 +200,38 @@ def __init__(
200200 self .sa_relationship_kwargs = sa_relationship_kwargs
201201
202202
203+ @dataclass
204+ class FieldInfoMetadata :
205+ primary_key : Union [bool , UndefinedType ] = Undefined
206+ nullable : Union [bool , UndefinedType ] = Undefined
207+ foreign_key : Any = Undefined
208+ ondelete : Union [OnDeleteType , UndefinedType ] = Undefined
209+ unique : Union [bool , UndefinedType ] = Undefined
210+ index : Union [bool , UndefinedType ] = Undefined
211+ sa_type : Union [type [Any ], UndefinedType ] = Undefined
212+ sa_column : Union [Column [Any ], UndefinedType ] = Undefined
213+ sa_column_args : Union [Sequence [Any ], UndefinedType ] = Undefined
214+ sa_column_kwargs : Union [Mapping [str , Any ], UndefinedType ] = Undefined
215+
216+
217+ def _get_sqlmodel_field_metadata (field_info : Any ) -> Optional [FieldInfoMetadata ]:
218+ metadata_items = getattr (field_info , "metadata" , None )
219+ if metadata_items :
220+ for meta in metadata_items :
221+ if isinstance (meta , FieldInfoMetadata ):
222+ return meta
223+ return None
224+
225+
226+ def _get_sqlmodel_field_value (
227+ field_info : Any , attribute : str , default : Any = Undefined
228+ ) -> Any :
229+ metadata = _get_sqlmodel_field_metadata (field_info )
230+ if metadata is not None and hasattr (metadata , attribute ):
231+ return getattr (metadata , attribute )
232+ return getattr (field_info , attribute , default )
233+
234+
203235# include sa_type, sa_column_args, sa_column_kwargs
204236@overload
205237def Field (
@@ -330,38 +362,6 @@ def Field(
330362) -> Any : ...
331363
332364
333- @dataclass
334- class FieldInfoMetadata :
335- primary_key : Union [bool , UndefinedType ] = Undefined
336- nullable : Union [bool , UndefinedType ] = Undefined
337- foreign_key : Any = Undefined
338- ondelete : Union [OnDeleteType , UndefinedType ] = Undefined
339- unique : Union [bool , UndefinedType ] = Undefined
340- index : Union [bool , UndefinedType ] = Undefined
341- sa_type : Union [type [Any ], UndefinedType ] = Undefined
342- sa_column : Union [Column [Any ], UndefinedType ] = Undefined
343- sa_column_args : Union [Sequence [Any ], UndefinedType ] = Undefined
344- sa_column_kwargs : Union [Mapping [str , Any ], UndefinedType ] = Undefined
345-
346-
347- def _get_sqlmodel_field_metadata (field_info : Any ) -> Optional [FieldInfoMetadata ]:
348- metadata_items = getattr (field_info , "metadata" , None )
349- if metadata_items :
350- for meta in metadata_items :
351- if isinstance (meta , FieldInfoMetadata ):
352- return meta
353- return None
354-
355-
356- def _get_sqlmodel_field_value (
357- field_info : Any , attribute : str , default : Any = Undefined
358- ) -> Any :
359- metadata = _get_sqlmodel_field_metadata (field_info )
360- if metadata is not None and hasattr (metadata , attribute ):
361- return getattr (metadata , attribute )
362- return getattr (field_info , attribute , default )
363-
364-
365365def Field (
366366 default : Any = Undefined ,
367367 * ,
0 commit comments