package com.example.demo.springMongoDBDemo.controller; import com.example.demo.springMongoDBDemo.model.Tutorials; import com.example.demo.springMongoDBDemo.repository.CustomQueryRepository; import com.example.demo.springMongoDBDemo.repository.TutorialsRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Optional; @RestController @RequestMapping("/api/tutorials") public class TutorialsController { @Autowired private TutorialsRepository tutorialsRepository; @Autowired private CustomQueryRepository customQueryRepository; @PostMapping("/save") public ResponseEntity<Tutorials> saveTutorials(@RequestBody Tutorials tutorials) { try { Tutorials tutorials1 = tutorialsRepository.insert(tutorials); return new ResponseEntity<>(tutorials1, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } @GetMapping("/getAll") public ResponseEntity<List<Tutorials>> getAllTutorials() { List<Tutorials> getAllTutorials = tutorialsRepository.findAll(); return new ResponseEntity<>(getAllTutorials, HttpStatus.OK); } @GetMapping(value = "/getById/{id}") public ResponseEntity<Tutorials> getById(@PathVariable("id") String id) { Optional<Tutorials> getById = tutorialsRepository.findById(id); if (getById.isPresent()) { return new ResponseEntity<>(getById.get(), HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @DeleteMapping("/delete/{id}") public void delete(@PathVariable("id") String id) { try { Optional<Tutorials> tutorial = tutorialsRepository.findById(id); Tutorials tutorials = tutorial.isPresent() ? tutorial.get() : null; if (tutorials != null) { tutorialsRepository.delete(tutorials); } } catch (Exception e) { } } @PutMapping("/update/{id}") public ResponseEntity<Tutorials> update(@PathVariable("id") String id, @RequestBody Tutorials updateTutorials) { Optional<Tutorials> tutorial = tutorialsRepository.findById(id); if (tutorial.isPresent()) { Tutorials tutorials = tutorial.get(); updateTutorials.setId(tutorials.getId()); updateTutorials.setTitle(tutorials.getTitle()); updateTutorials.setDescription(tutorials.getDescription()); return new ResponseEntity<>(tutorialsRepository.save(updateTutorials), HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @GetMapping(value = "/getByTitle/{title}") public ResponseEntity<Tutorials> getByTitle(@PathVariable("title") String title) { Tutorials byTitle = customQueryRepository.getByTitle(title); if (byTitle != null) { return new ResponseEntity<>(byTitle, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @GetMapping(value = "/getByTitleAndDesc") public ResponseEntity<Tutorials> getByTitleAndDescription(@RequestParam String title, @RequestParam String description) { Tutorials byTitle = customQueryRepository.getByTileAndDescription(title, description); if (byTitle != null) { return new ResponseEntity<>(byTitle, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @GetMapping(value = "/getByTitleOrDesc") public ResponseEntity<List<Tutorials>> getByTitleOrDescription(@RequestParam String title, @RequestParam String description) { List<Tutorials> byTitleOrDescription = customQueryRepository.getByTitleOrDescription(title, description); if (byTitleOrDescription != null) { return new ResponseEntity<>(byTitleOrDescription, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } @GetMapping(value = "/getByQuery") public ResponseEntity<List<Tutorials>> getByQuery() { List<Tutorials> byTitleOrDescription = customQueryRepository.getByQuery(); if (byTitleOrDescription != null) { return new ResponseEntity<>(byTitleOrDescription, HttpStatus.OK); } else { return new ResponseEntity<>(HttpStatus.NOT_FOUND); } } }