From 3585ec9ad6b5fff7cef89482c20a6809313c6fe6 Mon Sep 17 00:00:00 2001 From: francescods Date: Wed, 26 Mar 2025 10:10:02 +0100 Subject: [PATCH] implementazione endpoint composizioni recupero senza filtri, viene restituita la lista di tutte le composizioni dei vassoi --- src/main/kotlin/eu/maiora/db/Mapping.kt | 33 ++++++++++++++++--- .../kotlin/eu/maiora/model/Composizioni.kt | 13 ++++++++ .../eu/maiora/model/ComposizioniRepository.kt | 5 +++ .../model/ComposizioniRepositoryImpl.kt | 14 ++++++++ src/main/kotlin/eu/maiora/plugins/Routing.kt | 2 ++ .../kotlin/eu/maiora/routes/Composizioni.kt | 20 +++++++++++ 6 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/eu/maiora/model/Composizioni.kt create mode 100644 src/main/kotlin/eu/maiora/model/ComposizioniRepository.kt create mode 100644 src/main/kotlin/eu/maiora/model/ComposizioniRepositoryImpl.kt create mode 100644 src/main/kotlin/eu/maiora/routes/Composizioni.kt diff --git a/src/main/kotlin/eu/maiora/db/Mapping.kt b/src/main/kotlin/eu/maiora/db/Mapping.kt index 96a7f5d..7b2998f 100644 --- a/src/main/kotlin/eu/maiora/db/Mapping.kt +++ b/src/main/kotlin/eu/maiora/db/Mapping.kt @@ -1,9 +1,6 @@ package eu.maiora.db -import eu.maiora.model.Accounts -import eu.maiora.model.Movimenti -import eu.maiora.model.Parametri -import eu.maiora.model.Tessere +import eu.maiora.model.* import kotlinx.coroutines.Dispatchers import org.jetbrains.exposed.dao.IntEntity import org.jetbrains.exposed.dao.IntEntityClass @@ -62,6 +59,15 @@ object MovimentiTable : IdTable("view_movimenti_api"){ val puntiPost = integer("punti_post") } +object ComposizioniTable : IdTable("view_composizioni"){ + override val id = long("id").entityId() + val idVassoio = long("id_vassoio") + val vassoio = varchar("vassoio", 255) + val idCategoria = long("id_categoria") + val categoria = varchar("categoria", 255) + val quantita = integer("quantita") +} + class AccountsDAO(id: EntityID) :IntEntity(id) { companion object : IntEntityClass(AccountsTable) @@ -104,6 +110,16 @@ class MovimentiDao(id: EntityID) :LongEntity(id) { var puntiPost by MovimentiTable.puntiPost } +class ComposizioniDao(id: EntityID) :LongEntity(id){ + companion object : LongEntityClass(ComposizioniTable) + + var idVassoio by ComposizioniTable.idVassoio + var vassoio by ComposizioniTable.vassoio + var idCategoria by ComposizioniTable.idCategoria + var categoria by ComposizioniTable.categoria + var quantita by ComposizioniTable.quantita +} + fun accountsDaoToModel(dao: AccountsDAO) = Accounts( dao.id.value, @@ -148,6 +164,15 @@ fun movimentiDaoToModel(dao: MovimentiDao) :Movimenti{ ) } +fun composizioniDaoToModel(dao: ComposizioniDao) =Composizioni( + dao.id.value, + dao.idVassoio, + dao.vassoio, + dao.idCategoria, + dao.categoria, + dao.quantita +) + diff --git a/src/main/kotlin/eu/maiora/model/Composizioni.kt b/src/main/kotlin/eu/maiora/model/Composizioni.kt new file mode 100644 index 0000000..63cd115 --- /dev/null +++ b/src/main/kotlin/eu/maiora/model/Composizioni.kt @@ -0,0 +1,13 @@ +package eu.maiora.model + +import kotlinx.serialization.Serializable + +@Serializable +data class Composizioni( + val id: Long, + val idVassoio : Long, + val vassoio : String, + val idCategoria : Long, + val categoria : String, + val quantita : Int +) \ No newline at end of file diff --git a/src/main/kotlin/eu/maiora/model/ComposizioniRepository.kt b/src/main/kotlin/eu/maiora/model/ComposizioniRepository.kt new file mode 100644 index 0000000..090e91f --- /dev/null +++ b/src/main/kotlin/eu/maiora/model/ComposizioniRepository.kt @@ -0,0 +1,5 @@ +package eu.maiora.model + +interface ComposizioniRepository { + suspend fun listaComposizioni(): List +} \ No newline at end of file diff --git a/src/main/kotlin/eu/maiora/model/ComposizioniRepositoryImpl.kt b/src/main/kotlin/eu/maiora/model/ComposizioniRepositoryImpl.kt new file mode 100644 index 0000000..f09d8a8 --- /dev/null +++ b/src/main/kotlin/eu/maiora/model/ComposizioniRepositoryImpl.kt @@ -0,0 +1,14 @@ +package eu.maiora.model + +import eu.maiora.db.* +import org.jetbrains.exposed.sql.SortOrder + +class ComposizioniRepositoryImpl : ComposizioniRepository { + override suspend fun listaComposizioni(): List = suspendTransaction { + // Cerca la lista di composizioni + ComposizioniDao.all() + .toList() + .map { composizioniDaoToModel(it) } // Converte il DAO in un oggetto Composizioni + + } +} \ 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 24e649c..ce934be 100644 --- a/src/main/kotlin/eu/maiora/plugins/Routing.kt +++ b/src/main/kotlin/eu/maiora/plugins/Routing.kt @@ -2,6 +2,7 @@ package eu.maiora.plugins import eu.maiora.model.* import eu.maiora.routes.auth +import eu.maiora.routes.composizioni import eu.maiora.routes.movimenti import eu.maiora.routes.tessere import eu.maiora.routes.valorePasti @@ -18,6 +19,7 @@ fun Application.configureRouting() { auth(AccountsRepositoryImpl()) tessere(TessereRepositoryImpl()) movimenti(MovimentiRepositoryImpl()) + composizioni(ComposizioniRepositoryImpl()) valorePasti(ValorePastiRepositoryImpl()) } } diff --git a/src/main/kotlin/eu/maiora/routes/Composizioni.kt b/src/main/kotlin/eu/maiora/routes/Composizioni.kt new file mode 100644 index 0000000..47fc29e --- /dev/null +++ b/src/main/kotlin/eu/maiora/routes/Composizioni.kt @@ -0,0 +1,20 @@ +package eu.maiora.routes + +import eu.maiora.model.ComposizioniRepositoryImpl +import io.ktor.server.application.* +import io.ktor.server.auth.* +import io.ktor.server.response.* +import io.ktor.server.routing.* + + +fun Route.composizioni(composizioniRepository: ComposizioniRepositoryImpl){ + route("/api/composizioni"){ + authenticate("auth-jwt") { + get(){ + val listaComposizioni = composizioniRepository.listaComposizioni() + call.respond(listaComposizioni) + } + } + + } +} \ No newline at end of file