feat: true-microservices #40
@@ -10,6 +10,7 @@ import java.util.UUID
|
|||||||
@Entity
|
@Entity
|
||||||
@Table(name = "accounts")
|
@Table(name = "accounts")
|
||||||
class Account extends PanacheEntityBase:
|
class Account extends PanacheEntityBase:
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.UUID)
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
var id: UUID = uninitialized
|
var id: UUID = uninitialized
|
||||||
@@ -24,4 +25,5 @@ class Account extends PanacheEntityBase:
|
|||||||
|
|
||||||
var rating: Int = 1500
|
var rating: Int = 1500
|
||||||
|
|
||||||
var createdAt: Instant = uninitialized
|
var createdAt: Instant = uninitialized
|
||||||
|
// scalafix:on
|
||||||
@@ -11,6 +11,7 @@ import scala.Conversion
|
|||||||
@Entity
|
@Entity
|
||||||
@Table(name = "challenges")
|
@Table(name = "challenges")
|
||||||
class Challenge extends PanacheEntityBase:
|
class Challenge extends PanacheEntityBase:
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.UUID)
|
@GeneratedValue(strategy = GenerationType.UUID)
|
||||||
var id: UUID = uninitialized
|
var id: UUID = uninitialized
|
||||||
@@ -47,6 +48,7 @@ class Challenge extends PanacheEntityBase:
|
|||||||
|
|
||||||
@Column(nullable = true)
|
@Column(nullable = true)
|
||||||
var gameId: String = uninitialized
|
var gameId: String = uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
def gameIdOpt: Option[String] = Option(gameId)
|
def gameIdOpt: Option[String] = Option(gameId)
|
||||||
def declineReasonOpt: Option[DeclineReason] = Option(declineReason)
|
def declineReasonOpt: Option[DeclineReason] = Option(declineReason)
|
||||||
|
|||||||
+2
-4
@@ -6,9 +6,7 @@ import jakarta.persistence.Converter
|
|||||||
@Converter(autoApply = true)
|
@Converter(autoApply = true)
|
||||||
class ChallengeColorConverter extends AttributeConverter[ChallengeColor, String]:
|
class ChallengeColorConverter extends AttributeConverter[ChallengeColor, String]:
|
||||||
override def convertToDatabaseColumn(attribute: ChallengeColor): String =
|
override def convertToDatabaseColumn(attribute: ChallengeColor): String =
|
||||||
if attribute == null then null else attribute.toString
|
Option(attribute).map(_.toString).orNull
|
||||||
|
|
||||||
override def convertToEntityAttribute(dbData: String): ChallengeColor =
|
override def convertToEntityAttribute(dbData: String): ChallengeColor =
|
||||||
if dbData == null then null
|
Option(dbData).map(ChallengeColor.valueOf).orNull
|
||||||
else
|
|
||||||
ChallengeColor.valueOf(dbData)
|
|
||||||
|
|||||||
+2
-4
@@ -6,9 +6,7 @@ import jakarta.persistence.Converter
|
|||||||
@Converter(autoApply = true)
|
@Converter(autoApply = true)
|
||||||
class ChallengeStatusConverter extends AttributeConverter[ChallengeStatus, String]:
|
class ChallengeStatusConverter extends AttributeConverter[ChallengeStatus, String]:
|
||||||
override def convertToDatabaseColumn(attribute: ChallengeStatus): String =
|
override def convertToDatabaseColumn(attribute: ChallengeStatus): String =
|
||||||
if attribute == null then null else attribute.toString
|
Option(attribute).map(_.toString).orNull
|
||||||
|
|
||||||
override def convertToEntityAttribute(dbData: String): ChallengeStatus =
|
override def convertToEntityAttribute(dbData: String): ChallengeStatus =
|
||||||
if dbData == null then null
|
Option(dbData).map(ChallengeStatus.valueOf).orNull
|
||||||
else
|
|
||||||
ChallengeStatus.valueOf(dbData)
|
|
||||||
|
|||||||
+2
-4
@@ -6,9 +6,7 @@ import jakarta.persistence.Converter
|
|||||||
@Converter(autoApply = true)
|
@Converter(autoApply = true)
|
||||||
class DeclineReasonConverter extends AttributeConverter[DeclineReason, String]:
|
class DeclineReasonConverter extends AttributeConverter[DeclineReason, String]:
|
||||||
override def convertToDatabaseColumn(attribute: DeclineReason): String =
|
override def convertToDatabaseColumn(attribute: DeclineReason): String =
|
||||||
if attribute == null then null else attribute.toString
|
Option(attribute).map(_.toString).orNull
|
||||||
|
|
||||||
override def convertToEntityAttribute(dbData: String): DeclineReason =
|
override def convertToEntityAttribute(dbData: String): DeclineReason =
|
||||||
if dbData == null then null
|
Option(dbData).map(DeclineReason.valueOf).orNull
|
||||||
else
|
|
||||||
DeclineReason.valueOf(dbData)
|
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ import scala.jdk.CollectionConverters.*
|
|||||||
class AccountRepository:
|
class AccountRepository:
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
var em: EntityManager = scala.compiletime.uninitialized
|
var em: EntityManager = scala.compiletime.uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
def findByUsername(username: String): Option[Account] =
|
def findByUsername(username: String): Option[Account] =
|
||||||
em.createQuery("FROM Account WHERE username = :username", classOf[Account])
|
em.createQuery("FROM Account WHERE username = :username", classOf[Account])
|
||||||
|
|||||||
+2
@@ -13,7 +13,9 @@ import scala.jdk.CollectionConverters.*
|
|||||||
class ChallengeRepository:
|
class ChallengeRepository:
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
var em: EntityManager = scala.compiletime.uninitialized
|
var em: EntityManager = scala.compiletime.uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
def findActiveByChallengerId(challengerId: UUID): List[Challenge] =
|
def findActiveByChallengerId(challengerId: UUID): List[Challenge] =
|
||||||
em.createQuery(
|
em.createQuery(
|
||||||
|
|||||||
@@ -20,11 +20,13 @@ import java.util.UUID
|
|||||||
@Produces(Array(MediaType.APPLICATION_JSON))
|
@Produces(Array(MediaType.APPLICATION_JSON))
|
||||||
class AccountResource:
|
class AccountResource:
|
||||||
|
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
@Inject
|
@Inject
|
||||||
var accountService: AccountService = uninitialized
|
var accountService: AccountService = uninitialized
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
var jwt: JsonWebToken = uninitialized
|
var jwt: JsonWebToken = uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
def register(req: RegisterRequest): Response =
|
def register(req: RegisterRequest): Response =
|
||||||
|
|||||||
@@ -20,11 +20,13 @@ import java.util.UUID
|
|||||||
@Produces(Array(MediaType.APPLICATION_JSON))
|
@Produces(Array(MediaType.APPLICATION_JSON))
|
||||||
class ChallengeResource:
|
class ChallengeResource:
|
||||||
|
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
@Inject
|
@Inject
|
||||||
var challengeService: ChallengeService = uninitialized
|
var challengeService: ChallengeService = uninitialized
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
var jwt: JsonWebToken = uninitialized
|
var jwt: JsonWebToken = uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Path("/{username}")
|
@Path("/{username}")
|
||||||
|
|||||||
@@ -17,8 +17,10 @@ import java.util.UUID
|
|||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
class AccountService:
|
class AccountService:
|
||||||
|
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
@Inject
|
@Inject
|
||||||
var accountRepository: AccountRepository = uninitialized
|
var accountRepository: AccountRepository = uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
def register(req: RegisterRequest): Either[AccountError, Account] =
|
def register(req: RegisterRequest): Either[AccountError, Account] =
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import java.util.UUID
|
|||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
class ChallengeService:
|
class ChallengeService:
|
||||||
|
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
@Inject
|
@Inject
|
||||||
var accountRepository: AccountRepository = uninitialized
|
var accountRepository: AccountRepository = uninitialized
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ class ChallengeService:
|
|||||||
@Inject
|
@Inject
|
||||||
@RestClient
|
@RestClient
|
||||||
var coreGameClient: CoreGameClient = uninitialized
|
var coreGameClient: CoreGameClient = uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
@Transactional
|
@Transactional
|
||||||
def create(challengerId: UUID, destUsername: String, req: ChallengeRequest): Either[ChallengeError, Challenge] =
|
def create(challengerId: UUID, destUsername: String, req: ChallengeRequest): Either[ChallengeError, Challenge] =
|
||||||
@@ -98,7 +100,6 @@ class ChallengeService:
|
|||||||
val outgoing = challengeRepository.findActiveByChallengerId(userId).map(toDto)
|
val outgoing = challengeRepository.findActiveByChallengerId(userId).map(toDto)
|
||||||
ChallengeListDto(in = incoming, out = outgoing)
|
ChallengeListDto(in = incoming, out = outgoing)
|
||||||
|
|
||||||
// scalafix:off DisableSyntax.null
|
|
||||||
private def createGame(challenge: Challenge): Either[ChallengeError, String] =
|
private def createGame(challenge: Challenge): Either[ChallengeError, String] =
|
||||||
try
|
try
|
||||||
val (white, black) = assignColors(challenge)
|
val (white, black) = assignColors(challenge)
|
||||||
@@ -106,7 +107,6 @@ class ChallengeService:
|
|||||||
val req = CoreCreateGameRequest(Some(white), Some(black), tc, Some("Authenticated"))
|
val req = CoreCreateGameRequest(Some(white), Some(black), tc, Some("Authenticated"))
|
||||||
Right(coreGameClient.createGame(req).gameId)
|
Right(coreGameClient.createGame(req).gameId)
|
||||||
catch case _ => Left(ChallengeError.GameCreationFailed)
|
catch case _ => Left(ChallengeError.GameCreationFailed)
|
||||||
// scalafix:on DisableSyntax.null
|
|
||||||
|
|
||||||
private def assignColors(challenge: Challenge): (CorePlayerInfo, CorePlayerInfo) =
|
private def assignColors(challenge: Challenge): (CorePlayerInfo, CorePlayerInfo) =
|
||||||
val challenger = CorePlayerInfo(challenge.challenger.id.toString, challenge.challenger.username)
|
val challenger = CorePlayerInfo(challenge.challenger.id.toString, challenge.challenger.username)
|
||||||
|
|||||||
+2
@@ -15,7 +15,9 @@ class ChallengeResourceTest:
|
|||||||
|
|
||||||
@InjectMock
|
@InjectMock
|
||||||
@RestClient
|
@RestClient
|
||||||
|
// scalafix:off DisableSyntax.var
|
||||||
var coreGameClient: CoreGameClient = scala.compiletime.uninitialized
|
var coreGameClient: CoreGameClient = scala.compiletime.uninitialized
|
||||||
|
// scalafix:on
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
def setup(): Unit =
|
def setup(): Unit =
|
||||||
|
|||||||
Reference in New Issue
Block a user