Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package ru.yandex.practicum.filmorate.controller;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import ru.yandex.practicum.filmorate.dto.DirectorDto;
import ru.yandex.practicum.filmorate.model.Director;
import ru.yandex.practicum.filmorate.service.director.DirectorService;

import java.util.Collection;

@Slf4j
@RestController
@RequestMapping("/directors")
@RequiredArgsConstructor
@Validated
public class DirectorController {

private final DirectorService directorService;

@GetMapping
public Collection<DirectorDto> getDirectors() {
log.info("Received GET /directors request");
return directorService.getDirectors();
}

@GetMapping("/{directorId}")
public DirectorDto getDirectorById(@PathVariable long directorId) {
log.info("Received GET /directors/{} request", directorId);
return directorService.getDirectorById(directorId);
}

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public DirectorDto addDirector(@RequestBody Director director) {
log.info("Received POST /directors request with body: {}", director);
return directorService.addDirector(director);
}

@PutMapping
public DirectorDto updateDirector(@RequestBody Director director) {
log.info("Received PUT /directors request with body: {}", director);
return directorService.updateDirector(director);
}

@DeleteMapping("/{directorId}")
public void deleteDirector(@PathVariable long directorId) {
log.info("Received DELETE /directors/{} request", directorId);
directorService.deleteDirector(directorId);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,12 @@ public List<FilmDto> getCommonFilms(
log.info("GET common films for userId={} and friendId={}", userId, friendId);
return filmService.getCommonFilms(userId, friendId);
}

@GetMapping("/director/{directorId}")
public List<FilmDto> findByDirector(@PathVariable long directorId,
@RequestParam(name = "sortBy") String sortMode) {
log.info("Received GET /films/director/{}?sortBy={} request", directorId, sortMode);
return filmService.findByDirector(directorId, sortMode);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import ru.yandex.practicum.filmorate.dto.FilmDto;
import ru.yandex.practicum.filmorate.dto.UserDto;
import ru.yandex.practicum.filmorate.model.User;
import ru.yandex.practicum.filmorate.service.film.FilmService;
import ru.yandex.practicum.filmorate.service.user.UserService;
import ru.yandex.practicum.filmorate.storage.user.UserDbStorage;

Expand All @@ -17,10 +19,12 @@
@RequestMapping("/users")
public class UserController {
private final UserService userService;
private final FilmService filmService;

@Autowired
public UserController(UserDbStorage userDbStorage) {
public UserController(UserDbStorage userDbStorage, FilmService filmService) {
userService = new UserService(userDbStorage);
this.filmService = filmService;
}

@GetMapping
Expand Down Expand Up @@ -79,5 +83,11 @@ public void deleteUser(@PathVariable int userId) {
log.info("Recieved DELETE /users/{} request", userId);
userService.deleteUser(userId);
}

@GetMapping("/{id}/recommendations")
public Collection<FilmDto> getRecommendations(@PathVariable long id) {
log.info("get recommendations");
return filmService.getRecommendations(id);
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package ru.yandex.practicum.filmorate.dal;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import ru.yandex.practicum.filmorate.model.Director;

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

@Repository
public class DirectorRepository extends BaseRepository<Director> {

private static final String FIND_ALL_QUERY = "SELECT * FROM DIRECTORS d";
private static final String FIND_BY_ID_QUERY = "SELECT * FROM DIRECTORS d WHERE d.director_id = ?";
private static final String INSERT_QUERY = "INSERT INTO DIRECTORS (NAME) VALUES(?)";
private static final String UPDATE_QUERY = "UPDATE DIRECTORS SET NAME = ? WHERE DIRECTOR_ID = ?";
private static final String DELETE_QUERY = "DELETE FROM DIRECTORS WHERE DIRECTOR_ID = ?";

public DirectorRepository(JdbcTemplate jdbc,
RowMapper<Director> mapper) {
super(jdbc, mapper);
}

public List<Director> findAll() {
return findMany(FIND_ALL_QUERY);
}

public Optional<Director> findById(long id) {
return findOne(FIND_BY_ID_QUERY, id);
}

public Director save(Director director) {
Long id = (Long) insert(INSERT_QUERY, director.getName());
director.setId(id);
return director;
}

public Director update(Director director) {
update(UPDATE_QUERY, director.getName(), director.getId());
return director;
}

public void delete(long id) {
update(DELETE_QUERY, id);
}

}
Loading
Loading