diff --git a/backend/.gitignore b/backend/.gitignore index c2065bc..056a56a 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -35,3 +35,7 @@ out/ ### VS Code ### .vscode/ + +### Database ### +data/ + diff --git a/backend/src/main/java/com/hitcommunications/servermanager/BackendApplication.java b/backend/src/main/java/com/hitcommunications/servermanager/BackendApplication.java index 4c06f28..aacf78c 100644 --- a/backend/src/main/java/com/hitcommunications/servermanager/BackendApplication.java +++ b/backend/src/main/java/com/hitcommunications/servermanager/BackendApplication.java @@ -2,12 +2,19 @@ package com.hitcommunications.servermanager; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; @SpringBootApplication +@RestController public class BackendApplication { public static void main(String[] args) { SpringApplication.run(BackendApplication.class, args); } + @GetMapping + public String home() { + return "Hello, World!"; + } } diff --git a/backend/src/main/java/com/hitcommunications/servermanager/model/Users.java b/backend/src/main/java/com/hitcommunications/servermanager/model/Users.java new file mode 100644 index 0000000..7e58c17 --- /dev/null +++ b/backend/src/main/java/com/hitcommunications/servermanager/model/Users.java @@ -0,0 +1,63 @@ +package com.hitcommunications.servermanager.model; + +import jakarta.persistence.*; +import lombok.*; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.UpdateTimestamp; + +import java.sql.Timestamp; +import java.util.UUID; + +@Entity +@Table(name = "tab_users") +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@Builder +public class Users { + + @Id + @GeneratedValue(strategy = GenerationType.UUID) + @Column(updatable = false, nullable = false) + private UUID id; + + @Column(nullable = false, unique = true) + private String username; + + @Column(nullable = false, unique = true, length = 100) + private String email; + + @Column(nullable = false, length = 20) + private String password; + + @Column(nullable = false, length = 30) + private String firstName; + + @Column(nullable = false, length = 30) + private String lastName; + + @CreationTimestamp + @Column(nullable = false) + private Timestamp createdAt; + + @UpdateTimestamp + @Column(nullable = false) + private Timestamp updatedAt; + + private Timestamp lastLogin; + + @PrePersist + private void prePersist() { + if (this.username == null) { + this.username = generateUsername(); + } + } + + public String generateUsername() { + String firstPart = this.firstName != null && this.firstName.length() >= 3 ? this.firstName.substring(0, 3) : (this.firstName != null ? this.firstName : ""); + String secondPart = this.lastName != null && this.lastName.length() >= 3 ? this.lastName.substring(0, 3) : (this.lastName != null ? this.lastName : ""); + this.username = firstPart + secondPart; + return this.username; + } +} diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties deleted file mode 100644 index 3ca17a4..0000000 --- a/backend/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=backend diff --git a/backend/src/main/resources/application.yaml b/backend/src/main/resources/application.yaml new file mode 100644 index 0000000..4ed3051 --- /dev/null +++ b/backend/src/main/resources/application.yaml @@ -0,0 +1,17 @@ +spring: + application: + name: backend + datasource: + url: jdbc:h2:file:./data/db + driver-class-name: org.h2.Driver + username: sa + password: + jpa: + hibernate: + ddl-auto: update + database-platform: org.hibernate.dialect.H2Dialect + h2: + console: + enabled: true + path: /h2-console +