diff --git a/pom.xml b/pom.xml
index 5ff5428..09e6d10 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,12 +30,12 @@
org.liquibase
liquibase-core
${liquibase.version}
-
+
- org.liquibase
- liquibase-maven-plugin
- ${liquibase.version}
-
+ org.liquibase
+ liquibase-maven-plugin
+ ${liquibase.version}
+
mysql
mysql-connector-java
@@ -61,13 +61,13 @@
h2
test
+
jakarta.validation
jakarta.validation-api
2.0.2
-
-
+
diff --git a/src/main/java/com/project/carsharingapp/model/Role.java b/src/main/java/com/project/carsharingapp/model/Role.java
new file mode 100644
index 0000000..cd14e93
--- /dev/null
+++ b/src/main/java/com/project/carsharingapp/model/Role.java
@@ -0,0 +1,25 @@
+package com.project.carsharingapp.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.EnumType;
+import jakarta.persistence.Enumerated;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import lombok.Getter;
+import lombok.Setter;
+
+@Entity
+@Setter
+@Getter
+@Table(name = "roles")
+public class Role {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(name = "name", nullable = false, unique = true)
+ @Enumerated(EnumType.STRING)
+ private RoleName roleName;
+}
diff --git a/src/main/java/com/project/carsharingapp/model/RoleName.java b/src/main/java/com/project/carsharingapp/model/RoleName.java
new file mode 100644
index 0000000..ea6a3c7
--- /dev/null
+++ b/src/main/java/com/project/carsharingapp/model/RoleName.java
@@ -0,0 +1,6 @@
+package com.project.carsharingapp.model;
+
+public enum RoleName {
+ MANAGER,
+ CUSTOMER
+}
diff --git a/src/main/java/com/project/carsharingapp/model/User.java b/src/main/java/com/project/carsharingapp/model/User.java
new file mode 100644
index 0000000..d11fa7b
--- /dev/null
+++ b/src/main/java/com/project/carsharingapp/model/User.java
@@ -0,0 +1,46 @@
+package com.project.carsharingapp.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.JoinColumn;
+import jakarta.persistence.JoinTable;
+import jakarta.persistence.ManyToMany;
+import jakarta.persistence.Table;
+import java.util.HashSet;
+import java.util.Set;
+import lombok.Getter;
+import lombok.Setter;
+import org.hibernate.annotations.SQLDelete;
+import org.hibernate.annotations.Where;
+
+@Entity
+@Setter
+@Getter
+@SQLDelete(sql = "UPDATE users SET is_deleted = true WHERE id =?")
+@Where(clause = "is_deleted=false")
+@Table(name = "users")
+public class User {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id;
+ @Column(nullable = false, unique = true)
+ private String email;
+ @Column(nullable = false)
+ private String firstName;
+ @Column(nullable = false)
+ private String lastName;
+ @Column(nullable = false)
+ private String password;
+ private Long telegramChatId;
+ @Column(nullable = false)
+ @ManyToMany
+ @JoinTable(name = "user_roles",
+ joinColumns = @JoinColumn(name = "user_id"),
+ inverseJoinColumns = @JoinColumn(name = "role_id"))
+ private Set roles = new HashSet<>();
+ @Column(name = "is_deleted",nullable = false)
+ private boolean isDeleted = false;
+}
diff --git a/src/main/java/com/project/carsharingapp/repository/RoleRepository.java b/src/main/java/com/project/carsharingapp/repository/RoleRepository.java
new file mode 100644
index 0000000..a12122f
--- /dev/null
+++ b/src/main/java/com/project/carsharingapp/repository/RoleRepository.java
@@ -0,0 +1,7 @@
+package com.project.carsharingapp.repository;
+
+import com.project.carsharingapp.model.Role;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface RoleRepository extends JpaRepository {
+}
diff --git a/src/main/java/com/project/carsharingapp/repository/UserRepository.java b/src/main/java/com/project/carsharingapp/repository/UserRepository.java
new file mode 100644
index 0000000..edbbffc
--- /dev/null
+++ b/src/main/java/com/project/carsharingapp/repository/UserRepository.java
@@ -0,0 +1,7 @@
+package com.project.carsharingapp.repository;
+
+import com.project.carsharingapp.model.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserRepository extends JpaRepository {
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2532435..eb0b019 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,7 +1,8 @@
-#spring.datasource.url=jdbc:mysql://localhost:3306/car_sharing_db?serverTimezone=UTC
-#spring.datasource.username=root
-#spring.datasource.password=anton7570857
-#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.url=jdbc:mysql://localhost:3306/car_sharing_db?serverTimezone=UTC
+spring.datasource.username=root
+spring.datasource.password=gjujlf123$_0
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+
server.servlet.context-path=/api
spring.jpa.hibernate.ddl-auto=validate
diff --git a/src/main/resources/db/changelog/changes/create-roles-table.yaml b/src/main/resources/db/changelog/changes/create-roles-table.yaml
new file mode 100644
index 0000000..5438ef8
--- /dev/null
+++ b/src/main/resources/db/changelog/changes/create-roles-table.yaml
@@ -0,0 +1,21 @@
+databaseChangeLog:
+ - changeSet:
+ id: create-roles-table
+ author: osa
+ changes:
+ - createTable:
+ tableName: roles
+ columns:
+ - column:
+ name: id
+ type: bigint
+ autoIncrement: true
+ constraints:
+ primaryKey: true
+ nullable: false
+ - column:
+ name: name
+ type: varchar(255)
+ constraints:
+ unique: true
+ nullable: false
diff --git a/src/main/resources/db/changelog/changes/create-user-roles-table.yaml b/src/main/resources/db/changelog/changes/create-user-roles-table.yaml
new file mode 100644
index 0000000..dc5ca77
--- /dev/null
+++ b/src/main/resources/db/changelog/changes/create-user-roles-table.yaml
@@ -0,0 +1,24 @@
+databaseChangeLog:
+ - changeSet:
+ id: create-user-role-table
+ author: osa
+ changes:
+ - createTable:
+ tableName: user_roles
+ columns:
+ - column:
+ name: user_id
+ type: bigint
+ constraints:
+ primaryKey: true
+ nullable: false
+ references: users(id)
+ foreignKeyName: fk_user_roles_user_id
+ - column:
+ name: role_id
+ type: bigint
+ constraints:
+ primaryKey: true
+ nullable: false
+ references: roles(id)
+ foreignKeyName: fk_user_roles_role_id
diff --git a/src/main/resources/db/changelog/changes/create-users-table.yaml b/src/main/resources/db/changelog/changes/create-users-table.yaml
new file mode 100644
index 0000000..a5448f2
--- /dev/null
+++ b/src/main/resources/db/changelog/changes/create-users-table.yaml
@@ -0,0 +1,47 @@
+databaseChangeLog:
+ - changeSet:
+ id: create-users-table
+ author: osa
+ changes:
+ - createTable:
+ tableName: users
+ columns:
+ - column:
+ name: id
+ type: bigint
+ autoIncrement: true
+ constraints:
+ primaryKey: true
+ nullable: false
+ - column:
+ name: email
+ type: varchar(255)
+ constraints:
+ nullable: false
+ unique: true
+ - column:
+ name: first_name
+ type: varchar(255)
+ constraints:
+ nullable: false
+ - column:
+ name: last_name
+ type: varchar(255)
+ constraints:
+ nullable: false
+ - column:
+ name: password
+ type: varchar(255)
+ constraints:
+ nullable: false
+ - column:
+ name: telegram_chat_id
+ type: bigint
+ constraints:
+ nullable: false
+ - column:
+ name: is_deleted
+ type: boolean
+ defaultValueBoolean: false
+ constraints:
+ nullable: false
diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml
index 4866ca2..5665573 100644
--- a/src/main/resources/db/changelog/db.changelog-master.yaml
+++ b/src/main/resources/db/changelog/db.changelog-master.yaml
@@ -1,3 +1,10 @@
databaseChangeLog:
- include:
file: db/changelog/changes/create-cars-table.yaml
+ - include:
+ file: db/changelog/changes/create-roles-table.yaml
+ - include:
+ file: /db/changelog/changes/create-users-table.yaml
+ - include:
+ file: /db/changelog/changes/create-user-roles-table.yaml
+
diff --git a/src/main/resources/liquibase.properties b/src/main/resources/liquibase.properties
index 34f4355..75244f1 100644
--- a/src/main/resources/liquibase.properties
+++ b/src/main/resources/liquibase.properties
@@ -1,4 +1,4 @@
-#url=jdbc:mysql://localhost:3306/car_sharing_db?serverTimezone=UTC
-#username=root
-#password=anton7570857
-#changeLogFile=/db/changelog/db.changelog-master.yaml
+url=jdbc:mysql://localhost:3306/car_sharing_db?serverTimezone=UTC
+username=root
+password=gjujlf123$_0
+changeLogFile=/db.changelog/db.changelog-master.yaml