Skip to content

Commit

Permalink
#391 initial entities
Browse files Browse the repository at this point in the history
  • Loading branch information
Legervad committed Nov 19, 2023
1 parent fb6e7b2 commit 40c6aa6
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -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
)
32 changes: 32 additions & 0 deletions app/backend/src/main/kotlin/com/gamelounge/backend/entity/Game.kt
Original file line number Diff line number Diff line change
@@ -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
)
28 changes: 28 additions & 0 deletions app/backend/src/main/kotlin/com/gamelounge/backend/entity/LFG.kt
Original file line number Diff line number Diff line change
@@ -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<Comment> = mutableListOf()
)
28 changes: 28 additions & 0 deletions app/backend/src/main/kotlin/com/gamelounge/backend/entity/Post.kt
Original file line number Diff line number Diff line change
@@ -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<Comment> = mutableListOf()
)
19 changes: 19 additions & 0 deletions app/backend/src/main/kotlin/com/gamelounge/backend/entity/Tag.kt
Original file line number Diff line number Diff line change
@@ -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<Post> = mutableListOf(),

@ManyToMany(mappedBy = "tags")
val lfgs: List<LFG> = mutableListOf()
)
43 changes: 28 additions & 15 deletions app/backend/src/main/kotlin/com/gamelounge/backend/entity/User.kt
Original file line number Diff line number Diff line change
@@ -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<Post>? = mutableListOf(),

@OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true)
val games: List<Game>? = mutableListOf(),

@OneToMany(mappedBy = "user", cascade = [CascadeType.ALL], orphanRemoval = true)
val LFGs: List<LFG>? = mutableListOf(),

}
@ManyToMany(mappedBy = "user", cascade = [CascadeType.ALL])
val tags: List<Tag>? = mutableListOf()
)
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.gamelounge.backend.model


import com.fasterxml.jackson.annotation.JsonProperty
import java.net.URL

data class RegisterationRequest (
@JsonProperty("username")
Expand All @@ -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?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
10 changes: 7 additions & 3 deletions app/backend/src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -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
Expand Down

0 comments on commit 40c6aa6

Please # to comment.