more stuff

This commit is contained in:
gowthaman
2023-11-06 12:09:13 +05:30
parent f54509cfa4
commit 203c2b97a7
3 changed files with 22 additions and 11 deletions

View File

@@ -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<String>) {
@@ -41,6 +34,17 @@ fun main(args: Array<String>) {
//validate, auth token
}
path("/api") {
post("/execute/{name}"){
val name = it.pathParam("name")
val params = it.bodyAsClass<Map<String,Any>>()
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<String>) {
}
post("/{entity}") {
database.save(
it.bodyAsClass<DataModel>()
it.bodyAsClass<DataModel>().apply {
this.entityName = it.pathParam("entity")
if(this.uniqueIdentifier.isEmpty()) {
//todo: set a counter
}
this.uniqueIdentifier = "${this.entityName}_${this.uniqueIdentifier}"
}
)
}
put("/{entity}/{id}") {