feat: add user entity and role model

This commit is contained in:
dualfroz committed 2026-08-24 12:13:50 +02:00
1 parent 9ca8d0d14d
commit a593e090e4
3 files changed
+90

No files matched your search

@@ -0,0 +1,6 @@
package com.slotline.user;
public enum Role {
USER,
ADMIN
}
+72
View File
@@ -0,0 +1,72 @@
package com.slotline.user;
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 java.time.Instant;
@Entity
@Table(name = "app_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "organization_id", nullable = false)
private Long organizationId;
@Column(nullable = false, unique = true, length = 64)
private String username;
@Column(name = "password_hash", nullable = false, length = 100)
private String passwordHash;
@Enumerated(EnumType.STRING)
@Column(nullable = false, length = 16)
private Role role;
@Column(name = "created_at", nullable = false)
private Instant createdAt;
protected User() {
}
public User(Long organizationId, String username, String passwordHash, Role role, Instant createdAt) {
this.organizationId = organizationId;
this.username = username;
this.passwordHash = passwordHash;
this.role = role;
this.createdAt = createdAt;
}
public Long getId() {
return id;
}
public Long getOrganizationId() {
return organizationId;
}
public String getUsername() {
return username;
}
public String getPasswordHash() {
return passwordHash;
}
public Role getRole() {
return role;
}
public Instant getCreatedAt() {
return createdAt;
}
}
@@ -0,0 +1,12 @@
package com.slotline.user;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
boolean existsByUsername(String username);
}