61 lines
2.1 KiB
Kotlin
61 lines
2.1 KiB
Kotlin
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()
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|