@@ -196,8 +196,59 @@ where
196196 }
197197}
198198
199- // We don't have to implement Encode for JsonRawValue because that's covered by the default
200- // implementation for Encode
199+ impl < DB > Type < DB > for Box < JsonRawValue >
200+ where
201+ for < ' a > Json < & ' a Self > : Type < DB > ,
202+ DB : Database ,
203+ {
204+ fn type_info ( ) -> DB :: TypeInfo {
205+ <Json < & Self > as Type < DB > >:: type_info ( )
206+ }
207+
208+ fn compatible ( ty : & DB :: TypeInfo ) -> bool {
209+ <Json < & Self > as Type < DB > >:: compatible ( ty)
210+ }
211+ }
212+
213+ impl < ' q , DB > Encode < ' q , DB > for JsonRawValue
214+ where
215+ for < ' a > Json < & ' a Self > : Encode < ' q , DB > ,
216+ DB : Database ,
217+ {
218+ fn encode_by_ref (
219+ & self ,
220+ buf : & mut <DB as Database >:: ArgumentBuffer < ' q > ,
221+ ) -> Result < IsNull , BoxDynError > {
222+ <Json < & Self > as Encode < ' q , DB > >:: encode ( Json ( self ) , buf)
223+ }
224+ }
225+
226+ impl < ' q , DB > Encode < ' q , DB > for & ' q JsonRawValue
227+ where
228+ for < ' a > Json < & ' a Self > : Encode < ' q , DB > ,
229+ DB : Database ,
230+ {
231+ fn encode_by_ref (
232+ & self ,
233+ buf : & mut <DB as Database >:: ArgumentBuffer < ' q > ,
234+ ) -> Result < IsNull , BoxDynError > {
235+ <Json < & Self > as Encode < ' q , DB > >:: encode ( Json ( self ) , buf)
236+ }
237+ }
238+
239+ impl < ' q , DB > Encode < ' q , DB > for Box < JsonRawValue >
240+ where
241+ for < ' a > Json < & ' a Self > : Encode < ' q , DB > ,
242+ DB : Database ,
243+ {
244+ fn encode_by_ref (
245+ & self ,
246+ buf : & mut <DB as Database >:: ArgumentBuffer < ' q > ,
247+ ) -> Result < IsNull , BoxDynError > {
248+ <Json < & Self > as Encode < ' q , DB > >:: encode ( Json ( self ) , buf)
249+ }
250+ }
251+
201252impl < ' r , DB > Decode < ' r , DB > for & ' r JsonRawValue
202253where
203254 Json < Self > : Decode < ' r , DB > ,
@@ -207,3 +258,13 @@ where
207258 <Json < Self > as Decode < DB > >:: decode ( value) . map ( |item| item. 0 )
208259 }
209260}
261+
262+ impl < ' r , DB > Decode < ' r , DB > for Box < JsonRawValue >
263+ where
264+ Json < Self > : Decode < ' r , DB > ,
265+ DB : Database ,
266+ {
267+ fn decode ( value : <DB as Database >:: ValueRef < ' r > ) -> Result < Self , BoxDynError > {
268+ <Json < Self > as Decode < DB > >:: decode ( value) . map ( |item| item. 0 )
269+ }
270+ }
0 commit comments