package com.android.trisolarisserver.config import org.springframework.jdbc.core.JdbcTemplate import org.springframework.stereotype.Component @Component class PayuSettingsSchemaFix( 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_settings' """.trimIndent(), Int::class.java ) ?: 0 if (hasTable == 0) { logger.info("Creating payu_settings table") jdbcTemplate.execute( """ create table payu_settings ( id uuid primary key, property_id uuid not null unique references property(id) on delete cascade, merchant_key varchar not null, salt_32 varchar, salt_256 varchar, base_url varchar not null, success_url varchar not null, failure_url varchar not null, use_salt_256 boolean not null default true, updated_at timestamptz not null ) """.trimIndent() ) } val hasSuccessUrl = jdbcTemplate.queryForObject( """ select count(*) from information_schema.columns where table_name = 'payu_settings' and column_name = 'success_url' """.trimIndent(), Int::class.java ) ?: 0 if (hasSuccessUrl == 0) { logger.info("Adding payu_settings.success_url column") jdbcTemplate.execute("alter table payu_settings add column success_url varchar") } val hasFailureUrl = jdbcTemplate.queryForObject( """ select count(*) from information_schema.columns where table_name = 'payu_settings' and column_name = 'failure_url' """.trimIndent(), Int::class.java ) ?: 0 if (hasFailureUrl == 0) { logger.info("Adding payu_settings.failure_url column") jdbcTemplate.execute("alter table payu_settings add column failure_url varchar") } } }