diff --git a/pom.xml b/pom.xml
index 091dc51..a3b4a77 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,10 +26,6 @@
org.springframework.boot
spring-boot-starter-web
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
org.springframework.boot
spring-boot-starter-actuator
@@ -67,11 +63,11 @@
spring-boot-starter-validation
-
- org.mapstruct
- mapstruct
- ${org.mapstruct.version}
-
+
+ org.mapstruct
+ mapstruct
+ ${org.mapstruct.version}
+
org.projectlombok
@@ -163,18 +159,6 @@
${lombok-mapstruct-binding.version}
- true
-
-
- -Amapstruct.suppressGeneratorTimestamp=true
-
-
- -Amapstruct.suppressGeneratorVersionInfoComment=true
-
-
- -Amapstruct.verbose=true
-
-
diff --git a/src/main/java/ru/practicum/shareit/PersistenceConfig.java b/src/main/java/ru/practicum/shareit/PersistenceConfig.java
deleted file mode 100644
index 04d14b2..0000000
--- a/src/main/java/ru/practicum/shareit/PersistenceConfig.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package ru.practicum.shareit;
-
-import jakarta.persistence.EntityManagerFactory;
-import lombok.RequiredArgsConstructor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-import javax.sql.DataSource;
-import java.util.Properties;
-
-@Configuration
-@RequiredArgsConstructor
-@EnableTransactionManagement
-@EnableJpaRepositories(basePackages = "ru.practicum")
-public class PersistenceConfig {
- private final Environment environment;
-
- @Bean
- public DataSource dataSource() {
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName(environment.getRequiredProperty("spring.datasource.driverClassName"));
- dataSource.setUrl(environment.getRequiredProperty("spring.datasource.url"));
- dataSource.setUsername(environment.getRequiredProperty("spring.datasource.username"));
- dataSource.setPassword(environment.getRequiredProperty("spring.datasource.password"));
- return dataSource;
- }
-
- private Properties hibernateProperties() {
- Properties properties = new Properties();
- properties.put("spring.jpa.properties.hibernate.jdbc.time_zone",
- environment.getRequiredProperty("spring.jpa.properties.hibernate.jdbc.time_zone"));
- properties.put("spring.jpa.properties.hibernate.format_sql",
- environment.getProperty("spring.jpa.properties.hibernate.format_sql", "false"));
- return properties;
- }
-
- @Bean
- public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) {
- final HibernateJpaVendorAdapter vendorAdapter =
- new HibernateJpaVendorAdapter();
-
- final LocalContainerEntityManagerFactoryBean emf =
- new LocalContainerEntityManagerFactoryBean();
-
- emf.setDataSource(dataSource);
- emf.setJpaVendorAdapter(vendorAdapter);
- emf.setPackagesToScan("ru.practicum");
- emf.setJpaProperties(hibernateProperties());
-
- return emf;
- }
-
- @Bean
- public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
- JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(entityManagerFactory);
- return transactionManager;
- }
-}
diff --git a/src/main/java/ru/practicum/shareit/booking/Booking.java b/src/main/java/ru/practicum/shareit/booking/Booking.java
new file mode 100644
index 0000000..8facd50
--- /dev/null
+++ b/src/main/java/ru/practicum/shareit/booking/Booking.java
@@ -0,0 +1,16 @@
+package ru.practicum.shareit.booking;
+
+import java.time.LocalDate;
+
+/**
+ * TODO Sprint add-bookings.
+ */
+public class Booking {
+
+ private Long bookingId;
+ private LocalDate start;
+ private LocalDate end;
+ private Long itemId;
+ private Long bookerId;
+ BookingStatus status;
+}
diff --git a/src/main/java/ru/practicum/shareit/booking/BookingController.java b/src/main/java/ru/practicum/shareit/booking/BookingController.java
index 5d1a56c..b94493d 100644
--- a/src/main/java/ru/practicum/shareit/booking/BookingController.java
+++ b/src/main/java/ru/practicum/shareit/booking/BookingController.java
@@ -1,49 +1,12 @@
package ru.practicum.shareit.booking;
-import jakarta.validation.Valid;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-import ru.practicum.shareit.booking.dto.BookingRequestDto;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-import ru.practicum.shareit.booking.intrfaces.BookingServiceInterface;
-
-import java.util.Collection;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+/**
+ * TODO Sprint add-bookings.
+ */
@RestController
@RequestMapping(path = "/bookings")
-@RequiredArgsConstructor
public class BookingController {
- private final BookingServiceInterface bookingService;
- public static final String USER_ID = "X-Sharer-User-Id";
-
- @PostMapping
- public BookingResponseDto addBooking(@RequestBody @Valid BookingRequestDto booking,
- @RequestHeader(USER_ID) Long bookerId) {
- return bookingService.addBooking(booking, bookerId);
- }
-
- @PatchMapping("/{bookingId}")
- public BookingResponseDto bookingApprove(@PathVariable Long bookingId,
- @RequestHeader (USER_ID) Long ownerId,
- @RequestParam Boolean approved) {
- return bookingService.bookingApprove(bookingId, ownerId, approved);
- }
-
- @GetMapping("/{bookingId}")
- public BookingResponseDto getBooking(@PathVariable Long bookingId,
- @RequestHeader(USER_ID) Long userId) {
- return bookingService.getBookingByBookingId(bookingId, userId);
- }
-
- @GetMapping
- public Collection getBookingsByUser(@RequestHeader (USER_ID) Long userId,
- @RequestParam(name = "state", defaultValue = "all") String state) {
- return bookingService.getBookingsByUser(userId, state);
- }
-
- @GetMapping("/owner")
- public Collection getBookingsByOwner(@RequestHeader (USER_ID) Long userId,
- @RequestParam(name = "state", defaultValue = "all") String state) {
- return bookingService.getBookingsByOwner(userId, state);
- }
}
diff --git a/src/main/java/ru/practicum/shareit/booking/BookingServiceImpl.java b/src/main/java/ru/practicum/shareit/booking/BookingServiceImpl.java
deleted file mode 100644
index 4bc3009..0000000
--- a/src/main/java/ru/practicum/shareit/booking/BookingServiceImpl.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package ru.practicum.shareit.booking;
-
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-import ru.practicum.shareit.booking.dto.BookingRequestDto;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-import ru.practicum.shareit.booking.intrfaces.BookingRepository;
-import ru.practicum.shareit.booking.intrfaces.BookingServiceInterface;
-import ru.practicum.shareit.booking.mapper.BookingMapper;
-import ru.practicum.shareit.booking.model.Booking;
-import ru.practicum.shareit.booking.model.BookingStatus;
-import ru.practicum.shareit.exception.AnotherUserException;
-import ru.practicum.shareit.exception.NotFoundException;
-import ru.practicum.shareit.exception.ValidationException;
-import ru.practicum.shareit.item.interfaces.ItemRepository;
-import ru.practicum.shareit.item.mapper.ItemMapper;
-import ru.practicum.shareit.item.model.Item;
-import ru.practicum.shareit.user.interfaces.UserRepository;
-import ru.practicum.shareit.user.mapper.UserMapper;
-import ru.practicum.shareit.user.model.User;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-
-@Service
-@RequiredArgsConstructor
-public class BookingServiceImpl implements BookingServiceInterface {
- private final BookingRepository storage;
- private final UserRepository userStorage;
- private final ItemRepository itemStorage;
-
- private final ItemMapper itemMapper;
- private final UserMapper userMapper;
- private final BookingRepository bookingRepository;
- private final BookingMapper bookingMapper;
-
-
- @Override
- public BookingResponseDto addBooking(BookingRequestDto booking, Long bookerId) {
- Item item = itemStorage.findById(booking.getItemId())
- .orElseThrow(() -> new NotFoundException("Item not found"));
-
- User booker = userStorage.getUserByUserId(bookerId)
- .orElseThrow(() -> new NotFoundException("User not found"));
-
- Booking saved = bookingMapper.bookingRequestDtoToBooking(booking);
- saved.setBooker(booker);
- saved.setItem(item);
-
- if (item.getIsAvailable().equals(false)) {
- saved.setStatus(BookingStatus.REJECTED);
- storage.save(saved);
- throw new RuntimeException("Booking is rejected, item is not available");
- } else {
- saved.setStatus(BookingStatus.WAITING);
- storage.save(saved);
- }
-
- return mapBookerAndItemToBooking(saved);
- }
-
- @Override
- public BookingResponseDto bookingApprove(Long bookingId, Long ownerId, Boolean isAvailable) {
- Booking booking = bookingRepository.getBookingByBookingId(bookingId)
- .orElseThrow(() -> new NotFoundException("Booking not found"));
-
- Item item = itemStorage.getItemByItemId(booking.getItem().getItemId())
- .orElseThrow(() -> new NotFoundException("Item not found"));
-
- if (!item.getOwner().getUserId().equals(ownerId)) {
- throw new AnotherUserException("You are not allowed to approve this booking");
- }
-
- if (item.getIsAvailable().equals(false)) {
- booking.setStatus(BookingStatus.REJECTED);
- throw new ValidationException("Booking item is rejected");
- } else {
- booking.setStatus(BookingStatus.APPROVED);
- bookingRepository.save(booking);
- }
-
- return mapBookerAndItemToBooking(booking);
- }
-
- @Override
- public BookingResponseDto getBookingByBookingId(Long bookingId, Long userId) {
- Booking booking = bookingRepository.getBookingByBookingId(bookingId)
- .orElseThrow(() -> new NotFoundException("Booking not found"));
-
- if (booking.getBooker().getUserId().equals(userId) ||
- booking.getItem().getOwner().getUserId().equals(userId)) {
- return mapBookerAndItemToBooking(booking);
- } else {
- throw new AnotherUserException("You are not allowed to view this booking");
- }
- }
-
- @Override
- public Collection getBookingsByUser(Long userId, String state) {
- User user = userStorage.getUserByUserId(userId)
- .orElseThrow(() -> new NotFoundException("User not found"));
-
- LocalDateTime date = LocalDateTime.now();
-
- Collection bookings = new ArrayList<>();
-
- if (state.equalsIgnoreCase("ALL")) {
- bookings = bookingRepository.getBookingsByBooker_UserId(userId);
-
- } else if (state.equalsIgnoreCase("CURRENT") ||
- state.equalsIgnoreCase("PAST") ||
- state.equalsIgnoreCase("FUTURE")) {
-
- bookings = getBookingsByTimeState(date, state).stream()
- .filter(booking -> booking.getBooker().getUserId().equals(userId))
- .toList();
-
- } else if (state.equalsIgnoreCase("WAITING") ||
- state.equalsIgnoreCase("REJECTED")) {
-
- if (state.equalsIgnoreCase("WAITING")) {
- bookings = bookingRepository.getBookingsByBooker_UserIdAndStatus(userId, BookingStatus.WAITING);
- } else {
- bookings = bookingRepository.getBookingsByBooker_UserIdAndStatus(userId, BookingStatus.REJECTED);
- }
- }
-
- return bookings.stream()
- .map(this::mapBookerAndItemToBooking)
- .sorted(Comparator.comparing(BookingResponseDto::getStart))
- .toList()
- .reversed();
- }
-
- @Override
- public Collection getBookingsByOwner(Long userId, String state) {
- User user = userStorage.getUserByUserId(userId)
- .orElseThrow(() -> new NotFoundException("User not found"));
-
- Item item = itemStorage.getItemsByOwner_UserId(userId).stream()
- .findFirst()
- .orElseThrow(() -> new NotFoundException("User with userId = " + userId + " has no Item"));
-
- LocalDateTime date = LocalDateTime.now();
-
- Collection bookings = new ArrayList<>();
-
- if (state.equalsIgnoreCase("ALL")) {
- bookings = bookingRepository.getBookingsByOwnerId(userId);
- } else if (state.equalsIgnoreCase("CURRENT") ||
- state.equalsIgnoreCase("PAST") ||
- state.equalsIgnoreCase("FUTURE")) {
-
- bookings = getBookingsByTimeState(date, state).stream()
- .filter(booking -> booking.getItem().getOwner().getUserId().equals(userId))
- .toList();
-
- } else if (state.equalsIgnoreCase("WAITING") ||
- state.equalsIgnoreCase("REJECTED")) {
-
- if (state.equalsIgnoreCase("WAITING")) {
- bookings = bookingRepository.getBookingsByStatus(BookingStatus.WAITING).stream()
- .filter(booking -> booking.getItem().getOwner().getUserId().equals(userId))
- .toList();
- } else {
- bookings = bookingRepository.getBookingsByStatus(BookingStatus.REJECTED).stream()
- .filter(booking -> booking.getItem().getOwner().getUserId().equals(userId))
- .toList();
- }
- }
- return bookings.stream()
- .map(this::mapBookerAndItemToBooking)
- .sorted(Comparator.comparing(BookingResponseDto::getStart))
- .toList()
- .reversed();
- }
-
-
- private BookingResponseDto mapBookerAndItemToBooking(Booking booking) {
- BookingResponseDto bookingDto = bookingMapper.bookingToBookingResponseDto(booking);
- bookingDto.setBooker(userMapper.toUserBookingDto(booking.getBooker()));
- bookingDto.setItem(itemMapper.toItemBookerDto(booking.getItem()));
- return bookingDto;
- }
-
- private Collection getBookingsByTimeState(LocalDateTime date, String state) {
- Collection bookings = new ArrayList<>();
- switch (state.toUpperCase()) {
- case "CURRENT" -> bookings = bookingRepository.getBookingsByBooker_UserIdCurrent(date);
- case "PAST" -> bookings = bookingRepository.getBookingsByBooker_UserIdPast(date);
- case "FUTURE" -> bookings = bookingRepository.getBookingsByBooker_UserIdFuture(date);
- }
- return bookings;
- }
-}
-
diff --git a/src/main/java/ru/practicum/shareit/booking/model/BookingStatus.java b/src/main/java/ru/practicum/shareit/booking/BookingStatus.java
similarity index 65%
rename from src/main/java/ru/practicum/shareit/booking/model/BookingStatus.java
rename to src/main/java/ru/practicum/shareit/booking/BookingStatus.java
index 4eb25ea..51269e0 100644
--- a/src/main/java/ru/practicum/shareit/booking/model/BookingStatus.java
+++ b/src/main/java/ru/practicum/shareit/booking/BookingStatus.java
@@ -1,4 +1,4 @@
-package ru.practicum.shareit.booking.model;
+package ru.practicum.shareit.booking;
public enum BookingStatus {
WAITING,
diff --git a/src/main/java/ru/practicum/shareit/booking/dto/BookingDto.java b/src/main/java/ru/practicum/shareit/booking/dto/BookingDto.java
new file mode 100644
index 0000000..861de9e
--- /dev/null
+++ b/src/main/java/ru/practicum/shareit/booking/dto/BookingDto.java
@@ -0,0 +1,7 @@
+package ru.practicum.shareit.booking.dto;
+
+/**
+ * TODO Sprint add-bookings.
+ */
+public class BookingDto {
+}
diff --git a/src/main/java/ru/practicum/shareit/booking/dto/BookingRequestDto.java b/src/main/java/ru/practicum/shareit/booking/dto/BookingRequestDto.java
deleted file mode 100644
index 0e94f98..0000000
--- a/src/main/java/ru/practicum/shareit/booking/dto/BookingRequestDto.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package ru.practicum.shareit.booking.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.constraints.Future;
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import ru.practicum.shareit.booking.model.BookingStatus;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class BookingRequestDto {
- @JsonProperty("id")
- private Long bookingId;
-
- @NotNull
- @Future
- private LocalDateTime start;
-
- @NotNull
- @Future
- private LocalDateTime end;
-
- @NotNull
- private Long itemId;
-
- private Long bookerId;
-
- private BookingStatus status;
-}
diff --git a/src/main/java/ru/practicum/shareit/booking/dto/BookingResponseDto.java b/src/main/java/ru/practicum/shareit/booking/dto/BookingResponseDto.java
deleted file mode 100644
index c59d3a4..0000000
--- a/src/main/java/ru/practicum/shareit/booking/dto/BookingResponseDto.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package ru.practicum.shareit.booking.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import ru.practicum.shareit.booking.model.BookingStatus;
-import ru.practicum.shareit.item.dto.ItemBookerDto;
-import ru.practicum.shareit.user.dto.UserBookingDto;
-
-import java.time.LocalDateTime;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class BookingResponseDto {
-
- @JsonProperty("id")
- private Long bookingId;
-
- private LocalDateTime start;
-
- private LocalDateTime end;
-
- private ItemBookerDto item;
-
- private UserBookingDto booker;
-
- private BookingStatus status;
-
-}
diff --git a/src/main/java/ru/practicum/shareit/booking/intrfaces/BookingRepository.java b/src/main/java/ru/practicum/shareit/booking/intrfaces/BookingRepository.java
deleted file mode 100644
index f5c6a0d..0000000
--- a/src/main/java/ru/practicum/shareit/booking/intrfaces/BookingRepository.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package ru.practicum.shareit.booking.intrfaces;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import ru.practicum.shareit.booking.model.Booking;
-import ru.practicum.shareit.booking.model.BookingStatus;
-
-import java.time.LocalDateTime;
-import java.util.Collection;
-import java.util.Optional;
-
-public interface BookingRepository extends JpaRepository {
-
- Booking save(Booking booking);
-
- Optional getBookingByBookingId(Long bookingId);
-
- Collection getBookingsByBooker_UserId(Long bookerId);
-
- Collection getBookingsByItem_ItemId(Long itemId);
-
- @Query(value = "SELECT b FROM Booking b WHERE ?1 between b.start and b.end")
- Collection getBookingsByBooker_UserIdCurrent(LocalDateTime date);
-
- @Query(value = "SELECT b FROM Booking b WHERE b.end < ?1")
- Collection getBookingsByBooker_UserIdPast(LocalDateTime date);
-
- @Query(value = "SELECT b FROM Booking b WHERE b.start > ?1")
- Collection getBookingsByBooker_UserIdFuture(LocalDateTime date);
-
- Collection getBookingsByBooker_UserIdAndStatus(Long bookerId, BookingStatus status);
-
- @Query(value = "SELECT b FROM Booking b JOIN Item i on b.item.itemId = i.itemId WHERE i.owner.userId = ?1")
- Collection getBookingsByOwnerId(Long ownerId);
-
- Collection getBookingsByStatus(BookingStatus status);
-}
diff --git a/src/main/java/ru/practicum/shareit/booking/intrfaces/BookingServiceInterface.java b/src/main/java/ru/practicum/shareit/booking/intrfaces/BookingServiceInterface.java
deleted file mode 100644
index 539d1cf..0000000
--- a/src/main/java/ru/practicum/shareit/booking/intrfaces/BookingServiceInterface.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package ru.practicum.shareit.booking.intrfaces;
-
-import ru.practicum.shareit.booking.dto.BookingRequestDto;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-
-import java.util.Collection;
-
-public interface BookingServiceInterface {
- BookingResponseDto addBooking(BookingRequestDto booking, Long bookerId);
-
- BookingResponseDto bookingApprove(Long bookingId, Long ownerId, Boolean isAvailable);
-
- BookingResponseDto getBookingByBookingId(Long bookingId, Long userId);
-
- Collection getBookingsByUser(Long userId, String state);
-
- Collection getBookingsByOwner(Long userId, String state);
-}
diff --git a/src/main/java/ru/practicum/shareit/booking/mapper/BookingMapper.java b/src/main/java/ru/practicum/shareit/booking/mapper/BookingMapper.java
deleted file mode 100644
index 9d51d2c..0000000
--- a/src/main/java/ru/practicum/shareit/booking/mapper/BookingMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package ru.practicum.shareit.booking.mapper;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.MappingConstants;
-import ru.practicum.shareit.booking.dto.BookingRequestDto;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-import ru.practicum.shareit.booking.model.Booking;
-
-@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
-public interface BookingMapper {
- Booking bookingRequestDtoToBooking(BookingRequestDto bookingRequestDto);
-
- BookingResponseDto bookingToBookingResponseDto(Booking booking);
-}
-
diff --git a/src/main/java/ru/practicum/shareit/booking/model/Booking.java b/src/main/java/ru/practicum/shareit/booking/model/Booking.java
deleted file mode 100644
index c4b2ff2..0000000
--- a/src/main/java/ru/practicum/shareit/booking/model/Booking.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package ru.practicum.shareit.booking.model;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-import ru.practicum.shareit.item.model.Item;
-import ru.practicum.shareit.user.model.User;
-
-import java.time.LocalDateTime;
-
-@Data
-@Entity
-@Table(name = "bookings")
-@AllArgsConstructor
-@NoArgsConstructor
-@ToString
-public class Booking {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "booking_id")
- private Long bookingId;
-
- @Column(name = "start_date")
- private LocalDateTime start;
-
- @Column(name = "end_date")
- private LocalDateTime end;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "item_id")
- private Item item;
-
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "booker_id")
- private User booker;
-
- @Enumerated(EnumType.STRING)
- private BookingStatus status;
-}
diff --git a/src/main/java/ru/practicum/shareit/item/ItemController.java b/src/main/java/ru/practicum/shareit/item/ItemController.java
index 418f8b6..d033939 100644
--- a/src/main/java/ru/practicum/shareit/item/ItemController.java
+++ b/src/main/java/ru/practicum/shareit/item/ItemController.java
@@ -6,7 +6,8 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
-import ru.practicum.shareit.item.dto.*;
+import ru.practicum.shareit.item.dto.ItemRequestDto;
+import ru.practicum.shareit.item.dto.ItemResponseDto;
import java.util.Collection;
@@ -18,7 +19,7 @@
public class ItemController {
public static final String OWNER_ID = "X-Sharer-User-Id";
- private final ItemServiceImpl itemService;
+ private final ItemService itemService;
@PostMapping
public ItemResponseDto create(@RequestHeader(OWNER_ID) Long ownerId,
@@ -34,9 +35,8 @@ public ItemResponseDto update(@RequestBody ItemRequestDto item,
}
@GetMapping("/{itemId}")
- public ItemResponseDtoWithComments getItemById(@PathVariable Long itemId,
- @RequestHeader(OWNER_ID) Long ownerId) {
- return itemService.getItemById(itemId, ownerId);
+ public ItemResponseDto getItemById(@PathVariable Long itemId) {
+ return itemService.getItemById(itemId);
}
@GetMapping
@@ -50,11 +50,4 @@ public Collection searchItems(@RequestParam String text) {
return itemService.searchByText(text);
}
- @PostMapping("/{itemId}/comment")
- public CommentResponseCreatedDto addComment(@RequestBody CommentRequestDto comment,
- @PathVariable Long itemId,
- @RequestHeader(OWNER_ID) Long commentatorId) {
- return itemService.addComment(commentatorId, comment, itemId);
- }
-
}
diff --git a/src/main/java/ru/practicum/shareit/item/ItemService.java b/src/main/java/ru/practicum/shareit/item/ItemService.java
new file mode 100644
index 0000000..9dd0d0c
--- /dev/null
+++ b/src/main/java/ru/practicum/shareit/item/ItemService.java
@@ -0,0 +1,77 @@
+package ru.practicum.shareit.item;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import ru.practicum.shareit.exception.AnotherUserException;
+import ru.practicum.shareit.exception.NotFoundException;
+import ru.practicum.shareit.exception.ValidationException;
+import ru.practicum.shareit.item.dto.ItemRequestDto;
+import ru.practicum.shareit.item.dto.ItemResponseDto;
+import ru.practicum.shareit.item.interfaces.ItemServiceInterface;
+import ru.practicum.shareit.item.mapper.ItemMapper;
+import ru.practicum.shareit.item.model.Item;
+import ru.practicum.shareit.user.UserStorage;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class ItemService implements ItemServiceInterface {
+
+ private final ItemStorage itemStorage;
+ private final UserStorage userStorage;
+ private final ItemMapper itemMapper;
+
+ public ItemResponseDto createItem(ItemRequestDto item, Long ownerId) {
+ if (ownerId == null) {
+ throw new ValidationException("Owner id cannot be null");
+ }
+ userStorage.getUserById(ownerId)
+ .orElseThrow(() -> new NotFoundException("User with id " + ownerId + " not found"));
+ Item itemSaved = itemMapper.toItem(item);
+ itemSaved.setOwnerId(ownerId);
+ return itemMapper.toItemResponseDto(itemStorage.createItem(itemSaved));
+ }
+
+ public ItemResponseDto getItemById(Long id) {
+ return itemMapper.toItemResponseDto(itemStorage.getItemById(id)
+ .orElseThrow(() -> new NotFoundException("Item with id " + id + " not found")));
+ }
+
+ public ItemResponseDto updateItem(Long itemId,
+ ItemRequestDto item, Long ownerId) {
+ findUserById(ownerId);
+ Item foundItem = itemStorage.getItemById(itemId)
+ .orElseThrow(() -> new NotFoundException("Item with id " + itemId + " not found"));
+ if (foundItem.getOwnerId().equals(ownerId)) {
+ item.setItemId(itemId);
+ foundItem = itemMapper.toItem(item);
+ } else {
+ throw new AnotherUserException("User with id " + ownerId + " is not owner of this Item");
+ }
+ return itemMapper.toItemResponseDto(itemStorage.updateItem(foundItem));
+ }
+
+ public Collection getAllItemsForOwner(Long ownerId) {
+ return itemStorage.getAllItemsForOwner(ownerId).stream()
+ .map(itemMapper::toItemResponseDto)
+ .collect(Collectors.toList());
+ }
+
+ public Collection searchByText(String text) {
+ if (text == null || text.isEmpty()) {
+ return new ArrayList<>();
+ }
+ return itemStorage.searchByText(text).stream()
+ .filter(Item::getIsAvailable)
+ .map(itemMapper::toItemResponseDto)
+ .collect(Collectors.toList());
+ }
+
+ private void findUserById(Long userId) {
+ userStorage.getUserById(userId)
+ .orElseThrow(() -> new NotFoundException("User with id = " + userId + " not found"));
+ }
+}
diff --git a/src/main/java/ru/practicum/shareit/item/ItemServiceImpl.java b/src/main/java/ru/practicum/shareit/item/ItemServiceImpl.java
deleted file mode 100644
index 3b77efe..0000000
--- a/src/main/java/ru/practicum/shareit/item/ItemServiceImpl.java
+++ /dev/null
@@ -1,174 +0,0 @@
-package ru.practicum.shareit.item;
-
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-import ru.practicum.shareit.booking.intrfaces.BookingRepository;
-import ru.practicum.shareit.booking.mapper.BookingMapper;
-import ru.practicum.shareit.booking.model.Booking;
-import ru.practicum.shareit.booking.model.BookingStatus;
-import ru.practicum.shareit.exception.AnotherUserException;
-import ru.practicum.shareit.exception.NotFoundException;
-import ru.practicum.shareit.exception.ValidationException;
-import ru.practicum.shareit.item.dto.*;
-import ru.practicum.shareit.item.interfaces.CommentRepository;
-import ru.practicum.shareit.item.interfaces.ItemRepository;
-import ru.practicum.shareit.item.interfaces.ItemServiceInterface;
-import ru.practicum.shareit.item.mapper.CommentMapper;
-import ru.practicum.shareit.item.mapper.ItemMapper;
-import ru.practicum.shareit.item.model.Comment;
-import ru.practicum.shareit.item.model.Item;
-import ru.practicum.shareit.user.interfaces.UserRepository;
-import ru.practicum.shareit.user.mapper.UserMapper;
-import ru.practicum.shareit.user.model.User;
-
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-
-@Service
-@RequiredArgsConstructor
-public class ItemServiceImpl implements ItemServiceInterface {
-
- private final ItemRepository itemRepository;
- private final UserRepository userRepository;
- private final CommentRepository commentRepository;
- private final BookingRepository bookingRepository;
- private final ItemMapper itemMapper;
- private final UserMapper userMapper;
- private final CommentMapper commentMapper;
- private final BookingMapper bookingMapper;
-
- public ItemResponseDto createItem(ItemRequestDto item, Long ownerId) {
- if (ownerId == null) {
- throw new ValidationException("Owner id cannot be null");
- }
-
- User owner = userRepository.getUserByUserId(ownerId)
- .orElseThrow(() -> new NotFoundException("User with id " + ownerId + " not found"));
-
- Item itemSaved = itemMapper.toItem(item);
- itemSaved.setOwner(owner);
-
- itemRepository.save(itemSaved);
-
- return itemMapper.toItemResponseDto(itemSaved);
- }
-
- public ItemResponseDtoWithComments getItemById(Long itemId, Long ownerId) {
- ItemResponseDto item = itemMapper.toItemResponseDto(itemRepository.getItemByItemId(itemId)
- .orElseThrow(() -> new NotFoundException("Item with id " + itemId + " not found")));
-
- List comments = commentRepository.getCommentsByItem_ItemId(itemId).stream()
- .map(commentMapper::toCommentResponseDto)
- .collect(Collectors.toList());
-
- ItemResponseDtoWithComments itemDto = itemMapper.toItemResponseDtoWithComments(
- itemRepository.getItemByItemId(itemId).get());
- itemDto.setComments(comments);
-
- if (item.getOwnerId().equals(ownerId)) {
- List bookingsLast = bookingRepository.getBookingsByItem_ItemId(itemId).stream()
- .filter(booking -> booking.getEnd().isBefore(LocalDateTime.now()))
- .toList();
- if (!bookingsLast.isEmpty()) {
- BookingResponseDto lastBooking = bookingMapper.bookingToBookingResponseDto(bookingsLast.stream()
- .sorted(Comparator.comparing(Booking::getEnd))
- .toList()
- .getLast());
- itemDto.setLastBooking(lastBooking);
- }
-
- List bookingsNext = bookingRepository.getBookingsByItem_ItemId(itemId).stream()
- .filter(booking -> booking.getStart().isAfter(LocalDateTime.now()))
- .toList();
-
- if (!bookingsNext.isEmpty()) {
- BookingResponseDto nextBooking = bookingMapper.bookingToBookingResponseDto(bookingsNext.stream()
- .sorted(Comparator.comparing(Booking::getStart))
- .toList()
- .getFirst());
- itemDto.setNextBooking(nextBooking);
- }
- }
- return itemDto;
-
- }
-
- public ItemResponseDto updateItem(Long itemId,
- ItemRequestDto item, Long ownerId) {
-
- User owner = userRepository.getUserByUserId(ownerId)
- .orElseThrow(() -> new NotFoundException("User with id " + ownerId + " not found"));
-
- Item foundItem = itemRepository.getItemByItemId(itemId)
- .orElseThrow(() -> new NotFoundException("Item with id " + itemId + " not found"));
-
- if (foundItem.getOwner().getUserId().equals(ownerId)) {
-
- if (item.getIsAvailable() != null) {
- foundItem.setIsAvailable(item.getIsAvailable());
- }
-
- if (item.getItemName() != null) {
- foundItem.setItemName(item.getItemName());
- }
-
- if (item.getItemDescription() != null) {
- foundItem.setItemDescription(item.getItemDescription());
- }
-
- } else {
- throw new AnotherUserException("User with id " + ownerId + " is not owner of this Item");
- }
-
- return itemMapper.toItemResponseDto(foundItem);
- }
-
- public Collection getAllItemsForOwner(Long ownerId) {
- User owner = userRepository.getUserByUserId(ownerId)
- .orElseThrow(() -> new NotFoundException("User with id " + ownerId + " not found"));
-
- return itemRepository.getItemsByOwner_UserId(ownerId).stream()
- .map(itemMapper::toItemResponseDto)
- .peek(item -> item.setOwnerId(ownerId))
- .collect(Collectors.toList());
- }
-
- public Collection searchByText(String text) {
- if (text == null || text.isEmpty()) {
- return new ArrayList<>();
- }
- return itemRepository.searchByTextContainingIgnoreCase(text).stream()
- .filter(Item::getIsAvailable)
- .map(itemMapper::toItemResponseDto)
- .collect(Collectors.toList());
- }
-
- public CommentResponseCreatedDto addComment(Long commentatorId,
- CommentRequestDto commentDto, Long itemId) {
- Collection bookings = bookingRepository.getBookingsByItem_ItemId(itemId);
-
- Booking booking = bookings.stream()
- .filter(booking1 -> booking1.getBooker().getUserId().equals(commentatorId))
- .findFirst()
- .orElseThrow(() -> new NotFoundException("Booking with bookerId " + commentatorId + " not found"));
-
- if (booking.getEnd().isBefore(commentDto.getDate()) && booking.getStatus().equals(BookingStatus.APPROVED)) {
- Comment comment = commentMapper.toComment(commentDto);
- comment.setItem(itemRepository.getItemByItemId(itemId).get());
- comment.setAuthor(userRepository.getUserByUserId(commentatorId).get());
-
- return commentMapper.toCommentResponseCreatedDto(commentRepository.save(comment));
-
- } else {
- throw new ValidationException("Comment cannot be added to the booking");
- }
- }
-
-}
-
diff --git a/src/main/java/ru/practicum/shareit/item/ItemStorage.java b/src/main/java/ru/practicum/shareit/item/ItemStorage.java
index e9ba003..6b234d5 100644
--- a/src/main/java/ru/practicum/shareit/item/ItemStorage.java
+++ b/src/main/java/ru/practicum/shareit/item/ItemStorage.java
@@ -49,7 +49,7 @@ public Item updateItem(Item item) {
public Collection- getAllItemsForOwner(Long ownerId) {
return items.values()
.stream()
- .filter(item -> Objects.equals(item.getOwner().getUserId(), ownerId))
+ .filter(item -> Objects.equals(item.getOwnerId(), ownerId))
.collect(Collectors.toList());
}
diff --git a/src/main/java/ru/practicum/shareit/item/dto/CommentRequestDto.java b/src/main/java/ru/practicum/shareit/item/dto/CommentRequestDto.java
deleted file mode 100644
index 3462221..0000000
--- a/src/main/java/ru/practicum/shareit/item/dto/CommentRequestDto.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ru.practicum.shareit.item.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Data
-public class CommentRequestDto {
-
- @JsonProperty("id")
- private Long authorId;
-
- @JsonProperty("text")
- private String text;
-
- private LocalDateTime date = LocalDateTime.now();
-
-}
diff --git a/src/main/java/ru/practicum/shareit/item/dto/CommentResponseCreatedDto.java b/src/main/java/ru/practicum/shareit/item/dto/CommentResponseCreatedDto.java
deleted file mode 100644
index f47203c..0000000
--- a/src/main/java/ru/practicum/shareit/item/dto/CommentResponseCreatedDto.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ru.practicum.shareit.item.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-
-@Data
-public class CommentResponseCreatedDto {
- @JsonProperty("id")
- private Long commentId;
-
- @JsonProperty("text")
- private String text;
-
- private String authorName;
-
- private Boolean created = true;
-}
diff --git a/src/main/java/ru/practicum/shareit/item/dto/CommentResponseDto.java b/src/main/java/ru/practicum/shareit/item/dto/CommentResponseDto.java
deleted file mode 100644
index 9dc1ff9..0000000
--- a/src/main/java/ru/practicum/shareit/item/dto/CommentResponseDto.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ru.practicum.shareit.item.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.Data;
-import ru.practicum.shareit.user.dto.UserAuthorDto;
-
-@Data
-public class CommentResponseDto {
-
- @JsonProperty("id")
- private Long commentId;
-
- @JsonProperty("text")
- private String text;
-
- private UserAuthorDto author;
-}
diff --git a/src/main/java/ru/practicum/shareit/item/dto/ItemBookerDto.java b/src/main/java/ru/practicum/shareit/item/dto/ItemBookerDto.java
deleted file mode 100644
index 28d23ca..0000000
--- a/src/main/java/ru/practicum/shareit/item/dto/ItemBookerDto.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package ru.practicum.shareit.item.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ItemBookerDto {
-
- @JsonProperty("id")
- private Long itemId;
-
- @JsonProperty("name")
- private String itemName;
-}
diff --git a/src/main/java/ru/practicum/shareit/item/dto/ItemResponseDtoWithComments.java b/src/main/java/ru/practicum/shareit/item/dto/ItemResponseDtoWithComments.java
deleted file mode 100644
index 63d3bd6..0000000
--- a/src/main/java/ru/practicum/shareit/item/dto/ItemResponseDtoWithComments.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package ru.practicum.shareit.item.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ItemResponseDtoWithComments {
-
- @NotNull
- @JsonProperty("id")
- private Long itemId;
-
- @JsonProperty("name")
- private String itemName;
-
- @JsonProperty("description")
- private String itemDescription;
-
- @JsonProperty("available")
- private Boolean isAvailable;
-
- @JsonProperty("userId")
- private Long ownerId;
-
- private Long requestId;
-
- private BookingResponseDto lastBooking;
-
- private BookingResponseDto nextBooking;
-
- private List comments;
-}
diff --git a/src/main/java/ru/practicum/shareit/item/interfaces/CommentRepository.java b/src/main/java/ru/practicum/shareit/item/interfaces/CommentRepository.java
deleted file mode 100644
index 01f501c..0000000
--- a/src/main/java/ru/practicum/shareit/item/interfaces/CommentRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ru.practicum.shareit.item.interfaces;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import ru.practicum.shareit.item.model.Comment;
-
-import java.util.Collection;
-
-public interface CommentRepository extends JpaRepository {
-
- Comment save(Comment comment);
-
- Collection getCommentsByItem_ItemId(Long itemId);
-}
diff --git a/src/main/java/ru/practicum/shareit/item/interfaces/ItemRepository.java b/src/main/java/ru/practicum/shareit/item/interfaces/ItemRepository.java
deleted file mode 100644
index d27984b..0000000
--- a/src/main/java/ru/practicum/shareit/item/interfaces/ItemRepository.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package ru.practicum.shareit.item.interfaces;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import ru.practicum.shareit.item.model.Item;
-
-import java.util.Collection;
-import java.util.Optional;
-
-public interface ItemRepository extends JpaRepository
- {
- Item save(Item item);
-
- Optional
- getItemByItemId(Long itemId);
-
- Collection
- getItemsByOwner_UserId(Long ownerUserId);
-
- @Query(value = "SELECT i FROM Item i WHERE upper(i.itemName) like upper(concat('%', ?1, '%')) " +
- " OR upper(i.itemDescription) LIKE upper(concat('%', ?1, '%'))")
- Collection
- searchByTextContainingIgnoreCase(String text);
-}
diff --git a/src/main/java/ru/practicum/shareit/item/interfaces/ItemServiceInterface.java b/src/main/java/ru/practicum/shareit/item/interfaces/ItemServiceInterface.java
index 722ac82..053d40c 100644
--- a/src/main/java/ru/practicum/shareit/item/interfaces/ItemServiceInterface.java
+++ b/src/main/java/ru/practicum/shareit/item/interfaces/ItemServiceInterface.java
@@ -2,14 +2,13 @@
import ru.practicum.shareit.item.dto.ItemRequestDto;
import ru.practicum.shareit.item.dto.ItemResponseDto;
-import ru.practicum.shareit.item.dto.ItemResponseDtoWithComments;
import java.util.Collection;
public interface ItemServiceInterface {
ItemResponseDto createItem(ItemRequestDto item, Long ownerId);
- ItemResponseDtoWithComments getItemById(Long id, Long ownerId);
+ ItemResponseDto getItemById(Long id);
ItemResponseDto updateItem(Long itemId, ItemRequestDto item, Long ownerId);
diff --git a/src/main/java/ru/practicum/shareit/item/mapper/CommentMapper.java b/src/main/java/ru/practicum/shareit/item/mapper/CommentMapper.java
deleted file mode 100644
index ff396e8..0000000
--- a/src/main/java/ru/practicum/shareit/item/mapper/CommentMapper.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package ru.practicum.shareit.item.mapper;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.MappingConstants;
-import ru.practicum.shareit.item.dto.CommentRequestDto;
-import ru.practicum.shareit.item.dto.CommentResponseCreatedDto;
-import ru.practicum.shareit.item.dto.CommentResponseDto;
-import ru.practicum.shareit.item.model.Comment;
-
-@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
-public interface CommentMapper {
- Comment toComment(CommentRequestDto comment);
-
- CommentResponseDto toCommentResponseDto(Comment comment);
-
-
- default CommentResponseCreatedDto toCommentResponseCreatedDto(Comment comment) {
- if (comment == null) {
- return null;
- }
-
- CommentResponseCreatedDto commentResponseCreatedDto = new CommentResponseCreatedDto();
- commentResponseCreatedDto.setCommentId(comment.getCommentId());
- commentResponseCreatedDto.setText(comment.getText());
- commentResponseCreatedDto.setAuthorName(comment.getAuthor().getUserName());
-
- return commentResponseCreatedDto;
- }
-
-}
diff --git a/src/main/java/ru/practicum/shareit/item/mapper/ItemMapper.java b/src/main/java/ru/practicum/shareit/item/mapper/ItemMapper.java
index 38eb932..6835d2c 100644
--- a/src/main/java/ru/practicum/shareit/item/mapper/ItemMapper.java
+++ b/src/main/java/ru/practicum/shareit/item/mapper/ItemMapper.java
@@ -2,10 +2,8 @@
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;
-import ru.practicum.shareit.item.dto.ItemBookerDto;
import ru.practicum.shareit.item.dto.ItemRequestDto;
import ru.practicum.shareit.item.dto.ItemResponseDto;
-import ru.practicum.shareit.item.dto.ItemResponseDtoWithComments;
import ru.practicum.shareit.item.model.Item;
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
@@ -16,48 +14,6 @@ public interface ItemMapper {
Item toItem(ItemRequestDto itemRequestDto);
- default ItemResponseDto toItemResponseDto(Item item) {
- if (item == null) {
- return null;
- }
-
- ItemResponseDto itemResponseDto = new ItemResponseDto();
- itemResponseDto.setItemId(item.getItemId());
- itemResponseDto.setItemName(item.getItemName());
- itemResponseDto.setItemDescription(item.getItemDescription());
- itemResponseDto.setIsAvailable(item.getIsAvailable());
- itemResponseDto.setOwnerId(item.getOwner().getUserId());
-
- if (item.getItemRequest() != null) {
- itemResponseDto.setRequestId(item.getItemRequest().getRequesterId());
- }
-
- return itemResponseDto;
-
- }
-
- ItemBookerDto toItemBookerDto(Item item);
-
- default ItemResponseDtoWithComments toItemResponseDtoWithComments(Item item) {
- if (item == null) {
- return null;
- }
-
- ItemResponseDtoWithComments itemResponseDtoWithComments = new ItemResponseDtoWithComments();
-
- itemResponseDtoWithComments.setItemId(item.getItemId());
- itemResponseDtoWithComments.setItemName(item.getItemName());
- itemResponseDtoWithComments.setItemDescription(item.getItemDescription());
- itemResponseDtoWithComments.setIsAvailable(item.getIsAvailable());
- itemResponseDtoWithComments.setItemId(item.getItemId());
- itemResponseDtoWithComments.setOwnerId(item.getOwner().getUserId());
-
- if (item.getItemRequest() != null) {
- itemResponseDtoWithComments.setRequestId(item.getItemRequest().getItemRequestId());
- }
-
- return itemResponseDtoWithComments;
-
- }
+ ItemResponseDto toItemResponseDto(Item item);
}
diff --git a/src/main/java/ru/practicum/shareit/item/model/Comment.java b/src/main/java/ru/practicum/shareit/item/model/Comment.java
deleted file mode 100644
index f979f3e..0000000
--- a/src/main/java/ru/practicum/shareit/item/model/Comment.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package ru.practicum.shareit.item.model;
-
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-import ru.practicum.shareit.user.model.User;
-
-@NoArgsConstructor
-@AllArgsConstructor
-@Data
-@Entity
-@ToString
-@Table(name = "comments")
-public class Comment {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "comment_id")
- private Long commentId;
-
- @Column(name = "text")
- private String text;
-
- @ManyToOne(targetEntity = User.class, cascade = CascadeType.ALL)
- @JoinColumn(name = "author_id")
- private User author;
-
- @ManyToOne(targetEntity = Item.class,cascade = CascadeType.ALL, fetch = FetchType.LAZY)
- @JoinColumn(name = "item_id")
- private Item item;
-
-}
\ No newline at end of file
diff --git a/src/main/java/ru/practicum/shareit/item/model/Item.java b/src/main/java/ru/practicum/shareit/item/model/Item.java
index c1d6d11..6fcf2d1 100644
--- a/src/main/java/ru/practicum/shareit/item/model/Item.java
+++ b/src/main/java/ru/practicum/shareit/item/model/Item.java
@@ -1,42 +1,20 @@
package ru.practicum.shareit.item.model;
-import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import lombok.ToString;
-import ru.practicum.shareit.request.ItemRequest;
-import ru.practicum.shareit.user.model.User;
+
@Data
@NoArgsConstructor
@AllArgsConstructor
-@Entity
-@ToString
-@Table(name = "items")
public class Item {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "item_id")
private Long itemId;
-
- @Column(name = "item_name")
private String itemName;
-
- @Column(name = "item_description")
private String itemDescription;
-
- @Column(name = "is_available")
private Boolean isAvailable;
-
- @ManyToOne
- @JoinColumn(name = "owner_id")
- private User owner;
-
- @ManyToOne
- @JoinColumn(name = "request_id")
- private ItemRequest itemRequest;
-
+ private Long ownerId;
+ private Long requestId;
}
diff --git a/src/main/java/ru/practicum/shareit/request/ItemRequest.java b/src/main/java/ru/practicum/shareit/request/ItemRequest.java
index 0da7fda..c12fab1 100644
--- a/src/main/java/ru/practicum/shareit/request/ItemRequest.java
+++ b/src/main/java/ru/practicum/shareit/request/ItemRequest.java
@@ -1,35 +1,13 @@
package ru.practicum.shareit.request;
-import jakarta.persistence.*;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-
import java.time.LocalDate;
/**
* TODO Sprint add-item-requests.
*/
-@Data
-@Entity
-@Table(name = "requests")
-@AllArgsConstructor
-@NoArgsConstructor
-@ToString
public class ItemRequest {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "request_id")
private Long itemRequestId;
-
- @Column(name = "description")
private String requestDescription;
-
- @Column(name = "requestor_id")
private Long requesterId;
-
- @Transient
private LocalDate requestDate;
}
diff --git a/src/main/java/ru/practicum/shareit/request/interfaces/RequestRepository.java b/src/main/java/ru/practicum/shareit/request/interfaces/RequestRepository.java
deleted file mode 100644
index cea05b1..0000000
--- a/src/main/java/ru/practicum/shareit/request/interfaces/RequestRepository.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package ru.practicum.shareit.request.interfaces;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import ru.practicum.shareit.request.ItemRequest;
-
-public interface RequestRepository extends JpaRepository {
- ItemRequest save(ItemRequest item);
-}
diff --git a/src/main/java/ru/practicum/shareit/user/UserController.java b/src/main/java/ru/practicum/shareit/user/UserController.java
index 0289b90..4c334a4 100644
--- a/src/main/java/ru/practicum/shareit/user/UserController.java
+++ b/src/main/java/ru/practicum/shareit/user/UserController.java
@@ -12,7 +12,7 @@
@RequestMapping(path = "/users")
@RequiredArgsConstructor
public class UserController {
- private final UserServiceImpl userService;
+ private final UserService userService;
@PostMapping
public UserResponseDto createUser(@Valid @RequestBody UserRequestDto user) {
diff --git a/src/main/java/ru/practicum/shareit/user/UserServiceImpl.java b/src/main/java/ru/practicum/shareit/user/UserService.java
similarity index 65%
rename from src/main/java/ru/practicum/shareit/user/UserServiceImpl.java
rename to src/main/java/ru/practicum/shareit/user/UserService.java
index c988d8a..e4c8802 100644
--- a/src/main/java/ru/practicum/shareit/user/UserServiceImpl.java
+++ b/src/main/java/ru/practicum/shareit/user/UserService.java
@@ -6,7 +6,6 @@
import ru.practicum.shareit.exception.NotFoundException;
import ru.practicum.shareit.user.dto.UserRequestDto;
import ru.practicum.shareit.user.dto.UserResponseDto;
-import ru.practicum.shareit.user.interfaces.UserRepository;
import ru.practicum.shareit.user.interfaces.UserServiceInterface;
import ru.practicum.shareit.user.mapper.UserMapper;
import ru.practicum.shareit.user.model.User;
@@ -16,54 +15,42 @@
@Service
@AllArgsConstructor
-public class UserServiceImpl implements UserServiceInterface {
+public class UserService implements UserServiceInterface {
- private final UserRepository userStorage;
+ private final UserStorage userStorage;
private final UserMapper userMapper;
public UserResponseDto createUser(UserRequestDto user) {
validateEmail(user.getUserEmail());
User newUser = userMapper.toUser(user);
- return userMapper.toUserResponseDto(userStorage.save(newUser));
+ return userMapper.toUserResponseDto(userStorage.createUser(newUser));
}
public UserResponseDto getUserById(Long userId) throws NotFoundException {
- return userMapper.toUserResponseDto(userStorage.getUserByUserId(userId)
+ return userMapper.toUserResponseDto(userStorage.getUserById(userId)
.orElseThrow(() -> new NotFoundException("User not found, id = " + userId)));
}
public UserResponseDto updateUser(Long userId, UserRequestDto user) throws NotFoundException {
- User updated = userStorage.getUserByUserId(userId)
- .orElseThrow(() -> new NotFoundException("User not found, id = " + userId));
-
validateEmail(user.getUserEmail());
-
- if (user.getUserEmail() != null) {
- updated.setUserEmail(user.getUserEmail());
- }
-
- if (user.getUserName() != null) {
- updated.setUserName(user.getUserName());
- }
-
- return userMapper.toUserResponseDto(userStorage.save(updated));
+ return userMapper.toUserResponseDto(userStorage.updateUser(userId, userMapper.toUser(user)));
}
public void deleteUser(Long userId) throws NotFoundException {
- User user = userMapper.toUser(getUserById(userId));
- userStorage.delete(user);
+ getUserById(userId);
+ userStorage.deleteUser(userId);
}
public void deleteAllUsers() {
- userStorage.deleteAll();
+ userStorage.deleteAllUsers();
}
private void validateEmail(String email) {
- Collection users = userStorage.findAll();
+ Collection users = userStorage.getAllUsers();
if (!users.isEmpty()) {
Optional first =
- userStorage.findAll().stream()
+ userStorage.getAllUsers().stream()
.map(User::getUserEmail)
.filter(userEmail -> userEmail.equals(email))
.findFirst();
diff --git a/src/main/java/ru/practicum/shareit/user/dto/UserAuthorDto.java b/src/main/java/ru/practicum/shareit/user/dto/UserAuthorDto.java
deleted file mode 100644
index dbc923a..0000000
--- a/src/main/java/ru/practicum/shareit/user/dto/UserAuthorDto.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ru.practicum.shareit.user.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class UserAuthorDto {
- @NotNull
- @JsonProperty("id")
- private Long userId;
-
- @JsonProperty("authorName")
- private String userName;
-}
diff --git a/src/main/java/ru/practicum/shareit/user/dto/UserBookingDto.java b/src/main/java/ru/practicum/shareit/user/dto/UserBookingDto.java
deleted file mode 100644
index ef634fa..0000000
--- a/src/main/java/ru/practicum/shareit/user/dto/UserBookingDto.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package ru.practicum.shareit.user.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class UserBookingDto {
- @NotNull
- @JsonProperty("id")
- private Long userId;
-
- @JsonProperty("name")
- private String userName;
-
-}
diff --git a/src/main/java/ru/practicum/shareit/user/interfaces/UserRepository.java b/src/main/java/ru/practicum/shareit/user/interfaces/UserRepository.java
deleted file mode 100644
index 2024294..0000000
--- a/src/main/java/ru/practicum/shareit/user/interfaces/UserRepository.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ru.practicum.shareit.user.interfaces;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import ru.practicum.shareit.user.model.User;
-
-import java.util.List;
-import java.util.Optional;
-
-public interface UserRepository extends JpaRepository {
- User save(User user);
-
- Optional getUserByUserId(Long userId);
-
- List findAll();
-
- void deleteUserByUserId(Long id);
-
- void deleteAll();
-}
diff --git a/src/main/java/ru/practicum/shareit/user/mapper/UserMapper.java b/src/main/java/ru/practicum/shareit/user/mapper/UserMapper.java
index feeeb99..086a773 100644
--- a/src/main/java/ru/practicum/shareit/user/mapper/UserMapper.java
+++ b/src/main/java/ru/practicum/shareit/user/mapper/UserMapper.java
@@ -1,13 +1,13 @@
package ru.practicum.shareit.user.mapper;
+import org.mapstruct.InjectionStrategy;
import org.mapstruct.Mapper;
-import ru.practicum.shareit.user.dto.UserAuthorDto;
-import ru.practicum.shareit.user.dto.UserBookingDto;
import ru.practicum.shareit.user.dto.UserRequestDto;
import ru.practicum.shareit.user.dto.UserResponseDto;
import ru.practicum.shareit.user.model.User;
-@Mapper(componentModel = "spring")
+@Mapper(componentModel = "spring", uses = UserMapper
+ .class, injectionStrategy = InjectionStrategy.CONSTRUCTOR)
public interface UserMapper {
UserRequestDto toUserRequestDto(User user);
@@ -17,9 +17,4 @@ public interface UserMapper {
UserResponseDto toUserResponseDto(User user);
User toUser(UserResponseDto userDto);
-
- UserAuthorDto toUserAuthorDto(User user);
-
- UserBookingDto toUserBookingDto(User booker);
-
}
diff --git a/src/main/java/ru/practicum/shareit/user/model/User.java b/src/main/java/ru/practicum/shareit/user/model/User.java
index 5d289c4..c7c00cc 100644
--- a/src/main/java/ru/practicum/shareit/user/model/User.java
+++ b/src/main/java/ru/practicum/shareit/user/model/User.java
@@ -1,27 +1,14 @@
package ru.practicum.shareit.user.model;
-import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import lombok.ToString;
@Data
@NoArgsConstructor
@AllArgsConstructor
-@Entity
-@ToString
-@Table(name = "users")
public class User {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "user_id")
private Long userId;
-
- @Column(name = "user_name")
private String userName;
-
- @Column(name = "user_email")
private String userEmail;
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index e1fc5d9..b9e5d4b 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,13 +1,14 @@
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.format_sql=true
-spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.sql.init.mode=always
-spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
-spring.datasource.driverClassName=org.postgresql.Driver
-spring.datasource.username=user
-spring.datasource.password=12345
logging.level.org.springframework.orm.jpa=INFO
logging.level.org.springframework.transaction=INFO
logging.level.org.springframework.transaction.interceptor=TRACE
-logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
\ No newline at end of file
+logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG
+
+# TODO Append connection to DB
+#spring.datasource.driverClassName
+#spring.datasource.url
+#spring.datasource.username
+#spring.datasource.password
diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql
deleted file mode 100644
index c07802f..0000000
--- a/src/main/resources/schema.sql
+++ /dev/null
@@ -1,42 +0,0 @@
-CREATE TABLE IF NOT EXISTS users (
- user_id BIGSERIAL PRIMARY KEY,
- user_name CHARACTER VARYING(255) NOT NULL,
- user_email CHARACTER VARYING(500) NOT NULL UNIQUE
-);
-
-CREATE TABLE IF NOT EXISTS items (
- item_id BIGSERIAL PRIMARY KEY,
- item_name CHARACTER VARYING(255) NOT NULL,
- item_description CHARACTER VARYING(150) NOT NULL,
- is_available BOOLEAN NOT NULL,
- owner_id BIGINT NOT NULL,
- request_id BIGINT,
- CONSTRAINT fk_items_to_users FOREIGN KEY(owner_id) REFERENCES users(user_id) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS comments (
- comment_id BIGSERIAL PRIMARY KEY,
- text CHARACTER VARYING(2000) NOT NULL,
- item_id BIGINT NOT NULL,
- author_id BIGINT NOT NULL,
- CONSTRAINT fk_comments_to_users FOREIGN KEY (author_id) REFERENCES users (user_id) ON DELETE CASCADE,
- CONSTRAINT fk_comments_to_items FOREIGN KEY (item_id) REFERENCES items(item_id) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS bookings (
- booking_id BIGSERIAL PRIMARY KEY,
- start_date TIMESTAMP WITHOUT TIME ZONE NOT NULL,
- end_date TIMESTAMP WITHOUT TIME ZONE NOT NULL,
- item_id BIGINT NOT NULL,
- booker_id BIGINT NOT NULL,
- status CHARACTER VARYING (50),
- FOREIGN KEY (item_id) REFERENCES items (item_id) ON DELETE CASCADE,
- FOREIGN KEY (booker_id) REFERENCES users (user_id) ON DELETE CASCADE
-);
-
-CREATE TABLE IF NOT EXISTS requests (
- request_id BIGSERIAL PRIMARY KEY,
- requestor_id BIGINT NOT NULL,
- description CHARACTER VARYING (200),
- FOREIGN KEY (requestor_id) REFERENCES users (user_id) ON DELETE CASCADE
-);
\ No newline at end of file
diff --git a/src/test/java/ru/practicum/shareit/mapperTest/ItemMapperTest.java b/src/test/java/ru/practicum/shareit/ItemMapperTest.java
similarity index 57%
rename from src/test/java/ru/practicum/shareit/mapperTest/ItemMapperTest.java
rename to src/test/java/ru/practicum/shareit/ItemMapperTest.java
index 5143e32..05ba9ca 100644
--- a/src/test/java/ru/practicum/shareit/mapperTest/ItemMapperTest.java
+++ b/src/test/java/ru/practicum/shareit/ItemMapperTest.java
@@ -1,15 +1,12 @@
-package ru.practicum.shareit.mapperTest;
+package ru.practicum.shareit;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
-import ru.practicum.shareit.item.dto.*;
+import ru.practicum.shareit.item.dto.ItemRequestDto;
+import ru.practicum.shareit.item.dto.ItemResponseDto;
import ru.practicum.shareit.item.mapper.ItemMapper;
import ru.practicum.shareit.item.model.Item;
-import ru.practicum.shareit.request.ItemRequest;
-import ru.practicum.shareit.user.model.User;
-
-import java.time.LocalDate;
import static org.junit.jupiter.api.Assertions.*;
@@ -19,11 +16,6 @@ public class ItemMapperTest {
@Autowired
private ItemMapper itemMapper;
- User user = new User(1L, "testName1", "test1@test.com");
-
- ItemRequest itemRequest = new ItemRequest(1L, "testDescription1",
- 1L, LocalDate.of(2025, 6, 25));
-
@Test
public void itemRequestDtoToItemTest() {
ItemRequestDto itemRequestDto = new ItemRequestDto(
@@ -36,13 +28,14 @@ public void itemRequestDtoToItemTest() {
assertEquals("TestName", item.getItemName());
assertEquals("Test description", item.getItemDescription());
assertEquals(true, item.getIsAvailable());
- assertNull(item.getOwner());
+ assertNull(item.getOwnerId());
+ assertEquals(1L, item.getRequestId());
});
}
@Test
public void itemToItemResponseDtoTest() {
- Item item = new Item(2L, "TestName2", "Test description2", true, user, itemRequest);
+ Item item = new Item(2L, "TestName2", "Test description2", true, 2L, 2L);
ItemResponseDto itemResponseDto = itemMapper.toItemResponseDto(item);
assertAll(() -> {
@@ -50,8 +43,8 @@ public void itemToItemResponseDtoTest() {
assertEquals("TestName2", itemResponseDto.getItemName());
assertEquals("Test description2", itemResponseDto.getItemDescription());
assertEquals(true, itemResponseDto.getIsAvailable());
- assertEquals(user.getUserId(), itemResponseDto.getOwnerId());
- assertEquals(itemRequest.getItemRequestId(), itemResponseDto.getRequestId());
+ assertEquals(2L, itemResponseDto.getOwnerId());
+ assertEquals(2L, itemResponseDto.getRequestId());
});
}
@@ -74,8 +67,7 @@ public void itemRequestDtoToItemResponseDtoTest() {
@Test
public void itemResponseDtoToItemRequestDtoTest() {
ItemResponseDto itemResponseDto = new ItemResponseDto(
- 4L, "TestName4", "Test description4",
- false, 4L, 4L);
+ 4L, "TestName4", "Test description4", false, 4L, 4L);
ItemRequestDto itemRequestDto = itemMapper.toItemRequestDto(itemResponseDto);
assertAll(() -> {
assertEquals(4L, itemRequestDto.getItemId());
@@ -86,37 +78,4 @@ public void itemResponseDtoToItemRequestDtoTest() {
});
}
- @Test
- public void itemToItemResponseDtoWithCommentsTest() {
-
- Item item = new Item(2L, "testName2", "testDescription2",
- true, user, itemRequest);
-
- ItemResponseDtoWithComments itemResponse = itemMapper.toItemResponseDtoWithComments(item);
-
- assertAll(() -> {
- assertEquals(2L, itemResponse.getItemId());
- assertEquals("testName2", itemResponse.getItemName());
- assertEquals("testDescription2", itemResponse.getItemDescription());
- assertEquals(true, itemResponse.getIsAvailable());
- assertEquals(user.getUserId(), itemResponse.getOwnerId());
- assertEquals(itemRequest.getItemRequestId(), itemResponse.getRequestId());
- assertNull(itemResponse.getComments());
- assertNull(itemResponse.getLastBooking());
- assertNull(itemResponse.getNextBooking());
- });
- }
-
- @Test
- public void itemToItemBookerDto() {
- Item item = new Item(2L, "testName2", "testDescription2",
- true, user, itemRequest);
-
- ItemBookerDto itemBookerDto = itemMapper.toItemBookerDto(item);
-
- assertAll(() -> {
- assertEquals(2L, itemBookerDto.getItemId());
- assertEquals("testName2", itemBookerDto.getItemName());
- });
- }
}
diff --git a/src/test/java/ru/practicum/shareit/mapperTest/UserMapperTest.java b/src/test/java/ru/practicum/shareit/UserMapperTest.java
similarity index 72%
rename from src/test/java/ru/practicum/shareit/mapperTest/UserMapperTest.java
rename to src/test/java/ru/practicum/shareit/UserMapperTest.java
index b79e842..0bd6da2 100644
--- a/src/test/java/ru/practicum/shareit/mapperTest/UserMapperTest.java
+++ b/src/test/java/ru/practicum/shareit/UserMapperTest.java
@@ -1,10 +1,8 @@
-package ru.practicum.shareit.mapperTest;
+package ru.practicum.shareit;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
-import ru.practicum.shareit.user.dto.UserAuthorDto;
-import ru.practicum.shareit.user.dto.UserBookingDto;
import ru.practicum.shareit.user.dto.UserRequestDto;
import ru.practicum.shareit.user.dto.UserResponseDto;
import ru.practicum.shareit.user.mapper.UserMapper;
@@ -64,28 +62,4 @@ public void userToUserResponseDtoTest() {
assertEquals("test4@test.com", userResponseDto.getUserEmail());
});
}
-
- @Test
- public void userToUserAuthorDtoTest() {
- User user = new User(5L, "TestName5", "test5@test.com");
-
- UserAuthorDto userAuthorDto = userMapper.toUserAuthorDto(user);
-
- assertAll(() -> {
- assertEquals(5L, userAuthorDto.getUserId());
- assertEquals("TestName5", userAuthorDto.getUserName());
- });
- }
-
- @Test
- public void userToUserBookingDtoTest() {
- User user = new User(6L, "TestName6", "test6@test.com");
-
- UserBookingDto userBookingDto = userMapper.toUserBookingDto(user);
-
- assertAll(() -> {
- assertEquals(6L, userBookingDto.getUserId());
- assertEquals("TestName6", userBookingDto.getUserName());
- });
- }
}
diff --git a/src/test/java/ru/practicum/shareit/mapperTest/BookingMapperTest.java b/src/test/java/ru/practicum/shareit/mapperTest/BookingMapperTest.java
deleted file mode 100644
index 5744f96..0000000
--- a/src/test/java/ru/practicum/shareit/mapperTest/BookingMapperTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package ru.practicum.shareit.mapperTest;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import ru.practicum.shareit.booking.dto.BookingRequestDto;
-import ru.practicum.shareit.booking.dto.BookingResponseDto;
-import ru.practicum.shareit.booking.mapper.BookingMapper;
-import ru.practicum.shareit.booking.model.Booking;
-import ru.practicum.shareit.booking.model.BookingStatus;
-import ru.practicum.shareit.item.dto.ItemBookerDto;
-import ru.practicum.shareit.item.mapper.ItemMapper;
-import ru.practicum.shareit.item.model.Item;
-import ru.practicum.shareit.request.ItemRequest;
-import ru.practicum.shareit.user.dto.UserBookingDto;
-import ru.practicum.shareit.user.mapper.UserMapper;
-import ru.practicum.shareit.user.model.User;
-
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-
-import static org.junit.jupiter.api.Assertions.assertAll;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@SpringBootTest
-public class BookingMapperTest {
- @Autowired
- private BookingMapper bookingMapper;
-
- @Autowired
- private UserMapper userMapper;
-
- @Autowired
- private ItemMapper itemMapper;
-
- User user = new User(1L, "testName1", "test1@test.com");
-
- ItemRequest itemRequest = new ItemRequest(1L, "testDescription1",
- 1L, LocalDate.of(2025, 6, 25));
-
- Item item = new Item(1L, "TestName1", "Test description1", true, user, itemRequest);
- LocalDateTime startTime = LocalDateTime.of(2025, 6, 25, 12, 30);
- LocalDateTime endTime = LocalDateTime.of(2025, 6, 27, 13, 30);
-
- @Test
- public void bookingRequestDtoToBookingTest() {
- BookingRequestDto bookingRequestDto = new BookingRequestDto();
-
- bookingRequestDto.setBookingId(1L);
- bookingRequestDto.setStart(startTime);
- bookingRequestDto.setEnd(endTime);
- bookingRequestDto.setStatus(BookingStatus.WAITING);
-
- Booking booking = bookingMapper.bookingRequestDtoToBooking(bookingRequestDto);
- assertAll(() -> {
- assertEquals(booking.getBookingId(), bookingRequestDto.getBookingId());
- assertEquals(booking.getStart(), bookingRequestDto.getStart());
- assertEquals(booking.getEnd(), bookingRequestDto.getEnd());
- assertEquals(booking.getStatus(), bookingRequestDto.getStatus());
- });
- }
-
- @Test
- public void bookingToBookingResponseDtoTest() {
- Booking booking = new Booking(3L, startTime, endTime, item, user, BookingStatus.APPROVED);
-
- BookingResponseDto bookingResponseDto = bookingMapper.bookingToBookingResponseDto(booking);
-
- ItemBookerDto itemBookerDto = itemMapper.toItemBookerDto(item);
- UserBookingDto userBookingDto = userMapper.toUserBookingDto(user);
- assertAll(() -> {
- assertEquals(booking.getBookingId(), bookingResponseDto.getBookingId());
- assertEquals(booking.getStart(), bookingResponseDto.getStart());
- assertEquals(booking.getEnd(), bookingResponseDto.getEnd());
- assertEquals(booking.getStatus(), bookingResponseDto.getStatus());
- assertEquals(userBookingDto, bookingResponseDto.getBooker());
- assertEquals(itemBookerDto, bookingResponseDto.getItem());
- });
- }
-}
diff --git a/src/test/java/ru/practicum/shareit/mapperTest/CommentMapperTest.java b/src/test/java/ru/practicum/shareit/mapperTest/CommentMapperTest.java
deleted file mode 100644
index 6b7179f..0000000
--- a/src/test/java/ru/practicum/shareit/mapperTest/CommentMapperTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package ru.practicum.shareit.mapperTest;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import ru.practicum.shareit.item.dto.CommentRequestDto;
-import ru.practicum.shareit.item.dto.CommentResponseCreatedDto;
-import ru.practicum.shareit.item.dto.CommentResponseDto;
-import ru.practicum.shareit.item.mapper.CommentMapper;
-import ru.practicum.shareit.item.model.Comment;
-import ru.practicum.shareit.item.model.Item;
-import ru.practicum.shareit.request.ItemRequest;
-import ru.practicum.shareit.user.dto.UserAuthorDto;
-import ru.practicum.shareit.user.mapper.UserMapper;
-import ru.practicum.shareit.user.model.User;
-
-import java.time.LocalDate;
-
-import static org.junit.jupiter.api.Assertions.assertAll;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@SpringBootTest
-public class CommentMapperTest {
- @Autowired
- private CommentMapper commentMapper;
-
- @Autowired
- private UserMapper userMapper;
-
- User user = new User(1L, "testName1", "test1@test.com");
-
- ItemRequest itemRequest = new ItemRequest(1L, "testDescription1",
- 1L, LocalDate.of(2025, 6, 25));
-
- Item item = new Item(1L, "TestName1", "Test description1", true, user, itemRequest);
-
- @Test
- public void commentToCommentDtoTest() {
- Comment comment = new Comment(1L, "testComment1", user, item);
- UserAuthorDto authorDto = userMapper.toUserAuthorDto(user);
- CommentResponseDto commentResponseDto = commentMapper.toCommentResponseDto(comment);
-
- assertAll(() -> {
- assertEquals("testComment1", commentResponseDto.getText());
- assertEquals(1L, commentResponseDto.getCommentId());
- assertEquals(authorDto, commentResponseDto.getAuthor());
- });
- }
-
- @Test
- public void commentToCommentResponseCreatedDtoTest() {
- Comment comment = new Comment(1L, "testComment1", user, item);
-
- CommentResponseCreatedDto createdDto = commentMapper.toCommentResponseCreatedDto(comment);
- assertAll(() -> {
- assertEquals("testComment1", createdDto.getText());
- assertEquals(1L, createdDto.getCommentId());
- assertEquals(user.getUserName(), createdDto.getAuthorName());
- assertEquals(true, createdDto.getCreated());
- });
- }
-
- @Test
- public void commentRequestDtoToCommentTest() {
- CommentRequestDto commentRequestDto = new CommentRequestDto();
- commentRequestDto.setAuthorId(user.getUserId());
- commentRequestDto.setText("testComment1");
-
- Comment comment = commentMapper.toComment(commentRequestDto);
-
- assertAll(() -> assertEquals("testComment1", comment.getText()));
- }
-}
diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties
deleted file mode 100644
index 0024b61..0000000
--- a/src/test/resources/application.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-spring.sql.init.mode=always
-spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
-spring.datasource.driverClassName=org.h2.Driver
-spring.datasource.username=user
-spring.datasource.password=12345
-
-spring.jpa.properties.hibernate.format_sql=true
-spring.jpa.properties.hibernate.jdbc.time_zone=UTC
-spring.jpa.hibernate.ddl-auto=create-drop
-spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
\ No newline at end of file