@@ -44,12 +44,12 @@ def create_object(self, **kwargs) -> Result:
44
44
return new_obj
45
45
46
46
def create (
47
- self , deserialize : bool = False , serialize : bool = False , ** kwargs : dict
47
+ self , data : dict , deserialize : bool = False , serialize : bool = False
48
48
) -> Result or dict :
49
49
if deserialize :
50
- kwargs = self .deserialize_data ('input_schema_of_create' , kwargs )
50
+ data = self .deserialize_data ('input_schema_of_create' , data )
51
51
52
- new_object = self .create_object (** kwargs )
52
+ new_object = self .create_object (** data )
53
53
54
54
if serialize :
55
55
return self .serialize_data ('output_schema_of_create' , new_object )
@@ -146,7 +146,7 @@ def _paginate(
146
146
147
147
return items
148
148
149
- def read (
149
+ def paginate (
150
150
self ,
151
151
page : int = 1 ,
152
152
per_page : Optional [int ] = None ,
@@ -196,6 +196,27 @@ def read(
196
196
197
197
return items
198
198
199
+ def read_object (self , id : Any ) -> Result :
200
+
201
+ session = self ._get_option_from_meta ('session' )
202
+ model = self ._get_option_from_meta ('model' )
203
+
204
+ stmt = select (model ).where (model .id == id )
205
+ return session .scalars (stmt ).one ()
206
+
207
+ def read (
208
+ self , data : dict , deserialize : bool = False , serialize : bool = False
209
+ ) -> Result or dict :
210
+ if deserialize :
211
+ data = self .deserialize_data ('input_schema_of_read' , data )
212
+
213
+ object_ = self .read_object (** data )
214
+
215
+ if serialize :
216
+ return self .serialize_data ('output_schema_of_read' , object_ )
217
+
218
+ return object_
219
+
199
220
200
221
class UpdateMixin :
201
222
"""Update object in database.
@@ -222,10 +243,8 @@ def update_object(self, id: Any, **kwargs) -> Result:
222
243
session = self ._get_option_from_meta ('session' )
223
244
model = self ._get_option_from_meta ('model' )
224
245
225
- stmt = update (model ).where (model .id == id ).values (** kwargs )
226
- session .execute (stmt )
227
-
228
- obj = session .scalars (select (model ).where (model .id == id )).one ()
246
+ stmt = update (model ).where (model .id == id ).values (** kwargs ).returning (model )
247
+ obj = session .scalars (stmt ).one ()
229
248
return obj
230
249
231
250
def update (
@@ -253,5 +272,7 @@ def delete_object(self, id: Any) -> None:
253
272
254
273
session .execute (delete (model ).where (model .id == id ))
255
274
256
- def delete (self , id : Any ) -> None :
257
- self .delete_object (id )
275
+ def delete (self , data : dict , deserialize : bool = False ) -> None :
276
+ if deserialize :
277
+ data = self .deserialize_data ('input_schema_of_read' , data )
278
+ self .delete_object (** data )
0 commit comments