Skip to content

Commit 916aafb

Browse files
committed
add big picture of searchV2
1 parent d6c7970 commit 916aafb

4 files changed

Lines changed: 12 additions & 7 deletions

File tree

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ This project, implement instance of basic feature, <br> you maybe want use for A
5858
4 - log for validation and save error-message in log file <br>
5959

6060
### search feature
61-
1 - create your own search model <br>
62-
2 - use pagination for search <br>
63-
3 - create query dynamic base on search request <br>
64-
4 - use order and direction for sort data <br>
61+
1 - query clause, order for result and pagination can define in client Request as queryString and handle in AbstractController <br>
62+
2 - buildNativeQueryCondition method in Utils class use for create native query base on request queryString <br>
63+
3 - dynamic order and direction for sort data handle in daoRepository <br>
64+
4 - more detail about search feature, see searchEngineV2.drawio <br>
6565
5 - sample rest search request: <br>
6666
- http://localhost:9090/api/v1/user/search/v2?firstName=h&orderBy=firstName_asc, gender_desc&page=1&size=5 <br>
6767

searchEngineV2.drawio

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2021-10-07T15:40:44.638Z" agent="5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/15.4.0 Chrome/91.0.4472.164 Electron/13.5.0 Safari/537.36" etag="tX5ahwpyKDNIn9knfB40" version="15.4.0" type="device"><diagram id="mwxW8e1p7DTVNpN9ytL4" name="Page-1">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</diagram></mxfile>

src/main/java/ir/bigz/springbootreal/dal/DaoRepositoryImpl.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package ir.bigz.springbootreal.dal;
22
import ir.bigz.springbootreal.dto.PageResult;
33
import ir.bigz.springbootreal.dto.PagedQuery;
4+
import ir.bigz.springbootreal.exception.AppException;
5+
import ir.bigz.springbootreal.exception.HttpErrorCode;
46
import org.hibernate.Session;
57
import org.hibernate.jpa.QueryHints;
68
import org.springframework.data.domain.Page;
@@ -150,7 +152,6 @@ public PageResult<T> pageCreateQuery(String nativeQuery, PagedQuery pagedQuery,
150152
String[] orderField = orderParam.split("_");
151153
Field field = getDeclaredField(daoType, orderField[0]);
152154
if(field == null){
153-
System.out.println("wrong ordering field = " + orderParam);
154155
return;
155156
}
156157
String orderColumn = field.getName().replaceAll("([A-Z])", "_$1").toLowerCase();
@@ -163,7 +164,9 @@ public PageResult<T> pageCreateQuery(String nativeQuery, PagedQuery pagedQuery,
163164
}
164165
orderString.append(orderColumn + " " + order);
165166
}catch (Exception e){
166-
System.out.println("wrong ordering field = " + orderParam);
167+
throw AppException.newInstance(
168+
HttpErrorCode.ERR_10705, String.format("field %s ordering is wrong", orderParam)
169+
);
167170
}
168171
}
169172
);

src/main/java/ir/bigz/springbootreal/exception/HttpErrorCode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ public enum HttpErrorCode {
88
ERR_10701 (10701, "process of the request has been error", HttpStatus.BAD_REQUEST),
99
ERR_10702 (10702, "User Not Found", HttpStatus.NOT_FOUND),
1010
ERR_10703 (10703, "Invalid Entity For Update", HttpStatus.BAD_REQUEST),
11-
ERR_10704 (10704, "validation Error", HttpStatus.BAD_REQUEST);
11+
ERR_10704 (10704, "validation Error", HttpStatus.BAD_REQUEST),
12+
ERR_10705 (10705, "create query process has been error", HttpStatus.BAD_REQUEST);
1213

1314
private final int code;
1415
private final HttpStatus status;

0 commit comments

Comments
 (0)