package com.android.trisolarisserver.config import org.springframework.jdbc.core.JdbcTemplate import org.springframework.stereotype.Component @Component class PayuQrRequestSchemaFix( private val jdbcTemplate: JdbcTemplate ) : PostgresSchemaFix(jdbcTemplate) { override fun runPostgres(jdbcTemplate: JdbcTemplate) { val hasTable = jdbcTemplate.queryForObject( """ select count(*) from information_schema.tables where table_name = 'payu_qr_request' """.trimIndent(), Int::class.java ) ?: 0 if (hasTable == 0) { logger.info("Creating payu_qr_request table") jdbcTemplate.execute( """ create table payu_qr_request ( id uuid primary key, property_id uuid not null references property(id) on delete cascade, booking_id uuid not null references booking(id) on delete cascade, txnid varchar not null, amount bigint not null, currency varchar not null, status varchar not null, request_payload text, response_payload text, expiry_at timestamptz, created_at timestamptz not null ) """.trimIndent() ) } else { val hasExpiryAt = jdbcTemplate.queryForObject( """ select count(*) from information_schema.columns where table_name = 'payu_qr_request' and column_name = 'expiry_at' """.trimIndent(), Int::class.java ) ?: 0 if (hasExpiryAt == 0) { logger.info("Adding expiry_at to payu_qr_request table") jdbcTemplate.execute( """ alter table payu_qr_request add column expiry_at timestamptz """.trimIndent() ) } } } }