diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Comment.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Comment.kt new file mode 100644 index 00000000..3d93a674 --- /dev/null +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Comment.kt @@ -0,0 +1,28 @@ +package com.gamelounge.backend.entity +import jakarta.persistence.* +import java.time.Instant + +@Entity +@Table(name = "comments") +class Comment( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val commentId: Long? = null, + + val content: String = "", + val creationDate: Instant = Instant.now(), + val upvotes: Int = 0, + val downvotes: Int = 0, + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "postId") + val post: Post? = null, + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "lfgId") + val lfg: LFG? = null, + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "userId") + val user: User? = null +) \ No newline at end of file diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Game.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Game.kt new file mode 100644 index 00000000..82a6776d --- /dev/null +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Game.kt @@ -0,0 +1,32 @@ +package com.gamelounge.backend.entity + +import jakarta.persistence.GeneratedValue +import jakarta.persistence.GenerationType +import jakarta.persistence.Id +import jakarta.persistence.ManyToOne + +import jakarta.persistence.* + +@Entity +@Table(name = "games") +class Game ( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val gameId: Long? = null, + + val title: String = "", + val description: String = "", + val genre: String = "", + val platform: String = "", + val avatarDetails: String = "", // Consider a more complex structure + val playerNumber: String = "", + val releaseYear: Int = 0, + val universe: String = "", + val mechanics: String = "", + val playtime: String = "", + val mapInformation: String = "", + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "userId") + val user: User? = null +) \ No newline at end of file diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/LFG.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/LFG.kt new file mode 100644 index 00000000..34fdd0d2 --- /dev/null +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/LFG.kt @@ -0,0 +1,28 @@ +package com.gamelounge.backend.entity + +import jakarta.persistence.* +import java.time.Instant + +@Entity +@Table(name = "lfg") +class LFG( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val lfgId: Long? = null, + + val title: String = "", + val description: String = "", + val requiredPlatform: String = "", + val requiredLanguage: String = "", + val micCamRequirement: Boolean = true, + val memberCapacity: Int = 0, + val creationDate: Instant = Instant.now(), + val tags: String? = "", + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "userId") + val user: User? = null, + + @OneToMany(mappedBy = "lfg", cascade = arrayOf(CascadeType.ALL), orphanRemoval = true) + val comments: List = mutableListOf() +) \ No newline at end of file diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Post.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Post.kt new file mode 100644 index 00000000..641c78d6 --- /dev/null +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Post.kt @@ -0,0 +1,28 @@ +package com.gamelounge.backend.entity +import jakarta.persistence.* +import lombok.NoArgsConstructor +import java.time.Instant + +@Entity +@Table(name = "posts") +class Post( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val postId: Long? = null, + + val content: String = "", + val creationDate: Instant = Instant.now(), + val upvotes: Int = 0, + val downvotes: Int = 0, + val tags: String? = "", + val category: String = "", + val relatedGamePage: String? = "", + val annotations: String? = "", + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "userId") + val user: User? = null, + + @OneToMany(mappedBy = "post", cascade = arrayOf(CascadeType.ALL), orphanRemoval = true) + val comments: List = mutableListOf() +) \ No newline at end of file diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Tag.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Tag.kt new file mode 100644 index 00000000..c202f64e --- /dev/null +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/Tag.kt @@ -0,0 +1,19 @@ +package com.gamelounge.backend.entity + +import jakarta.persistence.* + +@Entity +@Table(name = "tags") +class Tag( + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val tagId: Long = 0, + + val name: String = "", + + @ManyToMany(mappedBy = "tags") + val posts: List = mutableListOf(), + + @ManyToMany(mappedBy = "tags") + val lfgs: List = mutableListOf() +) \ No newline at end of file diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/User.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/User.kt index b2fabafc..4f3b700f 100644 --- a/app/backend/src/main/kotlin/com/gamelounge/backend/entity/User.kt +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/entity/User.kt @@ -1,21 +1,34 @@ package com.gamelounge.backend.entity - -import jakarta.persistence.Entity -import jakarta.persistence.Id -import jakarta.persistence.Table +import jakarta.persistence.* +import lombok.Data +import lombok.NoArgsConstructor @Entity -@Table(name ="users") +@Data +@NoArgsConstructor class User( - @Id val username: String, - val email: String, - val name: String, - val surname: String, - val image: ByteArray? = null, - var passwordHash: ByteArray, - var salt: ByteArray, - ){ - constructor() : this("", "", "", "", null, ByteArray(0), ByteArray(0)) + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + val userId: Long = 0, + + val username: String = "", + val email: String = "", + val password: String = "", + val profilePicture: String? = null, + val about: String? = null, + var passwordHash: ByteArray = ByteArray(0), + var salt: ByteArray = ByteArray(0), + + @OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true) + val posts: List? = mutableListOf(), + + @OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true) + val games: List? = mutableListOf(), + + @OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true) + val LFGs: List? = mutableListOf(), -} \ No newline at end of file + @ManyToMany(mappedBy = "user", cascade = [CascadeType.ALL]) + val tags: List? = mutableListOf() +) \ No newline at end of file diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/model/RegisterationRequest.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/model/RegisterationRequest.kt index 9900e403..cf12e47a 100644 --- a/app/backend/src/main/kotlin/com/gamelounge/backend/model/RegisterationRequest.kt +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/model/RegisterationRequest.kt @@ -2,6 +2,7 @@ package com.gamelounge.backend.model import com.fasterxml.jackson.annotation.JsonProperty +import java.net.URL data class RegisterationRequest ( @JsonProperty("username") @@ -13,12 +14,6 @@ data class RegisterationRequest ( @JsonProperty("email") val email: String, - @JsonProperty("name") - val name: String, - - @JsonProperty("surname") - val surname: String, - @JsonProperty("image") val image: ByteArray? diff --git a/app/backend/src/main/kotlin/com/gamelounge/backend/service/AccessService.kt b/app/backend/src/main/kotlin/com/gamelounge/backend/service/AccessService.kt index ab6664c6..d1b19f0c 100644 --- a/app/backend/src/main/kotlin/com/gamelounge/backend/service/AccessService.kt +++ b/app/backend/src/main/kotlin/com/gamelounge/backend/service/AccessService.kt @@ -33,7 +33,10 @@ class AccessService( if (userRepository.existsByUsername(request.username)){ throw UsernameAlreadyExistException("The username already exists!") } - userRepository.save(User(request.username, request.email, request.name, request.surname, request.image, passwordHash, salt)) +// val imageUrl: String = s3Service.save(request.image) + val imageUrl: String = "some-url" + userRepository.save(User(username = request.username, email = request.email, password = request.password, profilePicture = imageUrl)) + } fun login(username: String, password: String): UUID { diff --git a/app/backend/src/main/resources/application.properties b/app/backend/src/main/resources/application.properties index 4d70e4d6..db855796 100644 --- a/app/backend/src/main/resources/application.properties +++ b/app/backend/src/main/resources/application.properties @@ -1,7 +1,11 @@ # Database properties -spring.datasource.url=${SPRING_DATASOURCE_URL} -spring.datasource.username=${SPRING_DATASOURCE_USERNAME} -spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} +#spring.datasource.url=${SPRING_DATASOURCE_URL} +#spring.datasource.username=${SPRING_DATASOURCE_USERNAME} +#spring.datasource.password=${SPRING_DATASOURCE_PASSWORD} + +spring.datasource.url=jdbc:postgresql://localhost:5433/postgres +spring.datasource.username=postgres +spring.datasource.password=000000 # Hibernate properties spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect