package com.example.demo.springMongoDBDemo.controller; import com.example.demo.springMongoDBDemo.Service.CustomMongoTemplate; import com.example.demo.springMongoDBDemo.model.Tutorials; import com.mongodb.client.result.UpdateResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api/mongo") public class CustomMongoTemplateController { @Autowired private CustomMongoTemplate customMongoTemplate; @PostMapping("/save") public ResponseEntity<Tutorials> saveTutorials(@RequestBody Tutorials tutorials) { try { Tutorials tutorials1 = customMongoTemplate.save(tutorials); return new ResponseEntity<>(tutorials1, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } @PostMapping("/update") public ResponseEntity<Long> Update(@RequestBody Tutorials tutorials, @PathVariable("title") String title) { try { long update = customMongoTemplate.update(tutorials, title); return new ResponseEntity<>(update, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } @GetMapping("/upsertByTitle") public ResponseEntity<Long> upsertByTitle(@RequestParam String title, @RequestParam String description) { UpdateResult updateResult = customMongoTemplate.upsertByTitle(title, description); if (updateResult == null) { return new ResponseEntity<>(0L, HttpStatus.NO_CONTENT); } else { return new ResponseEntity<>(updateResult.getModifiedCount(), HttpStatus.OK); } } @GetMapping("/findAndModif") public ResponseEntity<Tutorials> findAndModif(@RequestParam String title, @RequestParam String description){ ResponseEntity<Tutorials> tutorialsResponseEntity = new ResponseEntity<>(customMongoTemplate.findAndModify(title, description), HttpStatus.OK); return tutorialsResponseEntity; } }