MCPcopy Create free account
hub / github.com/MarquezProject/marquez / SearchResource

Class SearchResource

api/src/main/java/marquez/api/SearchResource.java:36–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34import marquez.db.SearchDao;
35
36@Slf4j
37@Path("/api/v1/search")
38public class SearchResource {
39 private static final String YYYY_MM_DD = "^\\d{4}-\\d{2}-\\d{2}$";
40 private static final String DEFAULT_SORT = "name";
41 private static final String DEFAULT_LIMIT = "10";
42 private static final int MIN_LIMIT = 0;
43
44 private final SearchDao searchDao;
45
46 public SearchResource(@NonNull final SearchDao searchDao) {
47 this.searchDao = searchDao;
48 }
49
50 @Timed
51 @ResponseMetered
52 @ExceptionMetered
53 @GET
54 @Produces(APPLICATION_JSON)
55 public Response search(
56 @QueryParam("q") @NotBlank String query,
57 @QueryParam("filter") @Nullable SearchFilter filter,
58 @QueryParam("sort") @DefaultValue(DEFAULT_SORT) SearchSort sort,
59 @QueryParam("limit") @DefaultValue(DEFAULT_LIMIT) @Min(MIN_LIMIT) int limit,
60 @QueryParam("namespace") @Nullable String namespace,
61 @QueryParam("before") @Valid @Pattern(regexp = YYYY_MM_DD) @Nullable String before,
62 @QueryParam("after") @Valid @Pattern(regexp = YYYY_MM_DD) @Nullable String after) {
63 final List<SearchResult> searchResults =
64 searchDao.search(
65 query,
66 filter,
67 sort,
68 limit,
69 namespace,
70 toLocateDateOrNull(before),
71 toLocateDateOrNull(after));
72 return Response.ok(new SearchResults(searchResults)).build();
73 }
74
75 /** Wrapper for {@link SearchResult}s which also contains a {@code total count}. */
76 @ToString
77 public static final class SearchResults {
78 @Getter private final int totalCount;
79 @Getter private final List<SearchResult> results;
80
81 @JsonCreator
82 public SearchResults(@NonNull final List<SearchResult> results) {
83 this.totalCount = results.size();
84 this.results = results;
85 }
86 }
87}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected