/GET residenze

This commit is contained in:
Francesco Di Sciascio 2025-04-28 11:13:20 +02:00
parent 3fe10dfcdb
commit d5db89f5c2
6 changed files with 70 additions and 0 deletions

View File

@ -111,6 +111,12 @@ object ProdottiPrenotabiliTable : IdTable<Long>("view_prodotti_prenotabili"){
val modalitaPrenotazione = varchar("modalita_prenotazione", 255)
}
object ResidenzeTable : IdTable<Long>("residenze"){
override val id = long("id").entityId()
val idPuntoDistribuzione = long("id_punto_distribuzione")
val nome = varchar("nome", 255)
}
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
@ -208,6 +214,13 @@ class ProdottiPrenotabiliDao(id: EntityID<Long>) :LongEntity(id) {
var modalitaPrenotazione by ProdottiPrenotabiliTable.modalitaPrenotazione
}
class ResidenzeDao(id: EntityID<Long>) :LongEntity(id){
companion object : LongEntityClass<ResidenzeDao>(ResidenzeTable)
val idPuntoDistribuzione by ResidenzeTable.idPuntoDistribuzione
val nome by ResidenzeTable.nome
}
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
dao.id.value,
dao.username,
@ -319,6 +332,14 @@ fun prodottiPrenotabiliDaoToModel(dao: ProdottiPrenotabiliDao) :ProdottiPrenotab
)
}
fun residenzeDaoToModel(dao: ResidenzeDao) :Residenze{
return Residenze(
dao.id.value,
dao.idPuntoDistribuzione,
dao.nome
)
}
suspend fun <T> suspendTransaction(block: Transaction.() -> T): T =
newSuspendedTransaction(Dispatchers.IO, statement = block)

View File

@ -0,0 +1,10 @@
package eu.maiora.model
import kotlinx.serialization.Serializable
@Serializable
data class Residenze(
val id: Long,
val idPuntoDistribuzione : Long,
val nome : String
)

View File

@ -0,0 +1,5 @@
package eu.maiora.model
interface ResidenzeRepository {
suspend fun listaResidenze(): List<Residenze>
}

View File

@ -0,0 +1,13 @@
package eu.maiora.model
import eu.maiora.db.*
class ResidenzeRepositoryImpl : ResidenzeRepository {
override suspend fun listaResidenze(): List<Residenze> = suspendTransaction {
// Cerca la lista di composizioni
ResidenzeDao.all()
.toList()
.map { residenzeDaoToModel(it) } // Converte il DAO in un oggetto Residenze
}
}

View File

@ -21,5 +21,6 @@ fun Application.configureRouting() {
puntiDistribuzione(PuntiDistribuzioneRepositoryImpl())
slotOrari(SlotOrariRepositoryImpl())
prodottiPrenotabili(ProdottiPrenotabiliRepositoryImpl())
residenze(ResidenzeRepositoryImpl())
}
}

View File

@ -0,0 +1,20 @@
package eu.maiora.routes
import eu.maiora.model.ResidenzeRepositoryImpl
import io.ktor.server.application.*
import io.ktor.server.auth.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
fun Route.residenze(residenzeRepository: ResidenzeRepositoryImpl){
route("/api/residenze"){
authenticate("auth-jwt") {
get(){
val listaResidenze = residenzeRepository.listaResidenze()
call.respond(listaResidenze)
}
}
}
}