package com.android.trisolarisserver.config import org.springframework.jdbc.core.JdbcTemplate import org.springframework.stereotype.Component @Component class PaymentSchemaFix( private val jdbcTemplate: JdbcTemplate ) : PostgresSchemaFix(jdbcTemplate) { override fun runPostgres(jdbcTemplate: JdbcTemplate) { ensureColumn("payment", "gateway_payment_id", "varchar") ensureColumn("payment", "gateway_txn_id", "varchar") ensureColumn("payment", "bank_ref_num", "varchar") ensureColumn("payment", "mode", "varchar") ensureColumn("payment", "pg_type", "varchar") ensureColumn("payment", "payer_vpa", "varchar") ensureColumn("payment", "payer_name", "varchar") ensureColumn("payment", "payment_source", "varchar") } private fun ensureColumn(table: String, column: String, type: String) { val exists = jdbcTemplate.queryForObject( """ select count(*) from information_schema.columns where table_name = '$table' and column_name = '$column' """.trimIndent(), Int::class.java ) ?: 0 if (exists == 0) { logger.info("Adding $table.$column column") jdbcTemplate.execute("alter table $table add column $column $type") } } }