Skip to content
Snippets Groups Projects
MainController.java 2.32 KiB
Newer Older
  • Learn to ignore specific revisions
  • package com.example.accessingdatamysql;
    
    
    import org.apache.coyote.Response;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    
    
    import java.util.Map;
    import java.util.Optional;
    
    
    @Controller // This means that this class is a Controller
    
    Shrey Patel's avatar
    Shrey Patel committed
    @RequestMapping(path="/user") // This means URL's start with /demo (after Application path)
    
    public class MainController {
        @Autowired // This means to get the bean called userRepository
        // Which is auto-generated by Spring, we will use it to handle the data
        private UserRepository userRepository;
    
    
    
        @PostMapping(path = "/add") // Map ONLY POST Requests
    
        public User addJsonUser(@RequestBody User usr) {
    
            // @ResponseBody means the returned String is the response, not a view name
            // @RequestParam means it is a parameter from the GET or POST request
            userRepository.save(usr);
            return usr;
        }
    
    
        @PutMapping(path = "/update")
        @ResponseBody
        public User updateUser(@RequestBody User usr)
        {
            userRepository.save(usr);
            return usr;
        }
    
        @PutMapping(path = "/changepass")
        @ResponseBody
        public User updateUser(@RequestBody Map<String, String> json)
        {
    
            if (json.get("email") != null)
    
                Optional<User> user = userRepository.findById(json.get("email"));
                if (user.isPresent())
                {
                    User usr = user.get();
                    usr.setPassword(json.get("password"));
                    userRepository.save(usr);
                    return usr;
                }
                return null;
    
            }
            return null;
        }
    
    
        @GetMapping(path="/all")
        public @ResponseBody Iterable<User> getAllUsers() {
            // This returns a JSON or XML with the users
            return userRepository.findAll();
        }
    
    
        @GetMapping(path = "/user")
        public @ResponseBody Optional<User> getUser(@RequestBody String email)
        {
            return userRepository.findById(email);
        }
    
        @DeleteMapping(path = "/delete")
        public @ResponseBody User deleteUser(@RequestBody String email)
        {
            User found = null;
            found = userRepository.findById(email).get();
            if (found != null)
                userRepository.deleteById(email);
            return found;
        }