package com.nisum.demo.mongo.controller; import com.nisum.demo.mongo.model.UserRequest; import com.nisum.demo.mongo.model.UserResponse; import com.nisum.demo.mongo.repository.model.User; import com.nisum.demo.mongo.service.MongoDBDemoService; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @RestController public class MongoDBDemoController { private MongoDBDemoService mongoDBDemoService; public MongoDBDemoController(MongoDBDemoService mongoDBDemoService) { this.mongoDBDemoService = mongoDBDemoService; } @GetMapping(value = "/user/search/all", produces = {"application/json"}) ResponseEntity<UserResponse> searchAllUsers() { UserResponse response = mongoDBDemoService.getAllUserData(); return new ResponseEntity<>(response, HttpStatus.OK); } @GetMapping(value = "/user/search", produces = {"application/json"}) ResponseEntity<UserResponse> searchUserById(@RequestParam(required = false) String byUserId, @RequestParam(required = false) String byUserFirstName) throws Exception { UserResponse response = mongoDBDemoService.getUserData(byUserId, byUserFirstName); return new ResponseEntity<>(response, HttpStatus.OK); } @PostMapping(value = "/user/add", consumes = {"application/json"}, produces = {"application/json"}) ResponseEntity<UserResponse> addUser(@RequestBody UserRequest user) { mongoDBDemoService.addUser(user); return new ResponseEntity<UserResponse>(HttpStatus.OK); } @PostMapping(value = "/user/update", consumes = {"application/json"}, produces = {"application/json"}) ResponseEntity<UserResponse> updateUser(@RequestBody UserRequest user) throws Exception { mongoDBDemoService.updateUser(user); return new ResponseEntity<UserResponse>(HttpStatus.OK); } @DeleteMapping(value = "/user", produces = {"application/json"}) ResponseEntity<UserResponse> deleteUserById(@RequestParam String byUserId) { mongoDBDemoService.deleteUserById(byUserId); return new ResponseEntity<>(HttpStatus.OK); } @DeleteMapping(value = "/user/delete/all", produces = {"application/json"}) ResponseEntity<UserResponse> deleteAll() { mongoDBDemoService.deleteAll(); return new ResponseEntity<>(HttpStatus.OK); } }