From d5db89f5c22c389bd1fb024eeb7af9fcbb106b08 Mon Sep 17 00:00:00 2001 From: francescods Date: Mon, 28 Apr 2025 11:13:20 +0200 Subject: [PATCH] /GET residenze --- src/main/kotlin/eu/maiora/db/Mapping.kt | 21 +++++++++++++++++++ src/main/kotlin/eu/maiora/model/Residenze.kt | 10 +++++++++ .../eu/maiora/model/ResidenzeRepository.kt | 5 +++++ .../maiora/model/ResidenzeRepositoryImpl.kt | 13 ++++++++++++ src/main/kotlin/eu/maiora/plugins/Routing.kt | 1 + src/main/kotlin/eu/maiora/routes/Residenze.kt | 20 ++++++++++++++++++ 6 files changed, 70 insertions(+) create mode 100644 src/main/kotlin/eu/maiora/model/Residenze.kt create mode 100644 src/main/kotlin/eu/maiora/model/ResidenzeRepository.kt create mode 100644 src/main/kotlin/eu/maiora/model/ResidenzeRepositoryImpl.kt create mode 100644 src/main/kotlin/eu/maiora/routes/Residenze.kt diff --git a/src/main/kotlin/eu/maiora/db/Mapping.kt b/src/main/kotlin/eu/maiora/db/Mapping.kt index bd43374..d42d8ce 100644 --- a/src/main/kotlin/eu/maiora/db/Mapping.kt +++ b/src/main/kotlin/eu/maiora/db/Mapping.kt @@ -111,6 +111,12 @@ object ProdottiPrenotabiliTable : IdTable("view_prodotti_prenotabili"){ val modalitaPrenotazione = varchar("modalita_prenotazione", 255) } +object ResidenzeTable : IdTable("residenze"){ + override val id = long("id").entityId() + val idPuntoDistribuzione = long("id_punto_distribuzione") + val nome = varchar("nome", 255) +} + class AccountsDAO(id: EntityID) :IntEntity(id) { companion object : IntEntityClass(AccountsTable) @@ -208,6 +214,13 @@ class ProdottiPrenotabiliDao(id: EntityID) :LongEntity(id) { var modalitaPrenotazione by ProdottiPrenotabiliTable.modalitaPrenotazione } +class ResidenzeDao(id: EntityID) :LongEntity(id){ + companion object : LongEntityClass(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 suspendTransaction(block: Transaction.() -> T): T = newSuspendedTransaction(Dispatchers.IO, statement = block) \ No newline at end of file diff --git a/src/main/kotlin/eu/maiora/model/Residenze.kt b/src/main/kotlin/eu/maiora/model/Residenze.kt new file mode 100644 index 0000000..c81f47d --- /dev/null +++ b/src/main/kotlin/eu/maiora/model/Residenze.kt @@ -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 +) \ No newline at end of file diff --git a/src/main/kotlin/eu/maiora/model/ResidenzeRepository.kt b/src/main/kotlin/eu/maiora/model/ResidenzeRepository.kt new file mode 100644 index 0000000..1555fbd --- /dev/null +++ b/src/main/kotlin/eu/maiora/model/ResidenzeRepository.kt @@ -0,0 +1,5 @@ +package eu.maiora.model + +interface ResidenzeRepository { + suspend fun listaResidenze(): List +} \ No newline at end of file diff --git a/src/main/kotlin/eu/maiora/model/ResidenzeRepositoryImpl.kt b/src/main/kotlin/eu/maiora/model/ResidenzeRepositoryImpl.kt new file mode 100644 index 0000000..a02efc5 --- /dev/null +++ b/src/main/kotlin/eu/maiora/model/ResidenzeRepositoryImpl.kt @@ -0,0 +1,13 @@ +package eu.maiora.model + +import eu.maiora.db.* + +class ResidenzeRepositoryImpl : ResidenzeRepository { + override suspend fun listaResidenze(): List = suspendTransaction { + // Cerca la lista di composizioni + ResidenzeDao.all() + .toList() + .map { residenzeDaoToModel(it) } // Converte il DAO in un oggetto Residenze + + } +} \ No newline at end of file diff --git a/src/main/kotlin/eu/maiora/plugins/Routing.kt b/src/main/kotlin/eu/maiora/plugins/Routing.kt index 3c57860..1c26bee 100644 --- a/src/main/kotlin/eu/maiora/plugins/Routing.kt +++ b/src/main/kotlin/eu/maiora/plugins/Routing.kt @@ -21,5 +21,6 @@ fun Application.configureRouting() { puntiDistribuzione(PuntiDistribuzioneRepositoryImpl()) slotOrari(SlotOrariRepositoryImpl()) prodottiPrenotabili(ProdottiPrenotabiliRepositoryImpl()) + residenze(ResidenzeRepositoryImpl()) } } diff --git a/src/main/kotlin/eu/maiora/routes/Residenze.kt b/src/main/kotlin/eu/maiora/routes/Residenze.kt new file mode 100644 index 0000000..b87dbb3 --- /dev/null +++ b/src/main/kotlin/eu/maiora/routes/Residenze.kt @@ -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) + } + } + + } +} \ No newline at end of file