Entities added, changed database

This commit is contained in:
Индекс Зиро 2025-02-18 19:58:23 +03:00
parent caf100cc9a
commit 0cfe30a008
15 changed files with 108 additions and 34 deletions

View File

@ -1,14 +1,18 @@
package com.indexzero.finals.controller; package com.indexzero.finals.controller;
import com.indexzero.finals.entity.Code;
import com.indexzero.finals.entity.Employee; 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.CodeRepository;
import com.indexzero.finals.repository.EmployeeRepository; import com.indexzero.finals.repository.EmployeeRepository;
import com.indexzero.finals.repository.VisitRepository;
import com.indexzero.finals.service.EmployeeService; import com.indexzero.finals.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")
@ -22,6 +26,9 @@ public class EmployeeController {
@Autowired @Autowired
EmployeeService employeeService; EmployeeService employeeService;
@Autowired
VisitRepository visitRepository;
@GetMapping("/{login}/auth") @GetMapping("/{login}/auth")
public ResponseEntity<Object> Auth(@PathVariable String login) { public ResponseEntity<Object> Auth(@PathVariable String login) {
return employeeService.checkIfUserExists(login); return employeeService.checkIfUserExists(login);

View File

@ -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;
}

View File

@ -1,9 +1,6 @@
package com.indexzero.finals.entity; package com.indexzero.finals.entity;
import jakarta.persistence.Entity; import jakarta.persistence.*;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -19,5 +16,10 @@ public class Code {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private long id; private long id;
@Column(name = "value")
private long value; private long value;
@Column(name = "is_active")
boolean isActive;
} }

View File

@ -1,12 +1,13 @@
package com.indexzero.finals.entity; package com.indexzero.finals.entity;
import jakarta.persistence.Entity; import jakarta.persistence.*;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
@Entity @Entity
@Data @Data
@ -15,10 +16,29 @@ import java.time.LocalDateTime;
@AllArgsConstructor @AllArgsConstructor
public class Employee { public class Employee {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private long id; private long id;
@Column(name = "login", nullable = false, unique = true)
private String login; private String login;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "name", nullable = false)
private String name; private String name;
private String photo;
@Column(name = "position", nullable = false)
private String position; private String position;
private LocalDateTime lastVisit;
@Column(name = "photo_url")
private String photoUrl;
@ManyToMany(fetch = FetchType.EAGER)
Set<Authority> authorities;
@OneToMany(mappedBy = "id")
List<Visit> visits;
} }

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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<Authority, Long> {
}

View File

@ -5,5 +5,4 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface CodeRepository extends JpaRepository<Code, Long> { public interface CodeRepository extends JpaRepository<Code, Long> {
boolean existsByValue(Long value); boolean existsByValue(Long value);
Code findByValue(Long value);
} }

View File

@ -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<Visit, Long> {
}

View File

@ -1,7 +1,6 @@
package com.indexzero.finals.service; package com.indexzero.finals.service;
import com.indexzero.finals.entity.Employee; import com.indexzero.finals.entity.Employee;
import com.indexzero.finals.entity.OpenRequestBody;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
public interface EmployeeService { public interface EmployeeService {

View File

@ -1,7 +1,6 @@
package com.indexzero.finals.service.impl; package com.indexzero.finals.service.impl;
import com.indexzero.finals.entity.Employee; import com.indexzero.finals.entity.Employee;
import com.indexzero.finals.entity.OpenRequestBody;
import com.indexzero.finals.repository.CodeRepository; import com.indexzero.finals.repository.CodeRepository;
import com.indexzero.finals.repository.EmployeeRepository; import com.indexzero.finals.repository.EmployeeRepository;
import com.indexzero.finals.service.EmployeeService; import com.indexzero.finals.service.EmployeeService;
@ -56,7 +55,7 @@ public class EmployeeServiceImpl implements EmployeeService {
LocalDateTime time = LocalDateTime.now(); LocalDateTime time = LocalDateTime.now();
String formatted = time.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME); String formatted = time.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
formatted = formatted.split("\\.")[0]; formatted = formatted.split("\\.")[0];
employee.setLastVisit(LocalDateTime.parse(formatted)); // employee.setLastVisit(LocalDateTime.parse(formatted));
employeeRepository.save(employee); employeeRepository.save(employee);
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);

View File

@ -23,6 +23,9 @@
<column name="value" type="bigint"> <column name="value" type="bigint">
<constraints nullable="false"/> <constraints nullable="false"/>
</column> </column>
<column name="is_active" type="bool">
<constraints nullable="false"/>
</column>
</createTable> </createTable>
</changeSet> </changeSet>

View File

@ -5,7 +5,7 @@
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd 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"> http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet id="2025-02-18--0005-employee-visits" author="okalugin"> <changeSet id="2025-02-18--0005-visits" author="okalugin">
<preConditions> <preConditions>
<not> <not>
<tableExists tableName="employee_visits"/> <tableExists tableName="employee_visits"/>

View File

@ -1,6 +1,6 @@
id;value id;value;is_active
1;1234567890123456789 1;1234567890123456789;true
2;9223372036854775807 2;9223372036854775807;true
3;1122334455667788990 3;1122334455667788990;false
4;998877665544332211 4;998877665544332211;false
5;5566778899001122334 5;5566778899001122334;true
1 id value is_active
2 1 1234567890123456789 true
3 2 9223372036854775807 true
4 3 1122334455667788990 false
5 4 998877665544332211 false
6 5 5566778899001122334 true

View File

@ -8,12 +8,12 @@
<include file="db.changelog/1.0/2024-10-20--0002-employee.xml"/> <include file="db.changelog/1.0/2024-10-20--0002-employee.xml"/>
<include file="db.changelog/1.0/2025-02-18--0003-authority.xml"/> <include file="db.changelog/1.0/2025-02-18--0003-authority.xml"/>
<include file="db.changelog/1.0/2025-02-18--0004-employee-authorities.xml"/> <include file="db.changelog/1.0/2025-02-18--0004-employee-authorities.xml"/>
<include file="db.changelog/1.0/2025-02-18--0005-employee-visits.xml"/> <include file="/db.changelog/1.0/2025-02-18--0005-employee-visits.xml"/>
<include file="db.changelog/data/2024-10-20--0001-code-data.xml"/> <include file="db.changelog/data/2024-10-20--0001-code-data.xml"/>
<include file="db.changelog/data/2024-10-20--0002-employee-data.xml"/> <include file="db.changelog/data/2024-10-20--0002-employee-data.xml"/>
<include file="db.changelog/data/2025-02-18--0003-authority-data.xml"/> <include file="db.changelog/data/2025-02-18--0003-authority-data.xml"/>
<include file="db.changelog/data/2025-02-18--0004-employee-authorities-data.xml"/> <include file="db.changelog/data/2025-02-18--0004-employee-authorities-data.xml"/>
<include file="db.changelog/data/2025-02-18--0005-employee-visits-data.xml"/> <include file="/db.changelog/data/2025-02-18--0005-employee-visits-data.xml"/>
</databaseChangeLog> </databaseChangeLog>