From 5fa28df29ca1dd816fdbda2d374b6c9378db02da Mon Sep 17 00:00:00 2001 From: gfxv Date: Wed, 12 Mar 2025 18:54:56 +0300 Subject: [PATCH] feat: add auth enitiies and repos --- src/main/java/dev/gfxv/blps/entity/Role.java | 35 +++++++++ src/main/java/dev/gfxv/blps/entity/User.java | 77 +++++++++++++++++++ .../gfxv/blps/repository/RoleRepository.java | 10 +++ .../gfxv/blps/repository/UserRepository.java | 12 +++ 4 files changed, 134 insertions(+) create mode 100644 src/main/java/dev/gfxv/blps/entity/Role.java create mode 100644 src/main/java/dev/gfxv/blps/entity/User.java create mode 100644 src/main/java/dev/gfxv/blps/repository/RoleRepository.java create mode 100644 src/main/java/dev/gfxv/blps/repository/UserRepository.java diff --git a/src/main/java/dev/gfxv/blps/entity/Role.java b/src/main/java/dev/gfxv/blps/entity/Role.java new file mode 100644 index 0000000..f52cd34 --- /dev/null +++ b/src/main/java/dev/gfxv/blps/entity/Role.java @@ -0,0 +1,35 @@ +package dev.gfxv.blps.entity; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Data; +import lombok.Getter; +import lombok.experimental.FieldDefaults; + +@Entity +@Table(name = "roles") +@FieldDefaults(level = AccessLevel.PRIVATE) +public class Role { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + Long id; + + @Column(name = "name", nullable = false, unique = true) + String name; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/java/dev/gfxv/blps/entity/User.java b/src/main/java/dev/gfxv/blps/entity/User.java new file mode 100644 index 0000000..2b89b24 --- /dev/null +++ b/src/main/java/dev/gfxv/blps/entity/User.java @@ -0,0 +1,77 @@ +package dev.gfxv.blps.entity; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.FieldDefaults; + +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "users") +@FieldDefaults(level = AccessLevel.PRIVATE) +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + Long id; + + @Column(name = "username", nullable = false, unique = true) + String username; + + @Column(name = "email", nullable = false, unique = true) + String email; + + @Column(name = "password", nullable = false) + String password; + + @ManyToMany(fetch = FetchType.EAGER) + @JoinTable( + name = "user_roles", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "role_id") + ) + Set roles = new HashSet<>(); + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Set getRoles() { + return roles; + } + + public void setRoles(Set roles) { + this.roles = roles; + } +} \ No newline at end of file diff --git a/src/main/java/dev/gfxv/blps/repository/RoleRepository.java b/src/main/java/dev/gfxv/blps/repository/RoleRepository.java new file mode 100644 index 0000000..330e36b --- /dev/null +++ b/src/main/java/dev/gfxv/blps/repository/RoleRepository.java @@ -0,0 +1,10 @@ +package dev.gfxv.blps.repository; + +import dev.gfxv.blps.entity.Role; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface RoleRepository extends JpaRepository { + Optional findByName(String name); +} \ No newline at end of file diff --git a/src/main/java/dev/gfxv/blps/repository/UserRepository.java b/src/main/java/dev/gfxv/blps/repository/UserRepository.java new file mode 100644 index 0000000..0e7709e --- /dev/null +++ b/src/main/java/dev/gfxv/blps/repository/UserRepository.java @@ -0,0 +1,12 @@ +package dev.gfxv.blps.repository; + +import dev.gfxv.blps.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface UserRepository extends JpaRepository { + Optional findByUsername(String username); + Boolean existsByUsername(String username); + Boolean existsByEmail(String email); +} \ No newline at end of file