From 06637c21eee6f28d90977d046d93370115c58c0f Mon Sep 17 00:00:00 2001 From: gowthaman Date: Fri, 24 May 2024 11:14:30 +0530 Subject: [PATCH] some changes for expense --- .../com/restapi/controllers/Entities.kt | 54 +++++++++++++------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/main/kotlin/com/restapi/controllers/Entities.kt b/src/main/kotlin/com/restapi/controllers/Entities.kt index 874bf7c..bc2dde9 100644 --- a/src/main/kotlin/com/restapi/controllers/Entities.kt +++ b/src/main/kotlin/com/restapi/controllers/Entities.kt @@ -8,7 +8,9 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.restapi.domain.* import com.restapi.domain.Session.database import com.restapi.domain.Session.findDataModelByEntityAndUniqId +import com.restapi.domain.Session.objectMapper import com.restapi.integ.Scripting +import io.ebean.RawSqlBuilder import io.javalin.http.BadRequestResponse import io.javalin.http.Context import io.javalin.http.HttpStatus @@ -133,24 +135,42 @@ object Entities { verifyKeys(sql.params) val entity = ctx.pathParam("entity") - ctx.json( - database.find(DataModel::class.java) - .where() - .eq("entityName", entity) - .apply { - if (sql.dateRange.isNotEmpty()) { - ge("createdAt", sql.dateRange.first()) - if (sql.dateRange.size > 1) { - lt("createdAt", sql.dateRange.last().plusDays(1)) - } - } - sql.params.forEach { (t, u) -> + val fl = database.find(DataModel::class.java) + .setRawSql( + RawSqlBuilder.parse( + """ + select sys_pk, + deleted_on, + current_approval_level, + required_approval_levels, + deleted, + version, + created_at, + modified_at, + deleted_by, + approval_status, + tags, + comments, + tenant_id, + unique_identifier, + entity_name, + data, + created_by, + modified_by + from data_model + where entity_name = :e + and created_at between :from and :to + and data @> cast(:search as jsonb) + """.trimIndent() + ).create() + ) + .setParameter("from", sql.dateRange.first()) + .setParameter("to", sql.dateRange.last().plusDays(1)) + .setParameter("e", entity) + .setParameter("search", objectMapper.writeValueAsString(sql.params.map { e -> Pair(e.key, e.value.getValue()) }.toMap())) + .findList() - eq("data->>'$t'", u.getValue()) - } - } - .findList() - ) + ctx.json(fl) }