From a3c3d4fbfba3348ac69e8ca1e48ba8769aa936cb Mon Sep 17 00:00:00 2001 From: Tempay Date: Mon, 27 Sep 2021 22:51:10 -0400 Subject: [PATCH 1/2] balance audit table --- .../db_scripts/balance_audit_table.sql | 7 +++++++ .../scala/com/patson/data/AirlineSource.scala | 9 +++++++++ .../scala/com/patson/data/Constants.scala | 1 + .../scala/com/patson/data/CycleSource.scala | 8 +++++++- .../src/main/scala/com/patson/data/Meta.scala | 20 +++++++++++++++++++ .../com/patson/data/QuickCreateSchema.scala | 3 ++- 6 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 airline-data/db_scripts/balance_audit_table.sql diff --git a/airline-data/db_scripts/balance_audit_table.sql b/airline-data/db_scripts/balance_audit_table.sql new file mode 100644 index 000000000..f6b0aaf2e --- /dev/null +++ b/airline-data/db_scripts/balance_audit_table.sql @@ -0,0 +1,7 @@ +CREATE TABLE `balance_audit` ( + `airline` int(11) NOT NULL, + `cycle` int(11) NOT NULL, + `balance` mediumtext, + UNIQUE KEY `balance_audit_UN` (`airline`,`cycle`), + CONSTRAINT `balance_audit_FK` FOREIGN KEY (`airline`) REFERENCES `airline` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) \ No newline at end of file diff --git a/airline-data/src/main/scala/com/patson/data/AirlineSource.scala b/airline-data/src/main/scala/com/patson/data/AirlineSource.scala index 94476be4e..e374801ae 100644 --- a/airline-data/src/main/scala/com/patson/data/AirlineSource.scala +++ b/airline-data/src/main/scala/com/patson/data/AirlineSource.scala @@ -165,6 +165,15 @@ object AirlineSource { updateStatement.setInt(2, airlineId) updateStatement.executeUpdate() updateStatement.close() + + // update balance audit table + val insertToBalanceAuditStatement = connection.prepareStatement( + s"REPLACE INTO $BALANCE_AUDIT (airline, cycle, balance) VALUES (?, (SELECT cycle + 1 FROM cycle), (SELECT balance FROM $AIRLINE_INFO_TABLE WHERE airline = ?))") + insertToBalanceAuditStatement.setInt(1, airlineId) + insertToBalanceAuditStatement.setInt(2, airlineId) + insertToBalanceAuditStatement.executeQuery(); + insertToBalanceAuditStatement.close(); + AirlineCache.invalidateAirline(airlineId) } finally { connection.close() diff --git a/airline-data/src/main/scala/com/patson/data/Constants.scala b/airline-data/src/main/scala/com/patson/data/Constants.scala index 934dee291..b99da7995 100644 --- a/airline-data/src/main/scala/com/patson/data/Constants.scala +++ b/airline-data/src/main/scala/com/patson/data/Constants.scala @@ -64,6 +64,7 @@ object Constants { val AIRLINE_CASH_FLOW_ITEM_TABLE = "airline_cash_flow_item" val AIRLINE_BASE_SPECIALIZATION_TABLE = "airline_base_specialization" val AIRLINE_REPUTATION_BREAKDOWN = "airline_reputation_breakdown" + val BALANCE_AUDIT = "balance_audit" val INCOME_TABLE = "income" diff --git a/airline-data/src/main/scala/com/patson/data/CycleSource.scala b/airline-data/src/main/scala/com/patson/data/CycleSource.scala index dfcffeae3..3e4e009bd 100644 --- a/airline-data/src/main/scala/com/patson/data/CycleSource.scala +++ b/airline-data/src/main/scala/com/patson/data/CycleSource.scala @@ -37,7 +37,13 @@ object CycleSource { insertStatement.setInt(1, cycle) insertStatement.executeUpdate() insertStatement.close() - + + // also clean up old (-48) balance audit entries + val cleanupStatement = connection.prepareStatement(s"DELETE FROM $BALANCE_AUDIT WHERE cycle <= ?") + cleanupStatement.setInt(1, cycle - 48) + cleanupStatement.executeQuery() + cleanupStatement.close() + connection.commit() } finally { connection.close() diff --git a/airline-data/src/main/scala/com/patson/data/Meta.scala b/airline-data/src/main/scala/com/patson/data/Meta.scala index 136e49f04..e92080c35 100644 --- a/airline-data/src/main/scala/com/patson/data/Meta.scala +++ b/airline-data/src/main/scala/com/patson/data/Meta.scala @@ -313,6 +313,7 @@ object Meta { createIp(connection) createAdminLog(connection) createUserUuid(connection) + createBalanceAudit(connection) statement = connection.prepareStatement("CREATE TABLE " + AIRPORT_CITY_SHARE_TABLE + "(" + "airport INTEGER," + @@ -1916,6 +1917,25 @@ object Meta { statement.close() } + def createBalanceAudit(connection: Connection): Unit = { + var statement = connection.prepareStatement(s"DROP TABLE IF EXISTS $BALANCE_AUDIT") + statement.execute() + statement.close() + + val sql = s""" + |CREATE TABLE `$BALANCE_AUDIT` ( + | `airline` int(11) NOT NULL, + | `cycle` int(11) NOT NULL, + | `balance` mediumtext, + | UNIQUE KEY `balance_audit_UN` (`airline`,`cycle`), + | CONSTRAINT `balance_audit_FK` FOREIGN KEY (`$AIRLINE_TABLE`) REFERENCES `airline` (`id`) ON DELETE CASCADE ON UPDATE CASCADE + |) + |""".stripMargin + statement = connection.prepareStatement(sql) + statement.execute() + statement.close() + } + def createAdminLog(connection : Connection) { var statement = connection.prepareStatement("DROP TABLE IF EXISTS " + ADMIN_LOG_TABLE) statement.execute() diff --git a/airline-data/src/main/scala/com/patson/data/QuickCreateSchema.scala b/airline-data/src/main/scala/com/patson/data/QuickCreateSchema.scala index 8103fbb36..19bfad716 100644 --- a/airline-data/src/main/scala/com/patson/data/QuickCreateSchema.scala +++ b/airline-data/src/main/scala/com/patson/data/QuickCreateSchema.scala @@ -51,7 +51,8 @@ object QuickCreateSchema extends App { // Meta.createLog(connection) // Meta.createAlert(connection) //Meta.createDelegate(connection) - Meta.createUserUuid(connection) + //Meta.createUserUuid(connection) + Meta.createBalanceAudit(connection) } From 16c443da104eb8967dc75ba638cac649c9b8b5ff Mon Sep 17 00:00:00 2001 From: Tempay Date: Mon, 27 Sep 2021 22:59:53 -0400 Subject: [PATCH 2/2] remove space --- airline-data/src/main/scala/com/patson/data/CycleSource.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airline-data/src/main/scala/com/patson/data/CycleSource.scala b/airline-data/src/main/scala/com/patson/data/CycleSource.scala index 3e4e009bd..e8efb3610 100644 --- a/airline-data/src/main/scala/com/patson/data/CycleSource.scala +++ b/airline-data/src/main/scala/com/patson/data/CycleSource.scala @@ -38,7 +38,7 @@ object CycleSource { insertStatement.executeUpdate() insertStatement.close() - // also clean up old (-48) balance audit entries + // also clean up old (-48) balance audit entries val cleanupStatement = connection.prepareStatement(s"DELETE FROM $BALANCE_AUDIT WHERE cycle <= ?") cleanupStatement.setInt(1, cycle - 48) cleanupStatement.executeQuery()