diff --git a/data/backend-gateway.db b/data/backend-gateway.db index 1aa166a..249ba3a 100644 Binary files a/data/backend-gateway.db and b/data/backend-gateway.db differ diff --git a/src/main/java/com/litoralregas/backend_gateway/user/UserEntity.java b/src/main/java/com/litoralregas/backend_gateway/user/UserEntity.java index 2160e2c..d0b8913 100644 --- a/src/main/java/com/litoralregas/backend_gateway/user/UserEntity.java +++ b/src/main/java/com/litoralregas/backend_gateway/user/UserEntity.java @@ -1,4 +1,81 @@ package com.litoralregas.backend_gateway.user; +import com.litoralregas.backend_gateway.client.ClientEntity; +import jakarta.persistence.*; + +@Entity +@Table(name = "users") public class UserEntity { -} + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(optional = false, fetch = FetchType.LAZY) + @JoinColumn(name = "client_id", nullable = false) + private ClientEntity client; + + @Column(nullable = false, unique = true) + private String username; + + @Column(name = "password_hash", nullable = false) + private String passwordHash; + + @Enumerated(EnumType.STRING) + @Column(nullable = false) + private UserRole role; + + @Column(nullable = false) + private boolean enabled = true; + + @Column(name = "created_at", nullable = false, insertable = false, updatable = false) + private String createdAt; + + public Long getId() { + return id; + } + + public ClientEntity getClient() { + return client; + } + + public String getUsername() { + return username; + } + + public String getPasswordHash() { + return passwordHash; + } + + public UserRole getRole() { + return role; + } + + public boolean isEnabled() { + return enabled; + } + + public String getCreatedAt() { + return createdAt; + } + + public void setClient(ClientEntity client) { + this.client = client; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setPasswordHash(String passwordHash) { + this.passwordHash = passwordHash; + } + + public void setRole(UserRole role) { + this.role = role; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + } +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/user/UserRepository.java b/src/main/java/com/litoralregas/backend_gateway/user/UserRepository.java index 84da654..4c1b83f 100644 --- a/src/main/java/com/litoralregas/backend_gateway/user/UserRepository.java +++ b/src/main/java/com/litoralregas/backend_gateway/user/UserRepository.java @@ -1,4 +1,10 @@ package com.litoralregas.backend_gateway.user; -public class UserRepository { -} +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface UserRepository extends JpaRepository { + + Optional findByUsername(String username); +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/user/UserRole.java b/src/main/java/com/litoralregas/backend_gateway/user/UserRole.java new file mode 100644 index 0000000..3095ac5 --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/user/UserRole.java @@ -0,0 +1,6 @@ +package com.litoralregas.backend_gateway.user; + +public enum UserRole { + ADMIN, + CLIENT_USER +} \ No newline at end of file diff --git a/src/main/resources/db/migration/V2__create_users.sql b/src/main/resources/db/migration/V2__create_users.sql new file mode 100644 index 0000000..fa9ff79 --- /dev/null +++ b/src/main/resources/db/migration/V2__create_users.sql @@ -0,0 +1,13 @@ +CREATE TABLE users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + client_id INTEGER NOT NULL, + username TEXT NOT NULL UNIQUE, + password_hash TEXT NOT NULL, + role TEXT NOT NULL, + enabled INTEGER NOT NULL DEFAULT 1, + created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT fk_users_client + FOREIGN KEY (client_id) + REFERENCES clients(id) +); \ No newline at end of file