@@ -14,13 +14,6 @@ def __init__(self, ob: ObjectBox, box: 'Box'):
1414 self ._entity = box ._entity
1515 self ._c_builder = obx_query_builder (ob ._c_store , box ._entity .id )
1616
17- def _get_property_id (self , prop : Union [int , str , Property ]) -> int :
18- if type (prop ) is int :
19- return prop
20- elif type (prop ) is str :
21- prop = self ._entity .get_property (prop )
22- return prop ._id
23-
2417 def close (self ) -> int :
2518 return obx_qb_close (self ._c_builder )
2619
@@ -31,101 +24,97 @@ def error_message(self) -> str:
3124 return obx_qb_error_message (self ._c_builder )
3225
3326 def equals_string (self , prop : Union [int , str , Property ], value : str , case_sensitive : bool = True ) -> obx_qb_cond :
34- prop_id = self ._get_property_id (prop )
27+ prop_id = self ._entity . get_property_id (prop )
3528 cond = obx_qb_equals_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
3629 return cond
3730
3831 def not_equals_string (self , prop : Union [int , str , Property ], value : str ,
3932 case_sensitive : bool = True ) -> obx_qb_cond :
40- prop_id = self ._get_property_id (prop )
33+ prop_id = self ._entity . get_property_id (prop )
4134 cond = obx_qb_not_equals_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
4235 return cond
4336
4437 def contains_string (self , prop : Union [int , str , Property ], value : str , case_sensitive : bool = True ) -> obx_qb_cond :
45- prop_id = self ._get_property_id (prop )
38+ prop_id = self ._entity . get_property_id (prop )
4639 cond = obx_qb_contains_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
4740 return cond
4841
4942 def starts_with_string (self , prop : Union [int , str , Property ], value : str ,
5043 case_sensitive : bool = True ) -> obx_qb_cond :
51- prop_id = self ._get_property_id (prop )
44+ prop_id = self ._entity . get_property_id (prop )
5245 cond = obx_qb_starts_with_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
5346 return cond
5447
5548 def ends_with_string (self , prop : Union [int , str , Property ], value : str , case_sensitive : bool = True ) -> obx_qb_cond :
56- prop_id = self ._get_property_id (prop )
49+ prop_id = self ._entity . get_property_id (prop )
5750 cond = obx_qb_ends_with_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
5851 return cond
5952
6053 def greater_than_string (self , prop : Union [int , str , Property ], value : str ,
6154 case_sensitive : bool = True ) -> obx_qb_cond :
62- prop_id = self ._get_property_id (prop )
55+ prop_id = self ._entity . get_property_id (prop )
6356 cond = obx_qb_greater_than_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
6457 return cond
6558
6659 def greater_or_equal_string (self , prop : Union [int , str , Property ], value : str ,
6760 case_sensitive : bool = True ) -> obx_qb_cond :
68- prop_id = self ._get_property_id (prop )
61+ prop_id = self ._entity . get_property_id (prop )
6962 cond = obx_qb_greater_or_equal_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
7063 return cond
7164
7265 def less_than_string (self , prop : Union [int , str , Property ], value : str , case_sensitive : bool = True ) -> obx_qb_cond :
73- prop_id = self ._get_property_id (prop )
66+ prop_id = self ._entity . get_property_id (prop )
7467 cond = obx_qb_less_than_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
7568 return cond
7669
7770 def less_or_equal_string (self , prop : Union [int , str , Property ], value : str ,
7871 case_sensitive : bool = True ) -> obx_qb_cond :
79- prop_id = self ._get_property_id (prop )
72+ prop_id = self ._entity . get_property_id (prop )
8073 cond = obx_qb_less_or_equal_string (self ._c_builder , prop_id , c_str (value ), case_sensitive )
8174 return cond
8275
8376 def equals_int (self , prop : Union [int , str , Property ], value : int ) -> obx_qb_cond :
84- prop_id = self ._get_property_id (prop )
77+ prop_id = self ._entity . get_property_id (prop )
8578 cond = obx_qb_equals_int (self ._c_builder , prop_id , value )
8679 return cond
8780
8881 def not_equals_int (self , prop : Union [int , str , Property ], value : int ) -> obx_qb_cond :
89- prop_id = self ._get_property_id (prop )
82+ prop_id = self ._entity . get_property_id (prop )
9083 cond = obx_qb_not_equals_int (self ._c_builder , prop_id , value )
9184 return cond
9285
9386 def greater_than_int (self , prop : Union [int , str , Property ], value : int ) -> obx_qb_cond :
94- prop_id = self ._get_property_id (prop )
87+ prop_id = self ._entity . get_property_id (prop )
9588 cond = obx_qb_greater_than_int (self ._c_builder , prop_id , value )
9689 return cond
9790
9891 def greater_or_equal_int (self , prop : Union [int , str , Property ], value : int ) -> obx_qb_cond :
99- prop_id = self ._get_property_id (prop )
92+ prop_id = self ._entity . get_property_id (prop )
10093 cond = obx_qb_greater_or_equal_int (self ._c_builder , prop_id , value )
10194 return cond
10295
10396 def less_than_int (self , prop : Union [int , str , Property ], value : int ) -> obx_qb_cond :
104- prop_id = self ._get_property_id (prop )
97+ prop_id = self ._entity . get_property_id (prop )
10598 cond = obx_qb_less_than_int (self ._c_builder , prop_id , value )
10699 return cond
107100
108101 def less_or_equal_int (self , prop : Union [int , str , Property ], value : int ) -> obx_qb_cond :
109- prop_id = self ._get_property_id (prop )
102+ prop_id = self ._entity . get_property_id (prop )
110103 cond = obx_qb_less_or_equal_int (self ._c_builder , prop_id , value )
111104 return cond
112105
113106 def between_2ints (self , prop : Union [int , str , Property ], value_a : int , value_b : int ) -> obx_qb_cond :
114- prop_id = self ._get_property_id (prop )
107+ prop_id = self ._entity . get_property_id (prop )
115108 cond = obx_qb_between_2ints (self ._c_builder , prop_id , value_a , value_b )
116109 return cond
117110
118111 def nearest_neighbors_f32 (self , prop : Union [int , str , Property ], query_vector : Union [np .ndarray , List [float ]],
119112 element_count : int ):
120- if isinstance (query_vector , np .ndarray ):
121- if query_vector .dtype != np .float32 :
122- raise Exception (f"query_vector dtype must be float32" )
123- query_vector_data = query_vector .ctypes .data_as (ctypes .POINTER (ctypes .c_float ))
124- else : # List[float]
125- query_vector_data = py_list_to_c_array (query_vector , ctypes .c_float )
126-
127- prop_id = self ._get_property_id (prop )
128- cond = obx_qb_nearest_neighbors_f32 (self ._c_builder , prop_id , query_vector_data , element_count )
113+ if isinstance (query_vector , np .ndarray ) and query_vector .dtype != np .float32 :
114+ raise Exception (f"query_vector dtype is expected to be np.float32, got: { query_vector .dtype } " )
115+ prop_id = self ._entity .get_property_id (prop )
116+ c_query_vector = py_list_to_c_array (query_vector , ctypes .c_float )
117+ cond = obx_qb_nearest_neighbors_f32 (self ._c_builder , prop_id , c_query_vector , element_count )
129118 return cond
130119
131120 def any (self , conditions : List [obx_qb_cond ]) -> obx_qb_cond :
0 commit comments