From a8d7eeea5636d5aa21a7d2a333e229561c175ed9 Mon Sep 17 00:00:00 2001 From: Egor Date: Wed, 24 Jul 2024 21:25:36 +0300 Subject: [PATCH] Add base migration and Entitty and Dto --- pom.xml | 17 +++--- .../tubryansk/tdms/dto/DiplomaTopicDTO.java | 15 ++++++ .../java/ru/tubryansk/tdms/dto/RoleDTO.java | 15 ++++++ .../ru/tubryansk/tdms/dto/StudentDTO.java | 30 +++++++++++ .../java/ru/tubryansk/tdms/dto/UserDTO.java | 26 +++++++++ .../tubryansk/tdms/entity/DiplomaTopic.java | 24 +++++++++ .../java/ru/tubryansk/tdms/entity/Group.java | 27 ++++++++++ .../java/ru/tubryansk/tdms/entity/Role.java | 24 +++++++++ .../ru/tubryansk/tdms/entity/Student.java | 53 +++++++++++++++++++ .../java/ru/tubryansk/tdms/entity/User.java | 45 ++++++++++++++++ src/main/resources/application.yml | 7 ++- .../V00001__Create__role_table.sql | 5 ++ .../V00010__Create__user_table.sql | 12 +++++ .../V00020__Create__user_role_table.sql | 9 ++++ .../V00030__Create__diploma_topic_table.sql | 5 ++ .../V00040__Create__group_table.sql | 9 ++++ .../V00050__Create__student_table.sql | 24 +++++++++ 17 files changed, 337 insertions(+), 10 deletions(-) create mode 100644 src/main/java/ru/tubryansk/tdms/dto/DiplomaTopicDTO.java create mode 100644 src/main/java/ru/tubryansk/tdms/dto/RoleDTO.java create mode 100644 src/main/java/ru/tubryansk/tdms/dto/StudentDTO.java create mode 100644 src/main/java/ru/tubryansk/tdms/dto/UserDTO.java create mode 100644 src/main/java/ru/tubryansk/tdms/entity/DiplomaTopic.java create mode 100644 src/main/java/ru/tubryansk/tdms/entity/Group.java create mode 100644 src/main/java/ru/tubryansk/tdms/entity/Role.java create mode 100644 src/main/java/ru/tubryansk/tdms/entity/Student.java create mode 100644 src/main/java/ru/tubryansk/tdms/entity/User.java create mode 100644 src/main/resources/db.migration/V00001__Create__role_table.sql create mode 100644 src/main/resources/db.migration/V00010__Create__user_table.sql create mode 100644 src/main/resources/db.migration/V00020__Create__user_role_table.sql create mode 100644 src/main/resources/db.migration/V00030__Create__diploma_topic_table.sql create mode 100644 src/main/resources/db.migration/V00040__Create__group_table.sql create mode 100644 src/main/resources/db.migration/V00050__Create__student_table.sql diff --git a/pom.xml b/pom.xml index 0cc023f..8f5f8a1 100644 --- a/pom.xml +++ b/pom.xml @@ -33,15 +33,14 @@ org.springframework.boot spring-boot-starter-web - - - - - - - - - + + org.flywaydb + flyway-core + + + org.flywaydb + flyway-database-postgresql + org.postgresql postgresql diff --git a/src/main/java/ru/tubryansk/tdms/dto/DiplomaTopicDTO.java b/src/main/java/ru/tubryansk/tdms/dto/DiplomaTopicDTO.java new file mode 100644 index 0000000..ede40ed --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/dto/DiplomaTopicDTO.java @@ -0,0 +1,15 @@ +package ru.tubryansk.tdms.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DiplomaTopicDTO { + private Integer id; + private String name; +} diff --git a/src/main/java/ru/tubryansk/tdms/dto/RoleDTO.java b/src/main/java/ru/tubryansk/tdms/dto/RoleDTO.java new file mode 100644 index 0000000..f34d5f9 --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/dto/RoleDTO.java @@ -0,0 +1,15 @@ +package ru.tubryansk.tdms.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RoleDTO { + private Integer id; + private String name; +} diff --git a/src/main/java/ru/tubryansk/tdms/dto/StudentDTO.java b/src/main/java/ru/tubryansk/tdms/dto/StudentDTO.java new file mode 100644 index 0000000..2aad7fb --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/dto/StudentDTO.java @@ -0,0 +1,30 @@ +package ru.tubryansk.tdms.dto; + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StudentDTO { + private Integer id; + private Boolean form; + private Integer protectionOrder; + private String magistracy; + private Boolean digitalFormatPresent; + private Integer markComment; + private Integer markPractice; + private String predefenceComment; + private String normalControl; + private Integer antiPlagiarism; + private String note; + private Boolean recordBookReturned; + private String work; + private Integer userId; + private Integer diplomaTopicId; + private Integer mentorUserId; + private Integer groupId; +} diff --git a/src/main/java/ru/tubryansk/tdms/dto/UserDTO.java b/src/main/java/ru/tubryansk/tdms/dto/UserDTO.java new file mode 100644 index 0000000..a865dde --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/dto/UserDTO.java @@ -0,0 +1,26 @@ +package ru.tubryansk.tdms.dto; + + +import jakarta.persistence.Column; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.ZonedDateTime; +import java.util.List; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserDTO { + private Integer id; + private String login; + private String password; + private String fullName; + private String mail; + private String numberPhone; + private ZonedDateTime createAt; + private ZonedDateTime updateAt; + List roleId; +} diff --git a/src/main/java/ru/tubryansk/tdms/entity/DiplomaTopic.java b/src/main/java/ru/tubryansk/tdms/entity/DiplomaTopic.java new file mode 100644 index 0000000..0a57e59 --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/entity/DiplomaTopic.java @@ -0,0 +1,24 @@ +package ru.tubryansk.tdms.entity; + + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "diploma_topic", schema = "vkr") +public class DiplomaTopic { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Integer id; + @Column(name = "name", nullable = false) + private String name; +} diff --git a/src/main/java/ru/tubryansk/tdms/entity/Group.java b/src/main/java/ru/tubryansk/tdms/entity/Group.java new file mode 100644 index 0000000..cefd4c9 --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/entity/Group.java @@ -0,0 +1,27 @@ +package ru.tubryansk.tdms.entity; + + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "group", schema = "vkr") +public class Group { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Integer id; + @Column(name = "name", nullable = false) + private String name; + @ManyToOne() + @JoinColumn(name = "principal_user_id", nullable = false) + private User principalUser; +} diff --git a/src/main/java/ru/tubryansk/tdms/entity/Role.java b/src/main/java/ru/tubryansk/tdms/entity/Role.java new file mode 100644 index 0000000..397ed7d --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/entity/Role.java @@ -0,0 +1,24 @@ +package ru.tubryansk.tdms.entity; + + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "role", schema = "vkr") +public class Role { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Integer id; + @Column(name = "name", nullable = false) + private String name; +} diff --git a/src/main/java/ru/tubryansk/tdms/entity/Student.java b/src/main/java/ru/tubryansk/tdms/entity/Student.java new file mode 100644 index 0000000..158d116 --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/entity/Student.java @@ -0,0 +1,53 @@ +package ru.tubryansk.tdms.entity; + + +import jakarta.persistence.*; +import lombok.Data; + + +@Data +@Entity +@Table(name = "student", schema = "vkr") +public class Student { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Integer id; + @Column(name = "form") + private Boolean form; + @Column(name = "protection_order" , nullable = false) + private Integer protectionOrder; + @Column(name = "magistracy" ) + private String magistracy; + @Column(name = "digital_format_present") + private Boolean digitalFormatPresent; + @Column(name = "mark_comment") + private Integer markComment; + @Column(name = "mark_practice") + private Integer markPractice; + @Column(name = "predefence_comment") + private String predefenceComment; + @Column(name = "normal_control") + private String normalControl; + @Column(name = "anti_plagiarism") + private Integer antiPlagiarism; + @Column(name = "note") + private String note; + @Column(name = "record_book_returned") + private Boolean recordBookReturned; + @Column(name = "work") + private String work; + @OneToOne + @JoinColumn(name = "user_id", nullable = false) + private User user; + @ManyToOne + @JoinColumn(name = "diploma_topic_id", nullable = false) + private DiplomaTopic diplomaTopic; + @ManyToOne + @JoinColumn(name = "mentor_user_id", nullable = false) + private User mentorUser; + @ManyToOne + @JoinColumn(name = "group_id", nullable = false) + private Group group; + +} diff --git a/src/main/java/ru/tubryansk/tdms/entity/User.java b/src/main/java/ru/tubryansk/tdms/entity/User.java new file mode 100644 index 0000000..2cb71a4 --- /dev/null +++ b/src/main/java/ru/tubryansk/tdms/entity/User.java @@ -0,0 +1,45 @@ +package ru.tubryansk.tdms.entity; + + +import jakarta.persistence.*; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.ZonedDateTime; +import java.util.List; + + +@Entity +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "user", schema = "vkr") +public class User { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Integer id; + @Column(name = "login", nullable = false, unique = true) + private String login; + @Column(name = "password", nullable = false) + private String password; + @Column(name = "full_name", nullable = false) + private String fullName; + @Column(name = "mail", nullable = false, unique = true) + private String mail; + @Column(name = "number_phone", nullable = false, unique = true) + private String numberPhone; + @Column(name = "create_at", nullable = false) + private ZonedDateTime createAt; + @Column(name = "update_at") + private ZonedDateTime updateAt; + @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinTable(name = "user_role",schema = "vkr", + joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")) + private List userLoyaltyLevels; + +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5438ff1..216faa1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -6,7 +6,6 @@ spring: username: root password: root driver-class-name: org.postgresql.Driver - jpa: open-in-view: false show-sql: true @@ -14,3 +13,9 @@ spring: properties.hibernate: pretty_print: true format_sql: true + flyway: + user: root + password: root + schemas: vkr + locations: db.migration + url: jdbc:postgresql://localhost:5432/db diff --git a/src/main/resources/db.migration/V00001__Create__role_table.sql b/src/main/resources/db.migration/V00001__Create__role_table.sql new file mode 100644 index 0000000..6099afb --- /dev/null +++ b/src/main/resources/db.migration/V00001__Create__role_table.sql @@ -0,0 +1,5 @@ +create table vkr.role +( + id integer primary key generated by default as identity, + name text not null unique +) diff --git a/src/main/resources/db.migration/V00010__Create__user_table.sql b/src/main/resources/db.migration/V00010__Create__user_table.sql new file mode 100644 index 0000000..7a69caf --- /dev/null +++ b/src/main/resources/db.migration/V00010__Create__user_table.sql @@ -0,0 +1,12 @@ +create table vkr.user +( + id integer primary key generated by default as identity, + login text not null unique, + password text not null, + full_name text not null, + mail text not null unique, + number_phone text not null unique, + create_at timestamp(6) with time zone not null, + update_at timestamp(6) with time zone + +) diff --git a/src/main/resources/db.migration/V00020__Create__user_role_table.sql b/src/main/resources/db.migration/V00020__Create__user_role_table.sql new file mode 100644 index 0000000..a4e5da3 --- /dev/null +++ b/src/main/resources/db.migration/V00020__Create__user_role_table.sql @@ -0,0 +1,9 @@ +create table vkr.user_role +( + user_id integer not null, + role_id integer not null, + foreign key (user_id) references vkr.user (id) + on delete cascade, + foreign key (role_id) references vkr.role (id) + on delete cascade +) diff --git a/src/main/resources/db.migration/V00030__Create__diploma_topic_table.sql b/src/main/resources/db.migration/V00030__Create__diploma_topic_table.sql new file mode 100644 index 0000000..03662da --- /dev/null +++ b/src/main/resources/db.migration/V00030__Create__diploma_topic_table.sql @@ -0,0 +1,5 @@ +create table vkr.diploma_topic +( + id integer primary key generated by default as identity, + name text not null unique +) diff --git a/src/main/resources/db.migration/V00040__Create__group_table.sql b/src/main/resources/db.migration/V00040__Create__group_table.sql new file mode 100644 index 0000000..0d02d27 --- /dev/null +++ b/src/main/resources/db.migration/V00040__Create__group_table.sql @@ -0,0 +1,9 @@ +create table vkr.group +( + id integer primary key generated by default as identity, + name text not null unique, + principal_user_id integer not null, + foreign key (principal_user_id) references vkr.user (id) + on delete cascade + +) diff --git a/src/main/resources/db.migration/V00050__Create__student_table.sql b/src/main/resources/db.migration/V00050__Create__student_table.sql new file mode 100644 index 0000000..73b6224 --- /dev/null +++ b/src/main/resources/db.migration/V00050__Create__student_table.sql @@ -0,0 +1,24 @@ +create table vkr.student +( + id integer primary key generated by default as identity, + form boolean, + protection_order integer not null, + magistracy text, + digital_format_present boolean, + mark_comment integer, + mark_practice integer, + predefence_comment text, + normal_control text, + anti_plagiarism int, + note text, + record_book_returned boolean, + work text, + user_id integer not null, + diploma_topic_id integer not null, + mentor_user_id integer not null, + group_id integer not null, + foreign key (user_id) references vkr.user (id) on delete cascade, + foreign key (diploma_topic_id) references vkr.diploma_topic (id) on delete cascade, + foreign key (mentor_user_id) references vkr.user (id) on delete cascade, + foreign key (group_id) references vkr.group (id) on delete cascade +)