From 203c2b97a7f57f3a95590b746bd0daac9e8537d3 Mon Sep 17 00:00:00 2001 From: gowthaman Date: Mon, 6 Nov 2023 12:09:13 +0530 Subject: [PATCH] more stuff --- .idea/gradle.xml | 1 + .idea/misc.xml | 2 +- src/main/kotlin/com/readymixerp/Main.kt | 30 ++++++++++++++++--------- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f9163b4..ce1c62c 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ + - + \ No newline at end of file diff --git a/src/main/kotlin/com/readymixerp/Main.kt b/src/main/kotlin/com/readymixerp/Main.kt index e823abc..33183d8 100644 --- a/src/main/kotlin/com/readymixerp/Main.kt +++ b/src/main/kotlin/com/readymixerp/Main.kt @@ -3,20 +3,13 @@ package com.readymixerp import com.readymixerp.domain.DataModel import com.readymixerp.domain.Session import com.readymixerp.domain.Session.database +import io.ebean.CallableSql import io.ebean.DuplicateKeyException -import io.ebean.RawSql import io.ebean.RawSqlBuilder import io.javalin.Javalin -import io.javalin.apibuilder.ApiBuilder.before -import io.javalin.apibuilder.ApiBuilder.get -import io.javalin.apibuilder.ApiBuilder.post -import io.javalin.apibuilder.ApiBuilder.delete -import io.javalin.apibuilder.ApiBuilder.path -import io.javalin.apibuilder.ApiBuilder.put -import io.javalin.apibuilder.ApiBuilder.patch +import io.javalin.apibuilder.ApiBuilder.* import io.javalin.http.* import io.javalin.json.JavalinJackson -import io.javalin.plugin.bundled.CorsContainer import java.time.LocalDateTime fun main(args: Array) { @@ -41,6 +34,17 @@ fun main(args: Array) { //validate, auth token } path("/api") { + post("/execute/{name}"){ + val name = it.pathParam("name") + val params = it.bodyAsClass>() + val placeholders = (0..params.entries.size).joinToString(",") { "?" } + val sql = "{call $name($placeholders)}" + val cs: CallableSql = database.createCallableSql(sql) + params.entries.forEachIndexed { index, entry -> + cs.setParameter(index + 1, entry.value) + } + database.execute(cs) + } get("/{entity}/{id}") { it.json( database.find(DataModel::class.java, it.pathParam("id")) ?: throw NotFoundResponse() @@ -63,7 +67,13 @@ fun main(args: Array) { } post("/{entity}") { database.save( - it.bodyAsClass() + it.bodyAsClass().apply { + this.entityName = it.pathParam("entity") + if(this.uniqueIdentifier.isEmpty()) { + //todo: set a counter + } + this.uniqueIdentifier = "${this.entityName}_${this.uniqueIdentifier}" + } ) } put("/{entity}/{id}") {