refactor/tweaked the CounterpartyLimitAmountFieldType to BigDecimal

This commit is contained in:
hongwei 2024-12-06 12:42:55 +01:00
parent e7b7273259
commit c8cc4093a2
2 changed files with 81 additions and 0 deletions

View File

@ -102,6 +102,7 @@ object Migration extends MdcLoggable {
dropMappedBadLoginAttemptIndex()
alterMetricColumnUrlLength()
populateViewDefinitionCanAddTransactionRequestToBeneficiary()
alterCounterpartyLimitFieldType()
}
private def dummyScript(): Boolean = {
@ -478,6 +479,13 @@ object Migration extends MdcLoggable {
MigrationOfMappedBadLoginAttemptDropIndex.dropUniqueIndex(name)
}
}
private def alterCounterpartyLimitFieldType(): Boolean = {
val name = nameOf(alterCounterpartyLimitFieldType)
runOnce(name) {
MigrationOfCounterpartyLimitFieldType.alterCounterpartyLimitFieldType(name)
}
}
}
/**

View File

@ -0,0 +1,73 @@
package code.api.util.migration
import code.api.util.APIUtil
import code.api.util.migration.Migration.{DbFunction, saveLog}
import code.counterpartylimit.CounterpartyLimit
import net.liftweb.common.Full
import net.liftweb.mapper.Schemifier
import java.time.format.DateTimeFormatter
import java.time.{ZoneId, ZonedDateTime}
object MigrationOfCounterpartyLimitFieldType {
val oneDayAgo = ZonedDateTime.now(ZoneId.of("UTC")).minusDays(1)
val oneYearInFuture = ZonedDateTime.now(ZoneId.of("UTC")).plusYears(1)
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm'Z'")
def alterCounterpartyLimitFieldType(name: String): Boolean = {
DbFunction.tableExists(CounterpartyLimit)
match {
case true =>
val startDate = System.currentTimeMillis()
val commitId: String = APIUtil.gitCommit
var isSuccessful = false
val executedSql =
DbFunction.maybeWrite(true, Schemifier.infoF _) {
APIUtil.getPropsValue("db.driver") match {
case Full(dbDriver) if dbDriver.contains("com.microsoft.sqlserver.jdbc.SQLServerDriver") =>
() =>
"""
|ALTER TABLE counterpartylimit
|ALTER COLUMN maxsingleamount numeric(16, 10);
|
|ALTER TABLE counterpartylimit
|ALTER COLUMN maxmonthlyamount numeric(16, 10);
|
|ALTER TABLE counterpartylimit
|ALTER COLUMN maxyearlyamount numeric(16, 10);
|""".stripMargin
case _ =>
() =>
"""
|alter table counterpartylimit
| alter column maxsingleamount type numeric(16, 10) using maxsingleamount::numeric(16, 10);
|alter table counterpartylimit
| alter column maxmonthlyamount type numeric(16, 10) using maxmonthlyamount::numeric(16, 10);
|alter table counterpartylimit
| alter column maxyearlyamount type numeric(16, 10) using maxyearlyamount::numeric(16, 10);
|""".stripMargin
}
}
val endDate = System.currentTimeMillis()
val comment: String =
s"""Executed SQL:
|$executedSql
|""".stripMargin
isSuccessful = true
saveLog(name, commitId, isSuccessful, startDate, endDate, comment)
isSuccessful
case false =>
val startDate = System.currentTimeMillis()
val commitId: String = APIUtil.gitCommit
val isSuccessful = false
val endDate = System.currentTimeMillis()
val comment: String = s"""${CounterpartyLimit._dbTableNameLC} table does not exist""".stripMargin
saveLog(name, commitId, isSuccessful, startDate, endDate, comment)
isSuccessful
}
}
}