Add base migration and Entitty and Dto

This commit is contained in:
Egor 2024-07-24 21:25:36 +03:00
parent f52378a1c7
commit a8d7eeea56
17 changed files with 337 additions and 10 deletions

17
pom.xml
View File

@ -33,15 +33,14 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- <dependency>--> <dependency>
<!-- <groupId>org.flywaydb</groupId>--> <groupId>org.flywaydb</groupId>
<!-- <artifactId>flyway-core</artifactId>--> <artifactId>flyway-core</artifactId>
<!-- </dependency>--> </dependency>
<!-- <dependency>--> <dependency>
<!-- <groupId>org.flywaydb</groupId>--> <groupId>org.flywaydb</groupId>
<!-- <artifactId>flyway-database-postgresql</artifactId>--> <artifactId>flyway-database-postgresql</artifactId>
<!-- </dependency>--> </dependency>
<dependency> <dependency>
<groupId>org.postgresql</groupId> <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -6,7 +6,6 @@ spring:
username: root username: root
password: root password: root
driver-class-name: org.postgresql.Driver driver-class-name: org.postgresql.Driver
jpa: jpa:
open-in-view: false open-in-view: false
show-sql: true show-sql: true
@ -14,3 +13,9 @@ spring:
properties.hibernate: properties.hibernate:
pretty_print: true pretty_print: true
format_sql: true format_sql: true
flyway:
user: root
password: root
schemas: vkr
locations: db.migration
url: jdbc:postgresql://localhost:5432/db

View File

@ -0,0 +1,5 @@
create table vkr.role
(
id integer primary key generated by default as identity,
name text not null unique
)

View File

@ -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
)

View File

@ -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
)

View File

@ -0,0 +1,5 @@
create table vkr.diploma_topic
(
id integer primary key generated by default as identity,
name text not null unique
)

View File

@ -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
)

View File

@ -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
)