File tree 5 files changed +52
-1
lines changed
5 files changed +52
-1
lines changed Original file line number Diff line number Diff line change @@ -676,6 +676,7 @@ pub trait QueryBuilder:
676
676
Function :: Custom ( _) => "" ,
677
677
Function :: Random => self . random_function( ) ,
678
678
Function :: Round => "ROUND" ,
679
+ Function :: Md5 => "MD5" ,
679
680
#[ cfg( feature = "backend-postgres" ) ]
680
681
Function :: PgFunction ( _) => unimplemented!( ) ,
681
682
}
Original file line number Diff line number Diff line change @@ -1980,7 +1980,7 @@ impl Expr {
1980
1980
SimpleExpr :: FunctionCall ( func)
1981
1981
}
1982
1982
1983
- /// Keyword `CURRENT_TIMESTAMP `.
1983
+ /// Keyword `CURRENT_DATE `.
1984
1984
///
1985
1985
/// # Examples
1986
1986
///
Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ pub enum Function {
25
25
BitOr ,
26
26
Random ,
27
27
Round ,
28
+ Md5 ,
28
29
#[ cfg( feature = "backend-postgres" ) ]
29
30
PgFunction ( PgFunction ) ,
30
31
}
@@ -725,4 +726,33 @@ impl Func {
725
726
pub fn random ( ) -> FunctionCall {
726
727
FunctionCall :: new ( Function :: Random )
727
728
}
729
+
730
+ /// Call `MD5` function, this is only available in Postgres and MySQL.
731
+ ///
732
+ /// # Examples
733
+ ///
734
+ /// ```
735
+ /// use sea_query::{tests_cfg::*, *};
736
+ ///
737
+ /// let query = Query::select()
738
+ /// .expr(Func::md5(Expr::col((Char::Table, Char::Character))))
739
+ /// .from(Char::Table)
740
+ /// .to_owned();
741
+ ///
742
+ /// assert_eq!(
743
+ /// query.to_string(MysqlQueryBuilder),
744
+ /// r#"SELECT MD5(`character`.`character`) FROM `character`"#
745
+ /// );
746
+ ///
747
+ /// assert_eq!(
748
+ /// query.to_string(PostgresQueryBuilder),
749
+ /// r#"SELECT MD5("character"."character") FROM "character""#
750
+ /// );
751
+ /// ```
752
+ pub fn md5 < T > ( expr : T ) -> FunctionCall
753
+ where
754
+ T : Into < SimpleExpr > ,
755
+ {
756
+ FunctionCall :: new ( Function :: Md5 ) . arg ( expr)
757
+ }
728
758
}
Original file line number Diff line number Diff line change @@ -1061,6 +1061,16 @@ fn select_61() {
1061
1061
) ;
1062
1062
}
1063
1063
1064
+ #[ test]
1065
+ fn md5_fn ( ) {
1066
+ assert_eq ! (
1067
+ Query :: select( )
1068
+ . expr( Func :: md5( Expr :: val( "test" ) ) )
1069
+ . to_string( MysqlQueryBuilder ) ,
1070
+ r#"SELECT MD5('test')"#
1071
+ ) ;
1072
+ }
1073
+
1064
1074
#[ test]
1065
1075
#[ allow( clippy:: approx_constant) ]
1066
1076
fn insert_2 ( ) {
Original file line number Diff line number Diff line change @@ -1925,6 +1925,16 @@ fn sub_query_with_fn() {
1925
1925
) ;
1926
1926
}
1927
1927
1928
+ #[ test]
1929
+ fn md5_fn ( ) {
1930
+ assert_eq ! (
1931
+ Query :: select( )
1932
+ . expr( Func :: md5( Expr :: val( "test" ) ) )
1933
+ . to_string( PostgresQueryBuilder ) ,
1934
+ r#"SELECT MD5('test')"#
1935
+ ) ;
1936
+ }
1937
+
1928
1938
#[ test]
1929
1939
fn select_array_contains_bin_oper ( ) {
1930
1940
assert_eq ! (
You can’t perform that action at this time.
0 commit comments