Merge pull request 'BetEntity_implementation' (#4) from BetEntity_implementation into master
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Reviewed-on: #4pull/5/head
commit
d4483be0d3
@ -1,4 +1,4 @@
|
||||
package allin.dto
|
||||
import kotlinx.serialization.Serializable
|
||||
@Serializable
|
||||
data class UserDTO(val username: String, val email: String, val nbCoins: Double, var token:String?)
|
||||
data class UserDTO(val id: String, val username: String, val email: String, val nbCoins: Double, var token:String?)
|
||||
|
@ -0,0 +1,65 @@
|
||||
package allin.entities
|
||||
|
||||
import allin.database
|
||||
import allin.entities.ResponsesEntity.getResponse
|
||||
import allin.model.Bet
|
||||
import allin.utils.Execute
|
||||
import org.ktorm.dsl.*
|
||||
import org.ktorm.entity.Entity
|
||||
import org.ktorm.schema.*
|
||||
import java.time.ZoneId
|
||||
import java.time.ZonedDateTime
|
||||
import java.util.UUID.fromString
|
||||
|
||||
|
||||
interface BetEntity : Entity<BetEntity> {
|
||||
val theme: String
|
||||
val sentenceBet: String
|
||||
val endRegistration: ZonedDateTime
|
||||
val endBet: ZonedDateTime
|
||||
val isPrivate: Boolean
|
||||
val createdBy: String
|
||||
}
|
||||
|
||||
object BetsEntity : Table<BetEntity>("bet") {
|
||||
val id = uuid("id").primaryKey()
|
||||
val theme = varchar("theme")
|
||||
val sentenceBet = varchar("sentencebet")
|
||||
val endRegistration = timestamp("endregistration")
|
||||
val endBet = timestamp("endbet")
|
||||
val isPrivate = boolean("isprivate")
|
||||
val createdBy = varchar("createdby")
|
||||
|
||||
fun getBets(): MutableList<Bet> {
|
||||
return database.from(BetsEntity).select().map {
|
||||
row -> Bet(
|
||||
row[id].toString(),
|
||||
row[theme].toString(),
|
||||
row[sentenceBet].toString(),
|
||||
row[endRegistration]!!.atZone(ZoneId.of("Europe/Paris")),
|
||||
row[endBet]!!.atZone(ZoneId.of("Europe/Paris")),
|
||||
row[isPrivate]?: false,
|
||||
getResponse(fromString(row[id].toString())),
|
||||
row[createdBy].toString()
|
||||
)
|
||||
}.toMutableList()
|
||||
}
|
||||
|
||||
fun createBetsTable(){
|
||||
val request="CREATE TABLE IF not exists bet ( id uuid PRIMARY KEY, theme VARCHAR(255), endregistration timestamp,endbet timestamp,sentencebet varchar(500),isprivate boolean, createdby varchar(250))"
|
||||
database.Execute(request)
|
||||
}
|
||||
|
||||
fun addBetEntity(bet : Bet) {
|
||||
database.insert(BetsEntity) {
|
||||
set(it.id, fromString(bet.id))
|
||||
set(it.endBet,bet.endBet.toInstant())
|
||||
set(it.endRegistration,bet.endRegistration.toInstant())
|
||||
set(it.sentenceBet,bet.sentenceBet)
|
||||
set(it.theme, bet.theme)
|
||||
set(it.isPrivate, bet.isPrivate)
|
||||
set(it.createdBy, bet.createdBy)
|
||||
}
|
||||
ResponsesEntity.addResponse(bet.response,fromString(bet.id))
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package allin.entities
|
||||
|
||||
import allin.database
|
||||
import allin.utils.Execute
|
||||
import org.ktorm.dsl.*
|
||||
import org.ktorm.entity.Entity
|
||||
import org.ktorm.schema.Table
|
||||
import org.ktorm.schema.uuid
|
||||
import org.ktorm.schema.varchar
|
||||
import java.util.*
|
||||
|
||||
|
||||
interface ResponseEntity : Entity<ResponseEntity> {
|
||||
val betId: UUID
|
||||
val response: String
|
||||
}
|
||||
|
||||
object ResponsesEntity : Table<ResponseEntity>("response") {
|
||||
val id = uuid("id").primaryKey()
|
||||
val response = varchar("response").primaryKey()
|
||||
fun createResponseTable(){
|
||||
val request="CREATE TABLE IF NOT EXISTS response (id UUID,response VARCHAR(250),CONSTRAINT pk_response_id PRIMARY KEY (id,response));"
|
||||
database.Execute(request)
|
||||
}
|
||||
|
||||
fun getResponse(idBet: UUID): MutableList<String> {
|
||||
return database.from(ResponsesEntity)
|
||||
.select(response)
|
||||
.where { id eq idBet }
|
||||
.map { it[response].toString() }.toMutableList()
|
||||
}
|
||||
|
||||
fun addResponse(responses : MutableList<String>, idBet : UUID ) {
|
||||
responses.forEach {selected ->
|
||||
database.insert(ResponsesEntity) {
|
||||
set(it.id, idBet)
|
||||
set(it.response,selected)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
package allin.serializer
|
||||
|
||||
import kotlinx.serialization.KSerializer
|
||||
import kotlinx.serialization.descriptors.PrimitiveKind
|
||||
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
|
||||
import kotlinx.serialization.encoding.Decoder
|
||||
import kotlinx.serialization.encoding.Encoder
|
||||
import java.util.*
|
||||
|
||||
object UUIDSerializer : KSerializer<UUID> {
|
||||
override val descriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
|
||||
|
||||
override fun deserialize(decoder: Decoder): UUID {
|
||||
return UUID.fromString(decoder.decodeString())
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: UUID) {
|
||||
encoder.encodeString(value.toString())
|
||||
}
|
||||
}
|
Loading…
Reference in new issue