From 0cfe30a00893e22aceb4cf8bf27016cfff9149c2 Mon Sep 17 00:00:00 2001 From: IndexZero Date: Tue, 18 Feb 2025 19:58:23 +0300 Subject: [PATCH] Entities added, changed database --- .../finals/controller/EmployeeController.java | 9 +++++- .../indexzero/finals/entity/Authority.java | 19 +++++++++++++ .../com/indexzero/finals/entity/Code.java | 10 ++++--- .../com/indexzero/finals/entity/Employee.java | 28 ++++++++++++++++--- .../finals/entity/OpenRequestBody.java | 12 -------- .../com/indexzero/finals/entity/Visit.java | 24 ++++++++++++++++ .../repository/AuthorityRepository.java | 7 +++++ .../finals/repository/CodeRepository.java | 1 - .../finals/repository/VisitRepository.java | 7 +++++ .../finals/service/EmployeeService.java | 1 - .../service/impl/EmployeeServiceImpl.java | 3 +- .../1.0/2024-10-20--0001-code.xml | 3 ++ .../1.0/2025-02-18--0005-employee-visits.xml | 2 +- .../data/csv/2024-10-20--0001-code-data.csv | 12 ++++---- .../db.changelog/db.changelog-master.xml | 4 +-- 15 files changed, 108 insertions(+), 34 deletions(-) create mode 100644 src/main/java/com/indexzero/finals/entity/Authority.java delete mode 100644 src/main/java/com/indexzero/finals/entity/OpenRequestBody.java create mode 100644 src/main/java/com/indexzero/finals/entity/Visit.java create mode 100644 src/main/java/com/indexzero/finals/repository/AuthorityRepository.java create mode 100644 src/main/java/com/indexzero/finals/repository/VisitRepository.java diff --git a/src/main/java/com/indexzero/finals/controller/EmployeeController.java b/src/main/java/com/indexzero/finals/controller/EmployeeController.java index f105227..cb2c80f 100644 --- a/src/main/java/com/indexzero/finals/controller/EmployeeController.java +++ b/src/main/java/com/indexzero/finals/controller/EmployeeController.java @@ -1,14 +1,18 @@ package com.indexzero.finals.controller; +import com.indexzero.finals.entity.Code; import com.indexzero.finals.entity.Employee; -import com.indexzero.finals.entity.OpenRequestBody; +import com.indexzero.finals.entity.Visit; import com.indexzero.finals.repository.CodeRepository; import com.indexzero.finals.repository.EmployeeRepository; +import com.indexzero.finals.repository.VisitRepository; import com.indexzero.finals.service.EmployeeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequestMapping("/api") @@ -22,6 +26,9 @@ public class EmployeeController { @Autowired EmployeeService employeeService; + @Autowired + VisitRepository visitRepository; + @GetMapping("/{login}/auth") public ResponseEntity Auth(@PathVariable String login) { return employeeService.checkIfUserExists(login); diff --git a/src/main/java/com/indexzero/finals/entity/Authority.java b/src/main/java/com/indexzero/finals/entity/Authority.java new file mode 100644 index 0000000..464456c --- /dev/null +++ b/src/main/java/com/indexzero/finals/entity/Authority.java @@ -0,0 +1,19 @@ +package com.indexzero.finals.entity; + +import jakarta.persistence.*; +import lombok.Data; + +@Entity +@Data +@Table(name = "authority") +public class Authority { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) + Long id; + + @Column(name = "authority", nullable = false) + String authority; + +} + diff --git a/src/main/java/com/indexzero/finals/entity/Code.java b/src/main/java/com/indexzero/finals/entity/Code.java index f3ca93f..522f065 100644 --- a/src/main/java/com/indexzero/finals/entity/Code.java +++ b/src/main/java/com/indexzero/finals/entity/Code.java @@ -1,9 +1,6 @@ package com.indexzero.finals.entity; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,5 +16,10 @@ public class Code { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; + + @Column(name = "value") private long value; + + @Column(name = "is_active") + boolean isActive; } diff --git a/src/main/java/com/indexzero/finals/entity/Employee.java b/src/main/java/com/indexzero/finals/entity/Employee.java index bbf2882..ebc8326 100644 --- a/src/main/java/com/indexzero/finals/entity/Employee.java +++ b/src/main/java/com/indexzero/finals/entity/Employee.java @@ -1,12 +1,13 @@ package com.indexzero.finals.entity; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; @Entity @Data @@ -15,10 +16,29 @@ import java.time.LocalDateTime; @AllArgsConstructor public class Employee { @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", nullable = false) private long id; + + @Column(name = "login", nullable = false, unique = true) private String login; + + @Column(name = "password", nullable = false) + private String password; + + @Column(name = "name", nullable = false) private String name; - private String photo; + + @Column(name = "position", nullable = false) private String position; - private LocalDateTime lastVisit; + + @Column(name = "photo_url") + private String photoUrl; + + @ManyToMany(fetch = FetchType.EAGER) + Set authorities; + + @OneToMany(mappedBy = "id") + List visits; + } diff --git a/src/main/java/com/indexzero/finals/entity/OpenRequestBody.java b/src/main/java/com/indexzero/finals/entity/OpenRequestBody.java deleted file mode 100644 index a75090b..0000000 --- a/src/main/java/com/indexzero/finals/entity/OpenRequestBody.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.indexzero.finals.entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class OpenRequestBody { - Long value; -} diff --git a/src/main/java/com/indexzero/finals/entity/Visit.java b/src/main/java/com/indexzero/finals/entity/Visit.java new file mode 100644 index 0000000..2208f87 --- /dev/null +++ b/src/main/java/com/indexzero/finals/entity/Visit.java @@ -0,0 +1,24 @@ +package com.indexzero.finals.entity; + +import jakarta.persistence.*; +import lombok.Data; +import org.apache.catalina.User; + +import java.util.Date; +import java.util.List; + +@Data +@Entity +@Table(name = "employee_visits") +public class Visit { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + + @Column(name = "visit_time") + private Date visitTime; + + @Column(name = "type") + private String type; + +} diff --git a/src/main/java/com/indexzero/finals/repository/AuthorityRepository.java b/src/main/java/com/indexzero/finals/repository/AuthorityRepository.java new file mode 100644 index 0000000..0f42dad --- /dev/null +++ b/src/main/java/com/indexzero/finals/repository/AuthorityRepository.java @@ -0,0 +1,7 @@ +package com.indexzero.finals.repository; + +import com.indexzero.finals.entity.Authority; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface AuthorityRepository extends JpaRepository { +} diff --git a/src/main/java/com/indexzero/finals/repository/CodeRepository.java b/src/main/java/com/indexzero/finals/repository/CodeRepository.java index d9d2ebf..d590346 100644 --- a/src/main/java/com/indexzero/finals/repository/CodeRepository.java +++ b/src/main/java/com/indexzero/finals/repository/CodeRepository.java @@ -5,5 +5,4 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface CodeRepository extends JpaRepository { boolean existsByValue(Long value); - Code findByValue(Long value); } diff --git a/src/main/java/com/indexzero/finals/repository/VisitRepository.java b/src/main/java/com/indexzero/finals/repository/VisitRepository.java new file mode 100644 index 0000000..2d60020 --- /dev/null +++ b/src/main/java/com/indexzero/finals/repository/VisitRepository.java @@ -0,0 +1,7 @@ +package com.indexzero.finals.repository; + +import com.indexzero.finals.entity.Visit; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface VisitRepository extends JpaRepository { +} diff --git a/src/main/java/com/indexzero/finals/service/EmployeeService.java b/src/main/java/com/indexzero/finals/service/EmployeeService.java index e2a058f..e44d507 100644 --- a/src/main/java/com/indexzero/finals/service/EmployeeService.java +++ b/src/main/java/com/indexzero/finals/service/EmployeeService.java @@ -1,7 +1,6 @@ package com.indexzero.finals.service; import com.indexzero.finals.entity.Employee; -import com.indexzero.finals.entity.OpenRequestBody; import org.springframework.http.ResponseEntity; public interface EmployeeService { diff --git a/src/main/java/com/indexzero/finals/service/impl/EmployeeServiceImpl.java b/src/main/java/com/indexzero/finals/service/impl/EmployeeServiceImpl.java index 218592d..bb053b5 100644 --- a/src/main/java/com/indexzero/finals/service/impl/EmployeeServiceImpl.java +++ b/src/main/java/com/indexzero/finals/service/impl/EmployeeServiceImpl.java @@ -1,7 +1,6 @@ package com.indexzero.finals.service.impl; import com.indexzero.finals.entity.Employee; -import com.indexzero.finals.entity.OpenRequestBody; import com.indexzero.finals.repository.CodeRepository; import com.indexzero.finals.repository.EmployeeRepository; import com.indexzero.finals.service.EmployeeService; @@ -56,7 +55,7 @@ public class EmployeeServiceImpl implements EmployeeService { LocalDateTime time = LocalDateTime.now(); String formatted = time.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME); formatted = formatted.split("\\.")[0]; - employee.setLastVisit(LocalDateTime.parse(formatted)); + // employee.setLastVisit(LocalDateTime.parse(formatted)); employeeRepository.save(employee); return new ResponseEntity<>(HttpStatus.OK); diff --git a/src/main/resources/db.changelog/1.0/2024-10-20--0001-code.xml b/src/main/resources/db.changelog/1.0/2024-10-20--0001-code.xml index 3d516d5..0ff4fbf 100644 --- a/src/main/resources/db.changelog/1.0/2024-10-20--0001-code.xml +++ b/src/main/resources/db.changelog/1.0/2024-10-20--0001-code.xml @@ -23,6 +23,9 @@ + + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-18--0005-employee-visits.xml b/src/main/resources/db.changelog/1.0/2025-02-18--0005-employee-visits.xml index 6437d35..2c9d0e4 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-18--0005-employee-visits.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-18--0005-employee-visits.xml @@ -5,7 +5,7 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> - + diff --git a/src/main/resources/db.changelog/data/csv/2024-10-20--0001-code-data.csv b/src/main/resources/db.changelog/data/csv/2024-10-20--0001-code-data.csv index 72062ec..f33cd5d 100644 --- a/src/main/resources/db.changelog/data/csv/2024-10-20--0001-code-data.csv +++ b/src/main/resources/db.changelog/data/csv/2024-10-20--0001-code-data.csv @@ -1,6 +1,6 @@ -id;value -1;1234567890123456789 -2;9223372036854775807 -3;1122334455667788990 -4;998877665544332211 -5;5566778899001122334 \ No newline at end of file +id;value;is_active +1;1234567890123456789;true +2;9223372036854775807;true +3;1122334455667788990;false +4;998877665544332211;false +5;5566778899001122334;true \ No newline at end of file diff --git a/src/main/resources/db.changelog/db.changelog-master.xml b/src/main/resources/db.changelog/db.changelog-master.xml index 3b2a714..d6c56ba 100644 --- a/src/main/resources/db.changelog/db.changelog-master.xml +++ b/src/main/resources/db.changelog/db.changelog-master.xml @@ -8,12 +8,12 @@ - + - + \ No newline at end of file