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
Expand Up @@ -4,7 +4,6 @@

import ru.practicum.category.dto.CategoryDto;
import ru.practicum.category.dto.NewCategoryDto;
import ru.practicum.category.dto.UpdateCategoryDto;
import ru.practicum.category.service.CategoryService;

import org.springframework.http.HttpStatus;
Expand All @@ -29,7 +28,7 @@ public CategoryDto createCategory(@Valid @RequestBody NewCategoryDto newCategory

@PatchMapping("/{catId}")
public CategoryDto updateCategory(
@PathVariable Long catId, @Valid @RequestBody UpdateCategoryDto updateCategoryDto) {
@PathVariable Long catId, @Valid @RequestBody NewCategoryDto updateCategoryDto) {
log.info(
"Update category with id={} requested, updated category {}",
catId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,20 @@

import java.util.Collection;

import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

import ru.practicum.category.dto.CategoryDto;
import ru.practicum.category.service.CategoryService;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Validated
@RestController
@RequiredArgsConstructor
@RequestMapping("/categories")
Expand All @@ -19,8 +24,8 @@ public class CategoryPublicController {

@GetMapping
public Collection<CategoryDto> getAllCategoriesPaged(
@RequestParam(defaultValue = "0") int from,
@RequestParam(defaultValue = "10") int size) {
@RequestParam(defaultValue = "0") @PositiveOrZero int from,
@RequestParam(defaultValue = "10") @Positive int size) {
log.info("View categories page by page requested from={}, size={}", from, size);
return categoryService.getAllCategoriesPaged(from, size);
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import ru.practicum.category.dto.CategoryDto;
import ru.practicum.category.dto.NewCategoryDto;
import ru.practicum.category.dto.UpdateCategoryDto;

public interface CategoryService {
CategoryDto createCategory(NewCategoryDto newCategoryDto);
Expand All @@ -15,5 +14,5 @@ public interface CategoryService {

void deleteCategoryById(Long id);

CategoryDto updateCategory(Long catId, UpdateCategoryDto updateCategoryDto);
CategoryDto updateCategory(Long catId, NewCategoryDto updateCategoryDto);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import ru.practicum.category.dto.CategoryDto;
import ru.practicum.category.dto.NewCategoryDto;
import ru.practicum.category.dto.UpdateCategoryDto;
import ru.practicum.category.mapper.CategoryMapper;
import ru.practicum.category.model.Category;
import ru.practicum.category.repository.CategoryRepository;
Expand All @@ -30,7 +29,7 @@ public CategoryDto createCategory(NewCategoryDto newCategoryDto) {
}

@Override
public CategoryDto updateCategory(Long catId, UpdateCategoryDto updateCategoryDto) {
public CategoryDto updateCategory(Long catId, NewCategoryDto updateCategoryDto) {
Category category =
categoryRepository
.findById(catId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,21 @@

import java.util.Collection;

import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

import ru.practicum.compilation.dto.CompilationDto;
import ru.practicum.compilation.service.CompilationsPublicGetRequest;
import ru.practicum.compilation.service.CompilationsService;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Validated
@RestController
@RequiredArgsConstructor
@RequestMapping("/compilations")
Expand All @@ -21,8 +26,8 @@ public class CompilationsPublicController {
@GetMapping
public Collection<CompilationDto> getCompilations(
@RequestParam(required = false) Boolean pinned,
@RequestParam(defaultValue = "0") int from,
@RequestParam(defaultValue = "10") int size) {
@RequestParam(defaultValue = "0") @PositiveOrZero int from,
@RequestParam(defaultValue = "10") @Positive int size) {
CompilationsPublicGetRequest getRequest =
new CompilationsPublicGetRequest(pinned, from, size);
log.info("Public get compilations requested with params= {}", getRequest);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
package ru.practicum.compilation.service;

import java.time.LocalDateTime;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import ru.practicum.client.StatsClient;
import ru.practicum.compilation.dto.CompilationDto;
import ru.practicum.compilation.dto.NewCompilationDto;
import ru.practicum.compilation.dto.UpdateCompilationRequest;
import ru.practicum.compilation.mapper.CompilationsMapper;
import ru.practicum.compilation.model.Compilation;
import ru.practicum.compilation.repository.CompilationsRepository;
import ru.practicum.dto.ViewStatsDto;
import ru.practicum.event.dto.EventShortDto;
import ru.practicum.event.mapper.EventMapper;
import ru.practicum.event.model.Event;
Expand All @@ -35,12 +32,9 @@
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class CompilationsServiceImpl implements CompilationsService {
private static final LocalDateTime MINIMAL_LOCAL_DATE_TIME =
LocalDateTime.of(1000, 1, 1, 0, 0, 0);
private final CompilationsRepository compRepository;
private final EventRepository eventRepository;
private final ParticipationRequestRepository requestRepository;
private final StatsClient statsClient;

@Override
public Collection<CompilationDto> findAll(CompilationsPublicGetRequest getRequest) {
Expand All @@ -52,9 +46,8 @@ public Collection<CompilationDto> findAll(CompilationsPublicGetRequest getReques
page.stream().flatMap(c -> c.getEvents().stream()).collect(Collectors.toSet());

Map<Long, Long> confirmedRequests = getConfirmedRequests(events);
Map<Long, Long> views = getViews(events);

return page.stream().map(c -> toDto(c, confirmedRequests, views)).toList();
return page.stream().map(c -> toDto(c, confirmedRequests)).toList();
}

@Override
Expand All @@ -70,9 +63,8 @@ public CompilationDto findById(long compId) {
Set<Event> events = compilation.getEvents();

Map<Long, Long> confirmedRequests = getConfirmedRequests(events);
Map<Long, Long> views = getViews(events);

return toDto(compilation, confirmedRequests, views);
return toDto(compilation, confirmedRequests);
}

@Override
Expand All @@ -91,9 +83,8 @@ public CompilationDto save(NewCompilationDto newCompilationDto) {
Compilation saved = compRepository.save(compilation);

Map<Long, Long> confirmedRequests = getConfirmedRequests(events);
Map<Long, Long> views = getViews(events);

return toDto(saved, confirmedRequests, views);
return toDto(saved, confirmedRequests);
}

@Override
Expand Down Expand Up @@ -129,21 +120,19 @@ public CompilationDto update(long compId, UpdateCompilationRequest updateRequest
Set<Event> actualEvents = updated.getEvents();

Map<Long, Long> confirmedRequests = getConfirmedRequests(actualEvents);
Map<Long, Long> views = getViews(actualEvents);

return toDto(updated, confirmedRequests, views);
return toDto(updated, confirmedRequests);
}

private CompilationDto toDto(
Compilation compilation, Map<Long, Long> confirmedRequests, Map<Long, Long> views) {
private CompilationDto toDto(Compilation compilation, Map<Long, Long> confirmedRequests) {
List<EventShortDto> events =
compilation.getEvents().stream()
.map(
event ->
EventMapper.mapToShortDto(
event,
confirmedRequests.getOrDefault(event.getId(), 0L),
views.get(event.getId())))
null))
.toList();

return CompilationsMapper.mapToDto(compilation, events);
Expand Down Expand Up @@ -172,31 +161,4 @@ private Map<Long, Long> getConfirmedRequests(Set<Event> events) {

return requestRepository.countConfirmedByEventIds(eventIds);
}

private Map<Long, Long> getViews(Set<Event> events) {
if (events.isEmpty()) {
return Map.of();
}

List<String> uris = events.stream().map(e -> "/events/%s".formatted(e.getId())).toList();

try {
List<ViewStatsDto> stats =
statsClient.getStats(MINIMAL_LOCAL_DATE_TIME, LocalDateTime.now(), uris, true);

return stats.stream()
.collect(
Collectors.toMap(
s -> {
String uri = s.uri();
return Long.parseLong(
uri.substring(uri.lastIndexOf("/") + 1));
},
ViewStatsDto::hits));

} catch (Exception e) {
log.error("Error during getting stats for events", e);
return Map.of();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@
import java.util.List;

import jakarta.validation.Valid;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

import ru.practicum.event.dto.EventFullDto;
import ru.practicum.event.dto.UpdateEventAdminRequest;
import ru.practicum.event.model.EventState;
import ru.practicum.event.service.EventService;
import ru.practicum.event.service.EventsAdminGetRequest;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Validated
@RestController
@RequiredArgsConstructor
@RequestMapping("/admin/events")
Expand All @@ -31,8 +35,8 @@ public Collection<EventFullDto> getEventsFiltered(
@RequestParam(required = false) List<Long> categories,
@RequestParam(required = false) LocalDateTime rangeStart,
@RequestParam(required = false) LocalDateTime rangeEnd,
@RequestParam(defaultValue = "0") int from,
@RequestParam(defaultValue = "10") int size) {
@RequestParam(defaultValue = "0") @PositiveOrZero int from,
@RequestParam(defaultValue = "10") @Positive int size) {
EventsAdminGetRequest getRequest =
new EventsAdminGetRequest(
users, states, categories, rangeStart, rangeEnd, from, size);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
import java.util.Collection;

import jakarta.validation.Valid;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

import ru.practicum.event.dto.EventFullDto;
import ru.practicum.event.dto.EventShortDto;
Expand All @@ -12,12 +14,14 @@
import ru.practicum.event.service.EventsPrivateGetRequest;

import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Validated
@RestController
@RequiredArgsConstructor
@RequestMapping("/users/{userId}/events")
Expand All @@ -27,8 +31,8 @@ public class EventPrivateController {
@GetMapping()
public Collection<EventShortDto> getEventsOfUserPaged(
@PathVariable Long userId,
@RequestParam(defaultValue = "0") int from,
@RequestParam(defaultValue = "10") int size) {
@RequestParam(defaultValue = "0") @PositiveOrZero int from,
@RequestParam(defaultValue = "10") @Positive int size) {
EventsPrivateGetRequest getRequest = new EventsPrivateGetRequest(userId, from, size);
log.info("Private get events requested with params= {}", getRequest);
return eventService.getEvents(getRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@
import java.util.List;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.constraints.Positive;
import jakarta.validation.constraints.PositiveOrZero;

import ru.practicum.event.dto.EventFullDto;
import ru.practicum.event.dto.EventShortDto;
import ru.practicum.event.service.EventService;
import ru.practicum.event.service.EventsPublicGetRequest;
import ru.practicum.exception.ValidationException;

import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@Validated
@RestController
@RequiredArgsConstructor
@RequestMapping("/events")
Expand All @@ -33,8 +37,8 @@ public Collection<EventShortDto> getEventsFiltered(
@RequestParam(required = false) LocalDateTime rangeEnd,
@RequestParam(defaultValue = "false") boolean onlyAvailable,
@RequestParam(required = false) EventSortBy sort,
@RequestParam(defaultValue = "0") int from,
@RequestParam(defaultValue = "10") int size,
@RequestParam(defaultValue = "0") @PositiveOrZero int from,
@RequestParam(defaultValue = "10") @Positive int size,
HttpServletRequest request) {
EventsPublicGetRequest getRequest =
new EventsPublicGetRequest(
Expand Down
Loading