@@ -300,6 +300,72 @@ class ApplicationTest {
300300 }
301301 }
302302
303+ @Test
304+ fun testExecuteInsertParametersPostgresql () {
305+ ResourceManager .INSTANCE .setResource(" h2:./test;MODE=PostgreSQL" , dummyResourceArn, null , null , emptyMap())
306+
307+ mockkStatic(" com.koxudaxi.localDataApi.LocalDataApiKt" )
308+ every { isPostgreSQL(any()) } returns true
309+
310+ withTestApplication({ module(testing = true ) }) {
311+ handleRequest(HttpMethod .Post , " /Execute" ) {
312+ addHeader(HttpHeaders .ContentType , " */*" )
313+ setBody(Json .encodeToString(ExecuteStatementRequest (dummyResourceArn, dummySecretArn,
314+ " CREATE TABLE TEST(id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(10), age INT)"
315+ )))
316+ }.apply {
317+ assertEquals(
318+ " {\" numberOfRecordsUpdated\" :0,\" generatedFields\" :[],\" records\" :null,\" columnMetadata\" :null}" ,
319+ response.content)
320+ assertEquals(HttpStatusCode .OK , response.status())
321+ }
322+ handleRequest(HttpMethod .Post , " /Execute" ) {
323+ addHeader(HttpHeaders .ContentType , " */*" )
324+ setBody(Json .encodeToString(ExecuteStatementRequest (dummyResourceArn, dummySecretArn,
325+ " select * from TEST" )))
326+ }.apply {
327+ assertEquals(
328+ " {\" numberOfRecordsUpdated\" :0,\" generatedFields\" :null,\" records\" :[],\" columnMetadata\" :null}" ,
329+ response.content)
330+ assertEquals(HttpStatusCode .OK , response.status())
331+ }
332+ handleRequest(HttpMethod .Post , " /Execute" ) {
333+ addHeader(HttpHeaders .ContentType , " */*" )
334+ setBody(Json .encodeToString(ExecuteStatementRequest (dummyResourceArn, dummySecretArn,
335+ " INSERT INTO TEST (name, age) VALUES ('cat', 1)" )))
336+ }.apply {
337+ assertEquals(
338+ " {\" numberOfRecordsUpdated\" :1,\" generatedFields\" :[],\" records\" :null,\" columnMetadata\" :null}" ,
339+ response.content)
340+ assertEquals(HttpStatusCode .OK , response.status())
341+ }
342+
343+ handleRequest(HttpMethod .Post , " /Execute" ) {
344+ addHeader(HttpHeaders .ContentType , " */*" )
345+ setBody(Json .encodeToString(ExecuteStatementRequest (dummyResourceArn, dummySecretArn,
346+ " INSERT INTO test (name, age) VALUES (:name, :age)" , parameters = listOf (
347+ SqlParameter (" name" , Field (stringValue = " dog" )),
348+ SqlParameter (" age" , Field (longValue = 3 )),
349+ ))))
350+ }.apply {
351+ assertEquals(
352+ " {\" numberOfRecordsUpdated\" :1,\" generatedFields\" :[],\" records\" :null,\" columnMetadata\" :null}" ,
353+ response.content)
354+ assertEquals(HttpStatusCode .OK , response.status())
355+ }
356+ handleRequest(HttpMethod .Post , " /Execute" ) {
357+ addHeader(HttpHeaders .ContentType , " */*" )
358+ setBody(Json .encodeToString(ExecuteStatementRequest (dummyResourceArn, dummySecretArn,
359+ " select * from TEST" , includeResultMetadata = true )))
360+ }.apply {
361+ assertEquals(
362+ "{\"numberOfRecordsUpdated\":0,\"generatedFields\":null,\"records\":[[{\"blobValue\":null,\"booleanValue\":null,\"doubleValue\":null,\"isNull\":null,\"longValue\":1,\"stringValue\":null},{\"blobValue\":null,\"booleanValue\":null,\"doubleValue\":null,\"isNull\":null,\"longValue\":null,\"stringValue\":\"cat\"},{\"blobValue\":null,\"booleanValue\":null,\"doubleValue\":null,\"isNull\":null,\"longValue\":1,\"stringValue\":null}],[{\"blobValue\":null,\"booleanValue\":null,\"doubleValue\":null,\"isNull\":null,\"longValue\":2,\"stringValue\":null},{\"blobValue\":null,\"booleanValue\":null,\"doubleValue\":null,\"isNull\":null,\"longValue\":null,\"stringValue\":\"dog\"},{\"blobValue\":null,\"booleanValue\":null,\"doubleValue\":null,\"isNull\":null,\"longValue\":3,\"stringValue\":null}]],\"columnMetadata\":[{\"arrayBaseColumnType\":0,\"isAutoIncrement\":true,\"isCaseSensitive\":true,\"isCurrency\":false,\"isSigned\":true,\"label\":\"ID\",\"name\":\"ID\",\"nullable\":0,\"precision\":10,\"scale\":0,\"schemaName\":\"PUBLIC\",\"tableName\":\"TEST\",\"type\":4,\"typeName\":\"INTEGER\"},{\"arrayBaseColumnType\":0,\"isAutoIncrement\":false,\"isCaseSensitive\":true,\"isCurrency\":false,\"isSigned\":true,\"label\":\"NAME\",\"name\":\"NAME\",\"nullable\":1,\"precision\":10,\"scale\":0,\"schemaName\":\"PUBLIC\",\"tableName\":\"TEST\",\"type\":12,\"typeName\":\"VARCHAR\"},{\"arrayBaseColumnType\":0,\"isAutoIncrement\":false,\"isCaseSensitive\":true,\"isCurrency\":false,\"isSigned\":true,\"label\":\"AGE\",\"name\":\"AGE\",\"nullable\":1,\"precision\":10,\"scale\":0,\"schemaName\":\"PUBLIC\",\"tableName\":\"TEST\",\"type\":4,\"typeName\":\"INTEGER\"}]}",
363+ response.content)
364+ assertEquals(HttpStatusCode .OK , response.status())
365+ }
366+ }
367+ }
368+
303369 @Test
304370 fun testExecuteInsertParametersWithTransaction () {
305371 withTestApplication({ module(testing = true ) }) {
0 commit comments