2
0
forked from maiora/backend-api
backend-api-FAER/src/main/kotlin/eu/maiora/db/Mapping.kt
francescods 788d52cbbc recupero dati
i dati vengono recuperati da tabelle, viste e table functions
2025-03-18 15:49:52 +01:00

178 lines
6.0 KiB
Kotlin

package eu.maiora.db
import com.fasterxml.jackson.databind.deser.impl.CreatorCandidate.Param
import eu.maiora.db.AccountsTable.entityId
import eu.maiora.db.ViewEcommercePrezSconDispTable.double
import eu.maiora.db.ViewEcommercePrezSconDispTable.integer
import eu.maiora.db.ViewEcommercePrezSconDispTable.long
import eu.maiora.db.ViewEcommercePrezSconDispTable.varchar
import eu.maiora.model.*
import kotlinx.coroutines.Dispatchers
import org.jetbrains.exposed.dao.*
import org.jetbrains.exposed.dao.id.EntityID
import org.jetbrains.exposed.dao.id.IdTable
import org.jetbrains.exposed.sql.Table
import org.jetbrains.exposed.sql.Transaction
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
object AccountsTable : IdTable<Int>("accounts"){
override val id = integer("id").entityId()
val username = varchar("username", 255)
val password = varchar("password", 255)
override val primaryKey = PrimaryKey(id)
}
object ArticoliCrossQRicambiTable : IdTable<Int>("articoli_cross_qricambi"){
override val id = ArticoliCrossQRicambiTable.integer("id").entityId()
val codiceArticolo = varchar("codice_articolo", 50)
val codiceCross = varchar("codice_cross", 50)
val tipo = varchar("tipo", 2)
val costruttore = varchar("costruttore", 50)
}
object ViewEcommerceArticoliTable : IdTable<Long>("view_ecommerce_articoli"){
override val id = ViewEcommerceArticoliTable.long("id").entityId()
val codice = varchar("codice", 20)
val descrizione = varchar("descrizione", 255)
}
object ViewClientiAgentiTable : IdTable<Long>("view_clienti_agenti"){
override val id = ViewClientiAgentiTable.long("id_cliente").entityId()
val cliente = varchar("cliente", 255)
val idAgente = long("id_agente")
val username = varchar("username", 255)
}
object ViewEcommercePrezSconDispTable : IdTable<Long>("view_ecommerce_prez_scon_disp"){
override val id = ViewEcommercePrezSconDispTable.long("id").entityId()
val idCliente = long("id_cliente")
val idArticolo = long("id_articolo")
val idMagazzino = long("id_magazzino")
val magazzino = varchar("magazzino", 255)
val valoreCarcassa = double("valore_carcassa")
val prezzo = double("prezzo")
val sconto = double("sconto")
val sconto1 = double("sconto_1")
val sconto2 = double("sconto_2")
val sconto3 = double("sconto_3")
val netto = double("netto")
val numeroPezzi = integer("numero_pezzi")
}
object ParametriTable : IdTable<Int>("parametri"){
override val id = integer("id").entityId()
val chiave = varchar("chiave", 255)
val valore = varchar("valore", 255)
override val primaryKey = PrimaryKey(id)
}
class AccountsDAO(id: EntityID<Int>) :IntEntity(id) {
companion object : IntEntityClass<AccountsDAO>(AccountsTable)
var username by AccountsTable.username
var password by AccountsTable.password
}
class ArticoliCrossQRicambiDAO(id: EntityID<Int>) :IntEntity(id) {
companion object : IntEntityClass<ArticoliCrossQRicambiDAO>(ArticoliCrossQRicambiTable)
var codiceArticolo by ArticoliCrossQRicambiTable.codiceArticolo
var codiceCross by ArticoliCrossQRicambiTable.codiceCross
var tipo by ArticoliCrossQRicambiTable.tipo
var costruttore by ArticoliCrossQRicambiTable.costruttore
}
class ViewEcommerceArticoliDAO(id: EntityID<Long>) :LongEntity(id) {
companion object : LongEntityClass<ViewEcommerceArticoliDAO>(ViewEcommerceArticoliTable)
var codice by ViewEcommerceArticoliTable.codice
var descrizione by ViewEcommerceArticoliTable.descrizione
}
class ViewClientiAgentiDAO(id: EntityID<Long>) :LongEntity(id) {
companion object : LongEntityClass<ViewClientiAgentiDAO>(ViewClientiAgentiTable)
var cliente by ViewClientiAgentiTable.cliente
var idAgente by ViewClientiAgentiTable.idAgente
var username by ViewClientiAgentiTable.username
}
class ViewEcommercePrezSconDispDAO(id: EntityID<Long>) :LongEntity(id) {
companion object : LongEntityClass<ViewEcommercePrezSconDispDAO>(ViewEcommercePrezSconDispTable)
val idCliente by ViewEcommercePrezSconDispTable.idCliente
val idArticolo by ViewEcommercePrezSconDispTable.idArticolo
val idMagazzino by ViewEcommercePrezSconDispTable.idMagazzino
val magazzino by ViewEcommercePrezSconDispTable.magazzino
val valoreCarcassa by ViewEcommercePrezSconDispTable.valoreCarcassa
val prezzo by ViewEcommercePrezSconDispTable.prezzo
val sconto by ViewEcommercePrezSconDispTable.sconto
val sconto1 by ViewEcommercePrezSconDispTable.sconto1
val sconto2 by ViewEcommercePrezSconDispTable.sconto2
val sconto3 by ViewEcommercePrezSconDispTable.sconto3
val netto by ViewEcommercePrezSconDispTable.netto
val numeroPezzi by ViewEcommercePrezSconDispTable.numeroPezzi
}
class ParametriDAO(id: EntityID<Int>) :IntEntity(id) {
companion object : IntEntityClass<ParametriDAO>(ParametriTable)
var chiave by ParametriTable.chiave
var valore by ParametriTable.valore
}
fun accountsDaoToModel(dao: AccountsDAO) = Accounts(
dao.id.value,
dao.username,
dao.password
)
fun articoliCrossQRicambiDaoToModel(dao: ArticoliCrossQRicambiDAO) = ArticoliCrossQRicambi(
dao.id.value,
dao.codiceArticolo,
dao.codiceCross,
dao.tipo,
dao.costruttore
)
fun viewEcommerceArticoliDaoToModel(dao: ViewEcommerceArticoliDAO) = ViewEcommerceArticoli(
dao.id.value,
dao.codice,
dao.descrizione
)
fun viewClientiAgentiDaoToModel(dao: ViewClientiAgentiDAO) = ViewClientiAgenti(
dao.id.value,
dao.cliente,
dao.idAgente,
dao.username
)
fun viewEcommercePrezSconDispDaoToModel(dao: ViewEcommercePrezSconDispDAO) = ViewEcommercePrezSconDisp(
dao.id.value,
dao.idCliente,
dao.idArticolo,
dao.idMagazzino,
dao.magazzino,
dao.valoreCarcassa,
dao.prezzo,
dao.sconto,
dao.sconto1,
dao.sconto2,
dao.sconto3,
dao.netto,
dao.numeroPezzi
)
fun parametriDaoToModel(dao: ParametriDAO) = Parametri(
dao.id.value,
dao.chiave,
dao.valore
)
suspend fun <T> suspendTransaction(block: Transaction.() -> T): T =
newSuspendedTransaction(Dispatchers.IO, statement = block)