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
6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.zoomcare.candidatechallenge.Employee;

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

import com.zoomcare.candidatechallenge.Employee.entities.Employee;
import com.zoomcare.candidatechallenge.Employee.entities.Property;

public class EmployeeData {
private final Optional<Employee> employee;
private final List<Property> property;

public EmployeeData(Optional<Employee> employee, List<Property> property) {
this.employee = employee;
this.property = property;
}

public Optional<Employee> getEmployee() { return employee; }
public List<Property> getProperty() { return property; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.zoomcare.candidatechallenge.Employee.controllers;

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

import org.springframework.web.bind.annotation.RestController;

import com.zoomcare.candidatechallenge.Employee.entities.Employee;
import com.zoomcare.candidatechallenge.Employee.entities.Property;
import com.zoomcare.candidatechallenge.Employee.repositories.EmployeeRepository;
import com.zoomcare.candidatechallenge.Employee.repositories.PropertyRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import com.zoomcare.candidatechallenge.Employee.EmployeeData;

@RestController
@RequestMapping("/employee")
public class EmployeeController {

@Autowired
private EmployeeRepository employeeRepository;

@Autowired
private PropertyRepository propertyRepository;


@GetMapping("/{id}")
public ResponseEntity getEmployeeById(@PathVariable("id") Integer id) throws Exception {
Optional<Employee> employee = employeeRepository.findById(id);
List<Property> property = propertyRepository.findByEmployeeId(id);
return new ResponseEntity(new EmployeeData( employee, property ), HttpStatus.OK);
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.zoomcare.candidatechallenge.Employee.entities;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="EMPLOYEE")
public class Employee {
@Id
@Column(name="ID")
private Integer id;

@Column(name="SUPERVISOR_ID")
private Integer supervisorId;

public Integer getId() {
return id;
}

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

public Integer getSupervisorId() {
return supervisorId;
}

public void setSupervisorId(Integer supervisorId) {
this.supervisorId = supervisorId;
}


}


Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.zoomcare.candidatechallenge.Employee.entities;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="PROPERTY")
public class Property {
@Id
@Column(name="EMPLOYEE_ID")
private Integer id;

@Column(name="KEY")
private String key;

@Column(name="VALUE")
private String value;


public Integer getId() {
return id;
}

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

public String getKey() {
return key;
}

public void setKey(String key) {
this.key = key;
}

public String getValue() {
return value;
}

public void setValue(String value) {
this.value = value;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.zoomcare.candidatechallenge.Employee.repositories;

import org.springframework.data.repository.CrudRepository;

import com.zoomcare.candidatechallenge.Employee.entities.Employee;

public interface EmployeeRepository extends CrudRepository<Employee, Integer> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.zoomcare.candidatechallenge.Employee.repositories;

import java.util.List;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;

import com.zoomcare.candidatechallenge.Employee.entities.Property;

public interface PropertyRepository extends CrudRepository<Property, Integer> {

@Query("select u from Property u where u.id = :id")
List<Property> findByEmployeeId(@Param("id") Integer id);

}
9 changes: 9 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
spring:
main:
allow-bean-definition-overriding: true
datasource:
url: jdbc:h2:mem:testdb
username: sa
password:
driverClassName: org.h2.Driver
jpa:
spring.jpa.database-platform: org.hibernate.dialect.H2Dialect
h2:
console:
enabled: true
Expand Down