Skip to content

Commit

Permalink
Adding basis of search functionality.
Browse files Browse the repository at this point in the history
  • Loading branch information
haxwell committed Oct 3, 2024
1 parent 7047102 commit 6b417a2
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.savvato.tribeapp.controllers;

import com.savvato.tribeapp.dto.SearchResponseDTO;
import com.savvato.tribeapp.services.SearchService;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/api/search")
@Tag(name = "search", description = "search for a user that matches the given attributes")
public class SearchAPIController {

@Autowired SearchService searchService;

// @GetSearch
@GetMapping
public ResponseEntity<SearchResponseDTO> search(
@Parameter(description = "list of phrases to match", example = "q=plays chess&q=cooks pasta") @RequestParam("q")
List<String> query,
@Parameter(description = "The user ID", example = "1") @RequestParam("userId")
Long userId) {
Optional<SearchResponseDTO> opt = searchService.search(userId, query);
if (opt.isPresent()) {
return ResponseEntity.status(HttpStatus.OK).body(opt.get());
} else {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.savvato.tribeapp.controllers.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import java.util.List;

@Schema(description = "A request to connect two users")
public class SearchRequest {
@Schema(example = "1")
public Long requestingUserId;

@Schema(example = "plays chess, cooks pasta")
public List<String> phrases;
}
7 changes: 7 additions & 0 deletions src/main/java/com/savvato/tribeapp/dto/SearchResponseDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.savvato.tribeapp.dto;

import lombok.Builder;

@Builder
public class SearchResponseDTO {
}
10 changes: 10 additions & 0 deletions src/main/java/com/savvato/tribeapp/services/SearchService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.savvato.tribeapp.services;

import com.savvato.tribeapp.dto.SearchResponseDTO;

import java.util.List;
import java.util.Optional;

public interface SearchService {
Optional<SearchResponseDTO> search(Long requestingUserId, List<String> phrases);
}
15 changes: 15 additions & 0 deletions src/main/java/com/savvato/tribeapp/services/SearchServiceImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.savvato.tribeapp.services;

import com.savvato.tribeapp.dto.SearchResponseDTO;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Optional;

@Service
public class SearchServiceImpl implements SearchService {
@Override
public Optional<SearchResponseDTO> search(Long requestingUserId, List<String> phrases) {
return Optional.empty();
}
}

0 comments on commit 6b417a2

Please sign in to comment.