Skip to content
Open
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
47 changes: 46 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,35 @@
</scm>
<properties>
<java.version>21</java.version>
</properties>
<mapstruct.version>1.6.2</mapstruct.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>


<!-- MapStruct Processor -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
Expand All @@ -58,6 +80,19 @@
<scope>runtime</scope>
</dependency>

<!-- Jakarta Validation API -->
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>3.0.2</version>
</dependency>

<!-- Hibernate Validator (implementation of Jakarta Validation) -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
Expand All @@ -71,6 +106,16 @@
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.skillsync.skillsync.controller;

import com.skillsync.skillsync.dto.UserSearchResponseDTO;
import com.skillsync.skillsync.dto.UserDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Expand All @@ -10,10 +11,18 @@
import com.skillsync.skillsync.model.User;
import com.skillsync.skillsync.service.SkillService;
import com.skillsync.skillsync.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import com.skillsync.skillsync.dto.UserSearchResponseDTO;

import java.util.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.stream.Collectors;

@RestController
Expand Down Expand Up @@ -58,7 +67,7 @@ public List<Skill> getUserSkills(@PathVariable Long id) {
@PutMapping("/update/{id}")
public User updateUser(@PathVariable Long id, @RequestBody UserUpdateDTO user) {
// TODO: Implement update user logic (call service layer)
return null;
return userService.updateUser(id, user);
}


Expand Down
23 changes: 13 additions & 10 deletions src/main/java/com/skillsync/skillsync/dto/SkillDTO.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
package com.skillsync.skillsync.dto;

import com.skillsync.skillsync.model.Skill;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@Setter
@Getter
public class SkillDTO {
private Long id;
private String name;
private String description;

// Static mapper to convert Entity to DTO
public static SkillDTO fromEntity(Skill skill) {
SkillDTO dto = new SkillDTO();
// Assuming Skill.getId() maps to skill_id, and so on
dto.id = skill.getId();
dto.id = skill.getId();
dto.name = skill.getName();
dto.description = skill.getDescription();
return dto;
}

// Getters and Setters
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getDescription() { return description; }
public void setDescription(String description) { this.description = description; }
}
10 changes: 10 additions & 0 deletions src/main/java/com/skillsync/skillsync/dto/SkillMapper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.skillsync.skillsync.dto;

import com.skillsync.skillsync.model.Skill;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
public interface SkillMapper {
SkillDTO fromEntityToDto(Skill skill);
Skill fromDtoToEntity(SkillDTO skillDTO);
}
11 changes: 11 additions & 0 deletions src/main/java/com/skillsync/skillsync/dto/UserMapper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.skillsync.skillsync.dto;

import com.skillsync.skillsync.model.User;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
public interface UserMapper {

User fromDtoToEntity(UserUpdateDTO userUpdateDTO);
UserUpdateDTO fromEntityToDto(User user);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.skillsync.skillsync.dto;

import com.skillsync.skillsync.model.User;

import java.util.List;
import java.util.stream.Collectors;

Expand Down
20 changes: 17 additions & 3 deletions src/main/java/com/skillsync/skillsync/dto/UserUpdateDTO.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
package com.skillsync.skillsync.dto;

public class UserUpdateDTO {
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

// Add feilds to update user
// this file helps not to senf all the fields of user entity to update
import java.util.List;

@AllArgsConstructor
@NoArgsConstructor
@Data
@Setter
@Getter
@Builder
public class UserUpdateDTO {
private String name;
private String bio;
private List<SkillDTO> skills;
}
69 changes: 23 additions & 46 deletions src/main/java/com/skillsync/skillsync/model/Skill.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,36 @@
package com.skillsync.skillsync.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import jakarta.persistence.*;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@Setter
@Getter
@Entity
@Table(name = "skills")
public class Skill {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long skill_id;
private Long id;

@NotNull(message = "name is required")
private String name;


Expand All @@ -21,47 +41,4 @@ public class Skill {
@JsonBackReference
private User user;

// Constructors
public Skill() {
}

public Skill(String name, String description, User user) {
this.name = name;
this.description = description;
this.user = user;
}

// Getters and Setters
public Long getId() {
return skill_id;
}

public void setId(Long id) {
this.skill_id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

}
Loading