@@ -1756,3 +1756,80 @@ define_sql_function! {
1756
1756
/// ```
1757
1757
fn jsonb_typeof<E : JsonbOrNullableJsonb + SingleValue + MaybeNullableValue <Text >>( e: E ) -> E :: Out ;
1758
1758
}
1759
+
1760
+ #[ cfg( feature = "postgres_backend" ) ]
1761
+ define_sql_function ! {
1762
+ /// Converts the given json value to pretty-printed, indented text
1763
+ ///
1764
+ /// # Example
1765
+ ///
1766
+ /// ```rust
1767
+ /// # include!("../../doctest_setup.rs");
1768
+ /// #
1769
+ /// # fn main() {
1770
+ /// # #[cfg(feature = "serde_json")]
1771
+ /// # run_test().unwrap();
1772
+ /// # }
1773
+ /// #
1774
+ /// # #[cfg(feature = "serde_json")]
1775
+ /// # fn run_test() -> QueryResult<()> {
1776
+ /// # use diesel::dsl::jsonb_pretty;
1777
+ /// # use serde_json::{json, Value};
1778
+ /// # use diesel::sql_types::{Jsonb, Nullable};
1779
+ /// # let connection = &mut establish_connection();
1780
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!([{"f1":1,"f2":null},2,null,3])))
1781
+ /// .get_result::<String>(connection)?;
1782
+ ///
1783
+ /// assert_eq!(r#"[
1784
+ /// {
1785
+ /// "f1": 1,
1786
+ /// "f2": null
1787
+ /// },
1788
+ /// 2,
1789
+ /// null,
1790
+ /// 3
1791
+ /// ]"#, result);
1792
+ ///
1793
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!({"a": 1, "b": "cd"})))
1794
+ /// .get_result::<String>(connection)?;
1795
+ ///
1796
+ /// assert_eq!(r#"{
1797
+ /// "a": 1,
1798
+ /// "b": "cd"
1799
+ /// }"#, result);
1800
+ ///
1801
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!("abc")))
1802
+ /// .get_result::<String>(connection)?;
1803
+ ///
1804
+ /// assert_eq!(r#""abc""#, result);
1805
+ ///
1806
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!(22)))
1807
+ /// .get_result::<String>(connection)?;
1808
+ ///
1809
+ /// assert_eq!(r#"22"#, result);
1810
+ ///
1811
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!(false)))
1812
+ /// .get_result::<String>(connection)?;
1813
+ ///
1814
+ /// assert_eq!(r#"false"#, result);
1815
+ ///
1816
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!(null)))
1817
+ /// .get_result::<String>(connection)?;
1818
+ ///
1819
+ /// assert_eq!(r#"null"#, result);
1820
+ ///
1821
+ /// let result = diesel::select(jsonb_pretty::<Jsonb, _>(json!({})))
1822
+ /// .get_result::<String>(connection)?;
1823
+ ///
1824
+ /// assert_eq!(r#"{
1825
+ /// }"#, result);
1826
+ ///
1827
+ /// let result = diesel::select(jsonb_pretty::<Nullable<Jsonb>, _>(None::<Value>))
1828
+ /// .get_result::<Option<String>>(connection)?;
1829
+ ///
1830
+ /// assert!(result.is_none());
1831
+ /// # Ok(())
1832
+ /// # }
1833
+ /// ```
1834
+ fn jsonb_pretty<E : JsonbOrNullableJsonb + SingleValue + MaybeNullableValue <Text >>( e: E ) -> E :: Out ;
1835
+ }
0 commit comments