Skip to content

Commit

Permalink
Merge pull request #128 from Tech-Harbor/Bezsmertnyi
Browse files Browse the repository at this point in the history
Bezsmertnyi
  • Loading branch information
Vladik-gif authored May 17, 2024
2 parents 1921cdc + 134ba3b commit 057c196
Show file tree
Hide file tree
Showing 51 changed files with 554 additions and 456 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ bin/

### IntelliJ IDEA ###
.idea
.env
*.iws
*.iml
*.ipr
Expand Down
2 changes: 1 addition & 1 deletion documentation/API.http
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ Content-Type: application/json
GRAPHQL http://localhost:8080/graphql

query {
getAllProducts {
getAllAdvertisement {
name
price
location
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class AuthController {
private static final String FORM_CHANGE_PASSWORD_URI = "/change-password";
private static final String REQUEST_EMAIL_UPDATE_PASSWORD = "/request/email";
private static final String ACTIVE_USER = "/active";
private static final String INFO = "/accouth";
private static final String PROFILE_USER = "/profile";
private static final String SEND_MESSAGE_EMAIL_NOT_ACTIVE = "/sendMessageEmailActive";

@PostMapping(SIGNUP_URI)
Expand Down Expand Up @@ -65,11 +65,11 @@ public void updatePassword(@RequestHeader(AUTHORIZATION) final String jwt,
authService.formUpdatePassword(jwt, passwordRequest);
}

@GetMapping(INFO)
@GetMapping(PROFILE_USER)
@Operation(summary = "Information about the user who is authorized and logged into the system")
@ApiResponseInfoOK
public UserInfoDTO info(@RequestHeader(AUTHORIZATION) final String accessToken) {
return authService.info(accessToken);
public UserInfoDTO profile(@RequestHeader(AUTHORIZATION) final String accessToken) {
return authService.profileUser(accessToken);
}

@PostMapping(REQUEST_EMAIL_UPDATE_PASSWORD)
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,5 @@ public interface AuthService {
* @return UserInfoDTO containing the user's information
* @throws RuntimeException if a user with the extracted data is not found
*/
UserInfoDTO info(String accessToken);
UserInfoDTO profileUser(String accessToken);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import com.example.backend.security.service.JwtService;
import com.example.backend.security.service.JwtTokenService;
import com.example.backend.utils.general.MyPasswordEncoder;
import com.example.backend.web.User.store.UserEntity;
import com.example.backend.web.User.UserService;
import com.example.backend.web.User.store.UserEntity;
import com.example.backend.web.User.store.dto.UserInfoDTO;
import com.example.backend.web.User.store.factory.UserInfoFactory;
import lombok.RequiredArgsConstructor;
Expand All @@ -21,6 +21,7 @@
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import jakarta.transaction.Transactional;

import java.util.Properties;

Expand All @@ -42,6 +43,7 @@ public class AuthServiceImpl implements AuthService {
private final JwtService jwtService;

@Override
@Transactional
public void signup(final RegisterRequest registerRequest) {
final var existUser = userService.getByEmail(registerRequest.email());

Expand Down Expand Up @@ -94,6 +96,7 @@ public AuthResponse login(final AuthRequest authRequest) {
}

@Override
@Transactional
public void formUpdatePassword(final String jwt, final PasswordRequest passwordRequest) {
final var token = jwtService.extractUserData(jwt.substring(7));

Expand Down Expand Up @@ -123,6 +126,7 @@ public void requestEmailUpdatePassword(final EmailRequest emailRequest) {
}

@Override
@Transactional
public void activeUser(final String jwt) {
final var token = jwtService.extractUserData(jwt.substring(7));

Expand Down Expand Up @@ -153,7 +157,7 @@ public void sendEmailActive(final EmailRequest emailRequest) {
}

@Override
public UserInfoDTO info(final String accessToken) {
public UserInfoDTO profileUser(final String accessToken) {
final var token = jwtService.extractUserData(accessToken.substring(7));

final var user = userService.getByUserData(token);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.example.backend.utils.general;


import com.example.backend.web.Category.CategoryEntity;
import com.example.backend.web.Product.ProductDTO;
import com.example.backend.web.Product.ProductFactory;
import com.example.backend.web.Category.store.CategoryEntity;
import com.example.backend.web.Advertisement.AdvertisementDTO;
import com.example.backend.web.Advertisement.AdvertisementFactory;
import com.example.backend.web.User.store.UserEntity;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
Expand All @@ -17,21 +17,21 @@
@AllArgsConstructor
public class WebIsNullFactory {

private final ProductFactory productFactory;
private final AdvertisementFactory advertisementFactory;

public List<ProductDTO> isNullProductCategory(final CategoryEntity category) {
return Optional.ofNullable(category.getProducts())
public List<AdvertisementDTO> isNullAdvertisementCategory(final CategoryEntity category) {
return Optional.ofNullable(category.getAdvertisements())
.map(list -> list.stream()
.map(productFactory::makeProduct)
.map(advertisementFactory)
.collect(Collectors.toList()))
.orElse(Collections.emptyList());
}

public List<ProductDTO> isNullProductUser(final UserEntity user) {
return Optional.ofNullable(user.getProduct())
public List<AdvertisementDTO> isNullAdvertisementUser(final UserEntity user) {
return Optional.ofNullable(user.getAdvertisements())
.map(list -> list.stream()
.map(productFactory::makeProduct)
.map(advertisementFactory)
.collect(Collectors.toList()))
.orElse(Collections.emptyList());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.example.backend.web.Advertisement;

import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.graphql.data.method.annotation.Argument;
import org.springframework.graphql.data.method.annotation.MutationMapping;
import org.springframework.graphql.data.method.annotation.QueryMapping;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequiredArgsConstructor
@Tag(name = "AdvertisementService")
@RequestMapping("/api/advertisement")
public class AdvertisementController {

private final AdvertisementServiceImpl advertisementService;
private static final String URI_ADVERTISEMENT_ID = "/{id}";
private static final String URL_DELETE_ALL = "/deleteAll";

@PostMapping(URI_ADVERTISEMENT_ID)
@MutationMapping
public AdvertisementDTO createAdvertisementIdByUser(@PathVariable(value = "id") @Argument final Long userId,
@RequestBody @Argument final AdvertisementDTO entity) {
return advertisementService.createAdvertisement(userId, entity);
}

@QueryMapping
public List<AdvertisementDTO> getAllAdvertisement() {
return advertisementService.getAllAdvertisement();
}

@QueryMapping
public AdvertisementDTO getByIdAdvertisement(@Argument final Long id) {
return advertisementService.getOneAdvertisement(id);
}

@PutMapping(URI_ADVERTISEMENT_ID)
public AdvertisementDTO editAdvertisement(@PathVariable final Long id, @RequestBody final AdvertisementDTO entity) {
return advertisementService.editAdvertisement(id, entity);
}

@DeleteMapping(URI_ADVERTISEMENT_ID)
public void deleteIdAdvertisement(@PathVariable final Long id) {
advertisementService.deleteIdAdvertisement(id);
}

@DeleteMapping(URL_DELETE_ALL)
public void deleteAllAdvertisement() {
advertisementService.deleteAll();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.example.backend.web.Advertisement;

import com.example.backend.web.File.store.ImageEntity;
import lombok.Builder;

import java.time.LocalDateTime;
import java.util.List;

@Builder
public record AdvertisementDTO(Long id,
String name,
String descriptionAdvertisement,
String characteristicAdvertisement,
double price,
LocalDateTime createDate,
List<ImageEntity> images,
String location,
String category,
String delivery) { }
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.example.backend.web.Product;
package com.example.backend.web.Advertisement;

import com.example.backend.web.Category.CategoryEntity;
import com.example.backend.web.File.ImageEntity;
import com.example.backend.web.Category.store.CategoryEntity;
import com.example.backend.web.File.store.ImageEntity;
import com.example.backend.web.User.store.UserEntity;
import jakarta.persistence.*;
import lombok.*;
Expand All @@ -10,13 +10,13 @@
import java.util.List;

@Entity
@Table(name = "products")
@Table(name = "advertisements")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ProductEntity {
public class AdvertisementEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Expand All @@ -26,17 +26,20 @@ public class ProductEntity {
private String name;

@Column(columnDefinition = "TEXT", nullable = false)
private String descriptionProduct;
private String descriptionAdvertisement;

@Column(columnDefinition = "TEXT", nullable = false)
private String characteristicProduct;
private String characteristicAdvertisement;

@Column(nullable = false)
private double price;

@Column(nullable = false)
private String location;

@Column(nullable = false)
private String delivery;

@Builder.Default
private LocalDateTime createDate = LocalDateTime.now();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.example.backend.web.Advertisement;

import org.springframework.stereotype.Component;

import java.util.function.Function;

@Component
public class AdvertisementFactory implements Function<AdvertisementEntity, AdvertisementDTO> {
@Override
public AdvertisementDTO apply(final AdvertisementEntity entity) {
return AdvertisementDTO.builder()
.id(entity.getId())
.descriptionAdvertisement(entity.getDescriptionAdvertisement())
.characteristicAdvertisement(entity.getCharacteristicAdvertisement())
.name(entity.getName())
.price(entity.getPrice())
.createDate(entity.getCreateDate())
.category(entity.getCategory().getCategoryName())
.images(entity.getImages())
.location(entity.getLocation())
.delivery(entity.getDelivery())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.example.backend.web.Advertisement;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface AdvertisementRepository extends JpaRepository<AdvertisementEntity, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.example.backend.web.Advertisement;

import java.util.List;

public interface AdvertisementService {
AdvertisementDTO createAdvertisement(Long id, AdvertisementDTO entity);
List<AdvertisementDTO> getAllAdvertisement();
AdvertisementDTO getOneAdvertisement(Long id);
AdvertisementDTO editAdvertisement(Long id, AdvertisementDTO entity);
void deleteIdAdvertisement(Long id);
void deleteAll();
}
Loading

0 comments on commit 057c196

Please sign in to comment.