33import org .hswebframework .ezorm .rdb .executor .SqlRequest ;
44import org .hswebframework .ezorm .rdb .executor .wrapper .ResultWrappers ;
55import org .hswebframework .ezorm .rdb .operator .DatabaseOperator ;
6+ import org .hswebframework .ezorm .core .param .Sort ;
67import org .hswebframework .web .api .crud .entity .QueryParamEntity ;
78import org .hswebframework .web .crud .TestApplication ;
89import org .junit .Assert ;
1314import org .springframework .test .context .junit4 .SpringJUnit4ClassRunner ;
1415import reactor .test .StepVerifier ;
1516
17+ import java .util .ArrayList ;
18+
1619import static org .junit .jupiter .api .Assertions .*;
1720
1821@ SpringBootTest (classes = TestApplication .class )
@@ -1093,4 +1096,54 @@ public void testAggregateFunctions() {
10931096 // 验证SQL可以执行
10941097 executeAndVerify (request );
10951098 }
1096- }
1099+
1100+ @ Test
1101+ public void testSort () {
1102+ QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
1103+ database ,
1104+ "select t.id, t.name from s_test t group by t.id, t.name" );
1105+
1106+ QueryParamEntity param = QueryParamEntity .of ();
1107+ param .setSorts (new ArrayList <>());
1108+
1109+ Sort sort = new Sort ();
1110+ sort .setName ("name" );
1111+ sort .setOrder ("desc" );
1112+ param .getSorts ().add (sort );
1113+
1114+ SqlRequest request = analyzer .refactor (param );
1115+ String sql = request .getSql ().toLowerCase ();
1116+
1117+ System .out .println (request );
1118+ assertTrue (sql .contains ("order by t.\" name\" desc" ));
1119+
1120+ executeAndVerify (request );
1121+ }
1122+
1123+ @ Test
1124+ public void testCustomSortFunctionFallbackToColumn () {
1125+ QueryAnalyzerImpl analyzer = new QueryAnalyzerImpl (
1126+ database ,
1127+ "select t.id, t.name from s_test t" );
1128+
1129+ QueryParamEntity param = QueryParamEntity .of ();
1130+ param .setSorts (new ArrayList <>());
1131+
1132+ Sort sort = new Sort ();
1133+ sort .setName ("name" );
1134+ sort .setType ("not_exists_function" );
1135+ sort .setOrder ("asc" );
1136+ param .getSorts ().add (sort );
1137+
1138+ SqlRequest request = analyzer .refactor (param );
1139+ String sql = request .getSql ().toLowerCase ();
1140+
1141+ System .out .println (request );
1142+ assertTrue (sql .contains ("order by" ));
1143+ assertFalse (sql .contains ("not_exists_function(" ));
1144+ assertTrue (sql .contains ("name" ));
1145+ assertTrue (sql .contains ("asc" ));
1146+
1147+ executeAndVerify (request );
1148+ }
1149+ }
0 commit comments