1 package net.avcompris.examples.users3.dao;
2
3 import javax.annotation.Nullable;
4
5 import net.avcompris.commons3.dao.EntitiesDtoQuery;
6 import net.avcompris.examples.users3.query.UserFiltering;
7
8 public interface UsersDtoQuery extends EntitiesDtoQuery<UserFiltering, UserFiltering.Field> {
9
10 @Override
11 @Nullable
12 UserFiltering getFiltering();
13
14 enum SortBy implements EntitiesDtoQuery.SortBy {
15
16 SORT_BY_USERNAME, SORT_BY_USERNAME_DESC,
17 SORT_BY_ROLENAME, SORT_BY_ROLENAME_DESC,
18 SORT_BY_ENABLED, SORT_BY_ENABLED_DESC,
19 SORT_BY_CREATED_AT, SORT_BY_CREATED_AT_DESC,
20 SORT_BY_UPDATED_AT, SORT_BY_UPDATED_AT_DESC,
21 SORT_BY_LAST_ACTIVE_AT, SORT_BY_LAST_ACTIVE_AT_DESC,
22 SORT_BY_REVISION, SORT_BY_REVISION_DESC;
23
24
25
26
27 private final String sqlField;
28
29
30
31
32 private final boolean isDesc;
33
34 SortBy() {
35
36 this.sqlField = EntitiesDtoQuery.SortBy.toSqlField(name());
37 this.isDesc = EntitiesDtoQuery.SortBy.isDesc(name());
38 }
39
40 @Override
41 public String toSqlField() {
42
43 return sqlField;
44 }
45
46 @Override
47 public boolean isDesc() {
48
49 return isDesc;
50 }
51 }
52
53 enum Expand implements EntitiesDtoQuery.Expand {
54 EXPAND_ALL,
55 EXPAND_USERNAME,
56 EXPAND_ROLENAME,
57 EXPAND_ENABLED,
58 EXPAND_CREATED_AT,
59 EXPAND_UPDATED_AT,
60 EXPAND_LAST_ACTIVE_AT,
61 }
62
63 @Override
64 SortBy[] getSortBys();
65
66 @Override
67 Expand[] getExpands();
68
69
70 UsersDtoQuery setFiltering(@Nullable UserFiltering filtering);
71
72 UsersDtoQuery setSortBys(SortBy... sortBys);
73
74 UsersDtoQuery setExpands(Expand... expands);
75
76 @Override
77 UsersDtoQuery setStart(int start);
78
79 @Override
80 UsersDtoQuery setLimit(int limit);
81 }