@@ -19,11 +19,11 @@ class ModelMetaclass(pydantic.main.ModelMetaclass):
19
19
def to_schema (cls ) -> Schema :
20
20
field_dict = cls .__fields__ .copy ()
21
21
field_dict .pop ("id" , None )
22
- fields = list (map (lambda field : FieldArgs (name = field .name ,
23
- type = field .type_ ,
24
- index = field .field_info .extra .get ("index" , False ),
25
- facet = field .field_info .extra .get ("facet" , False ),
26
- optional = field .field_info .extra .get ("optional" , True )),
22
+ fields = dict (map (lambda field : ( field . name , FieldArgs (name = field .name ,
23
+ type = field .type_ ,
24
+ index = field .field_info .extra .get ("index" , False ),
25
+ facet = field .field_info .extra .get ("facet" , False ),
26
+ optional = field .field_info .extra .get ("optional" , True ) )),
27
27
field_dict .values ()))
28
28
schema = Schema (name = cls .schema_name ,
29
29
fields = fields ,
@@ -33,6 +33,12 @@ def to_schema(cls) -> Schema:
33
33
34
34
return schema
35
35
36
+ def __getattr__ (cls , item ):
37
+ res = cls .schema .fields .get (item , None )
38
+ if res :
39
+ return res
40
+ super ().__getattr__ (item )
41
+
36
42
@property
37
43
def endpoint_path (cls ):
38
44
return f"{ COLLECTIONS_PATH } /{ cls .schema_name } /{ DOC_ENDPOINT } "
@@ -62,7 +68,8 @@ def __new__(mcs, name, bases, namespace, **kwargs):
62
68
namespace .update ({"__client__" : client })
63
69
break
64
70
65
- client .create_collection (ret .to_schema ())
71
+ ret .schema = ret .to_schema ()
72
+ client .create_collection (ret .schema )
66
73
67
74
return ret
68
75
0 commit comments