0002358-endpoint-composizioni #5

Merged
f.disciascio merged 3 commits from 0002358-endpoint-composizioni into dev 2025-04-01 06:55:20 +00:00
6 changed files with 84 additions and 8 deletions
Showing only changes of commit 71443ff6f3 - Show all commits

View File

@ -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<Long>("view_movimenti_api"){
val puntiPost = integer("punti_post")
}
object ComposizioniTable : IdTable<Long>("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<Int>) :IntEntity(id) {
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
@ -104,6 +110,16 @@ class MovimentiDao(id: EntityID<Long>) :LongEntity(id) {
var puntiPost by MovimentiTable.puntiPost
}
class ComposizioniDao(id: EntityID<Long>) :LongEntity(id){
companion object : LongEntityClass<ComposizioniDao>(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
)

View File

@ -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
)

View File

@ -0,0 +1,5 @@
package eu.maiora.model
interface ComposizioniRepository {
suspend fun listaComposizioni(): List<Composizioni>
}

View File

@ -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<Composizioni> = suspendTransaction {
// Cerca la lista di composizioni
ComposizioniDao.all()
.toList()
.map { composizioniDaoToModel(it) } // Converte il DAO in un oggetto Composizioni
}
}

View File

@ -1,10 +1,8 @@
package eu.maiora.plugins
import eu.maiora.model.AccountsRepositoryImpl
import eu.maiora.model.MovimentiRepositoryImpl
import eu.maiora.model.ParametriRepositoryImpl
import eu.maiora.model.TessereRepositoryImpl
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 io.ktor.server.application.*
@ -20,5 +18,6 @@ fun Application.configureRouting() {
auth(AccountsRepositoryImpl())
tessere(TessereRepositoryImpl())
movimenti(MovimentiRepositoryImpl())
composizioni(ComposizioniRepositoryImpl())
}
}

View File

@ -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)
}
}
}
}