diff --git a/pom.xml b/pom.xml
index 88282ee..bf9a43a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,28 +25,34 @@
org.projectlombok
lombok
+
org.springframework.boot
spring-boot-starter-web
+
com.h2database
h2
+
org.springframework.boot
spring-boot-starter-data-jpa
+
org.springdoc
springdoc-openapi-ui
1.7.0
+
org.junit.jupiter
junit-jupiter-engine
test
+
org.springframework.boot
spring-boot-starter-test
diff --git a/src/main/java/com/example/nto/App.java b/src/main/java/com/example/nto/App.java
index d771a13..cfd9169 100644
--- a/src/main/java/com/example/nto/App.java
+++ b/src/main/java/com/example/nto/App.java
@@ -1,9 +1,11 @@
package com.example.nto;
+import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
+ SpringApplication.run(App.class);
}
}
diff --git a/src/main/java/com/example/nto/controller/CodeController.java b/src/main/java/com/example/nto/controller/CodeController.java
new file mode 100644
index 0000000..92ba184
--- /dev/null
+++ b/src/main/java/com/example/nto/controller/CodeController.java
@@ -0,0 +1,18 @@
+package com.example.nto.controller;
+
+import com.example.nto.entity.Code;
+import com.example.nto.service.CodeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequiredArgsConstructor
+public class CodeController {
+
+ private final CodeService codeService;
+
+ @PatchMapping("/api/{login}/open")
+ public Code update(@PathVariable String login, @RequestBody Code newCode) {
+ return codeService.update(login, newCode);
+ }
+}
diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java
index fcb92ec..a9e251c 100644
--- a/src/main/java/com/example/nto/controller/EmployeeController.java
+++ b/src/main/java/com/example/nto/controller/EmployeeController.java
@@ -1,4 +1,25 @@
package com.example.nto.controller;
+import com.example.nto.entity.Employee;
+import com.example.nto.service.EmployeeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequiredArgsConstructor
public class EmployeeController {
+
+ private final EmployeeService employeeService;
+
+ @GetMapping("api/{login}/info")
+ public Employee findByLogin(@PathVariable String login) {
+ return employeeService.findByLogin(login);
+ }
+
+ @GetMapping("api/{login}/auth")
+ public boolean findExistByLogin(@PathVariable String login) {
+ return employeeService.findExistByLogin(login);
+ }
}
diff --git a/src/main/java/com/example/nto/entity/Code.java b/src/main/java/com/example/nto/entity/Code.java
index e1009f5..637d9be 100644
--- a/src/main/java/com/example/nto/entity/Code.java
+++ b/src/main/java/com/example/nto/entity/Code.java
@@ -5,11 +5,18 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import javax.persistence.*;
+
@Data
+@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
+@Table(name = "Code")
public class Code {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
+ @Column(name = "value")
private long value;
}
diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Employee.java
index aa57aa4..ac539a3 100644
--- a/src/main/java/com/example/nto/entity/Employee.java
+++ b/src/main/java/com/example/nto/entity/Employee.java
@@ -5,17 +5,27 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
+import javax.persistence.*;
import java.time.LocalDateTime;
@Data
+@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
+@Table(name = "Employee")
public class Employee {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
+ @Column(name = "login")
private String login;
+ @Column(name = "name")
private String name;
+ @Column(name = "photo")
private String photo;
+ @Column(name = "position")
private String position;
+ @Column(name = "lastVisit")
private LocalDateTime lastVisit;
}
diff --git a/src/main/java/com/example/nto/repository/CodeRepository.java b/src/main/java/com/example/nto/repository/CodeRepository.java
index 4ca3152..f2edf53 100644
--- a/src/main/java/com/example/nto/repository/CodeRepository.java
+++ b/src/main/java/com/example/nto/repository/CodeRepository.java
@@ -2,6 +2,7 @@ package com.example.nto.repository;
import com.example.nto.entity.Code;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
-public interface CodeRepository extends JpaRepository {
-}
+@Repository
+public interface CodeRepository extends JpaRepository {}
diff --git a/src/main/java/com/example/nto/repository/EmployeeRepository.java b/src/main/java/com/example/nto/repository/EmployeeRepository.java
index e1265db..c45c153 100644
--- a/src/main/java/com/example/nto/repository/EmployeeRepository.java
+++ b/src/main/java/com/example/nto/repository/EmployeeRepository.java
@@ -2,6 +2,15 @@ package com.example.nto.repository;
import com.example.nto.entity.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+@Repository
public interface EmployeeRepository extends JpaRepository {
+
+ @Query("select e from Employee e where e.login = ?1")
+ Employee findByLogin(String login);
+
+ @Query("select count(e) = 1 from Employee e where login = ?1")
+ boolean findExistByLogin(String login);
}
diff --git a/src/main/java/com/example/nto/service/CodeService.java b/src/main/java/com/example/nto/service/CodeService.java
new file mode 100644
index 0000000..6f944ac
--- /dev/null
+++ b/src/main/java/com/example/nto/service/CodeService.java
@@ -0,0 +1,9 @@
+package com.example.nto.service;
+
+
+import com.example.nto.entity.Code;
+
+public interface CodeService {
+
+ Code update(String login, Code newCode);
+}
diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java
index 7b91091..b140c24 100644
--- a/src/main/java/com/example/nto/service/EmployeeService.java
+++ b/src/main/java/com/example/nto/service/EmployeeService.java
@@ -1,4 +1,9 @@
package com.example.nto.service;
+import com.example.nto.entity.Employee;
+
public interface EmployeeService {
+
+ Employee findByLogin(String login);
+ Boolean findExistByLogin(String login);
}
diff --git a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java
index 2414533..a2e0f01 100644
--- a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java
+++ b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java
@@ -1,6 +1,44 @@
package com.example.nto.service.impl;
+import com.example.nto.entity.Code;
+import com.example.nto.entity.Employee;
+import com.example.nto.repository.CodeRepository;
+import com.example.nto.repository.EmployeeRepository;
+import com.example.nto.service.CodeService;
import com.example.nto.service.EmployeeService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+@Service
+@RequiredArgsConstructor
+public class EmployeeServiceImpl implements EmployeeService, CodeService {
+
+ private final EmployeeRepository employeeRepository;
+ private final CodeRepository codeRepository;
+
+ @Override
+ public Employee findByLogin(String login) {
+ return employeeRepository.findByLogin(login);
+ }
+
+ @Override
+ public Boolean findExistByLogin(String login) {
+ return employeeRepository.findExistByLogin(login);
+ }
+
+ @Override
+ public Code update(String login, Code newCode) {
+ long employeeId = findByLogin(login).getId();
+
+ Optional codeOptional = codeRepository.findById(employeeId);
+ if (codeOptional.isEmpty()) throw new RuntimeException("Code with id " + employeeId + "is not found");
+
+ Code code = codeOptional.get();
+ code.setValue(newCode.getValue());
+
+ return codeRepository.save(code);
+ }
-public class EmployeeServiceImpl implements EmployeeService {
}