From 9962590189d5d8de9060e712303fff73982f849a Mon Sep 17 00:00:00 2001 From: Antonio Perez Dieppa Date: Sun, 22 Mar 2026 08:57:09 +0800 Subject: [PATCH] refactor: make sql-util independent from flamingock core --- .../store/sql/internal/SqlLockService.java | 2 +- .../io/flamingock/sql/kit/SqlLockStorage.java | 4 ++-- utils/sql-util/build.gradle.kts | 1 - .../dialectHelpers/SqlLockDialectHelper.java | 23 +++++++++---------- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/community/flamingock-auditstore-sql/src/main/java/io/flamingock/store/sql/internal/SqlLockService.java b/community/flamingock-auditstore-sql/src/main/java/io/flamingock/store/sql/internal/SqlLockService.java index 5ec2196e1..ce50c266d 100644 --- a/community/flamingock-auditstore-sql/src/main/java/io/flamingock/store/sql/internal/SqlLockService.java +++ b/community/flamingock-auditstore-sql/src/main/java/io/flamingock/store/sql/internal/SqlLockService.java @@ -286,6 +286,6 @@ private CommunityLockEntry getLockEntry(Connection conn, String key) throws SQLE private void upsertLockEntry(Connection conn, String key, String owner, LocalDateTime expiresAt) throws SQLException { - dialectHelper.upsertLockEntry(conn, lockRepositoryName, key, owner, expiresAt); + dialectHelper.upsertLockEntry(conn, lockRepositoryName, key, owner, LockStatus.LOCK_HELD.name(), expiresAt); } } diff --git a/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlLockStorage.java b/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlLockStorage.java index e2ff5fa80..5c980cec4 100644 --- a/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlLockStorage.java +++ b/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlLockStorage.java @@ -105,7 +105,7 @@ public void storeLock(LockKey key, LockAcquisition acquisition) { delete.setString(1, keyStr); delete.executeUpdate(); } - dialectHelper.upsertLockEntry(connection, lockTableName, keyStr, owner.toString(), expiresAt); + dialectHelper.upsertLockEntry(connection, lockTableName, keyStr, owner.toString(), LockStatus.LOCK_HELD.name(), expiresAt); connection.commit(); return; } else { @@ -119,7 +119,7 @@ public void storeLock(LockKey key, LockAcquisition acquisition) { if (existing == null || owner.toString().equals(existing.getOwner()) || LocalDateTime.now().isAfter(existing.getExpiresAt())) { - dialectHelper.upsertLockEntry(connection, lockTableName, keyStr, owner.toString(), expiresAt); + dialectHelper.upsertLockEntry(connection, lockTableName, keyStr, owner.toString(), LockStatus.LOCK_HELD.name(), expiresAt); // Commit for all dialects except Informix (which uses auto-commit above) if (dialectHelper.getSqlDialect() != SqlDialect.INFORMIX) { connection.commit(); diff --git a/utils/sql-util/build.gradle.kts b/utils/sql-util/build.gradle.kts index d468198c5..d86ec391c 100644 --- a/utils/sql-util/build.gradle.kts +++ b/utils/sql-util/build.gradle.kts @@ -7,7 +7,6 @@ java { } dependencies { - implementation(project(":core:flamingock-core")) implementation("com.zaxxer:HikariCP:3.4.5") implementation("org.testcontainers:testcontainers-junit-jupiter:2.0.2") // SQL Testcontainers diff --git a/utils/sql-util/src/main/java/io/flamingock/internal/common/sql/dialectHelpers/SqlLockDialectHelper.java b/utils/sql-util/src/main/java/io/flamingock/internal/common/sql/dialectHelpers/SqlLockDialectHelper.java index a4672f885..1cca74fdb 100644 --- a/utils/sql-util/src/main/java/io/flamingock/internal/common/sql/dialectHelpers/SqlLockDialectHelper.java +++ b/utils/sql-util/src/main/java/io/flamingock/internal/common/sql/dialectHelpers/SqlLockDialectHelper.java @@ -17,7 +17,6 @@ import io.flamingock.internal.common.sql.SqlDialectFactory; import io.flamingock.internal.common.sql.SqlDialect; -import io.flamingock.internal.core.external.store.lock.LockStatus; import java.sql.*; import java.time.LocalDateTime; @@ -254,14 +253,14 @@ public String getDeleteLockSqlString(String tableName) { } } - public void upsertLockEntry(Connection conn, String tableName, String key, String owner, LocalDateTime expiresAt) throws SQLException { + public void upsertLockEntry(Connection conn, String tableName, String key, String owner, String lockStatus, LocalDateTime expiresAt) throws SQLException { String sql = getInsertOrUpdateLockSqlString(tableName); if (sqlDialect == SqlDialect.DB2) { // UPDATE first try (PreparedStatement update = conn.prepareStatement( "UPDATE " + tableName + " SET status = ?, owner = ?, expires_at = ? WHERE lock_key = ?")) { - update.setString(1, LockStatus.LOCK_HELD.name()); + update.setString(1, lockStatus); update.setString(2, owner); update.setTimestamp(3, Timestamp.valueOf(expiresAt)); update.setString(4, key); @@ -275,7 +274,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin try (PreparedStatement insert = conn.prepareStatement( "INSERT INTO " + tableName + " (lock_key, status, owner, expires_at) VALUES (?, ?, ?, ?)")) { insert.setString(1, key); - insert.setString(2, LockStatus.LOCK_HELD.name()); + insert.setString(2, lockStatus); insert.setString(3, owner); insert.setTimestamp(4, Timestamp.valueOf(expiresAt)); insert.executeUpdate(); @@ -287,7 +286,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin // Try UPDATE first try (PreparedStatement update = conn.prepareStatement( "UPDATE " + tableName + " SET status = ?, owner = ?, expires_at = ? WHERE lock_key = ?")) { - update.setString(1, LockStatus.LOCK_HELD.name()); + update.setString(1, lockStatus); update.setString(2, owner); update.setTimestamp(3, Timestamp.valueOf(expiresAt)); update.setString(4, key); @@ -301,7 +300,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin try (PreparedStatement insert = conn.prepareStatement( "INSERT INTO " + tableName + " (lock_key, status, owner, expires_at) VALUES (?, ?, ?, ?)")) { insert.setString(1, key); - insert.setString(2, LockStatus.LOCK_HELD.name()); + insert.setString(2, lockStatus); insert.setString(3, owner); insert.setTimestamp(4, Timestamp.valueOf(expiresAt)); insert.executeUpdate(); @@ -313,12 +312,12 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin // For SQL Server/Sybase, use Statement and format SQL try (Statement stmt = conn.createStatement()) { String formattedSql = sql - .replaceFirst("\\?", "'" + LockStatus.LOCK_HELD.name() + "'") + .replaceFirst("\\?", "'" + lockStatus + "'") .replaceFirst("\\?", "'" + owner + "'") .replaceFirst("\\?", "'" + Timestamp.valueOf(expiresAt) + "'") .replaceFirst("\\?", "'" + key + "'") .replaceFirst("\\?", "'" + key + "'") - .replaceFirst("\\?", "'" + LockStatus.LOCK_HELD.name() + "'") + .replaceFirst("\\?", "'" + lockStatus + "'") .replaceFirst("\\?", "'" + owner + "'") .replaceFirst("\\?", "'" + Timestamp.valueOf(expiresAt) + "'"); stmt.execute(formattedSql); @@ -328,7 +327,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin if (sqlDialect == SqlDialect.FIREBIRD) { try (PreparedStatement ps = conn.prepareStatement(sql)) { - ps.setString(1, LockStatus.LOCK_HELD.name()); + ps.setString(1, lockStatus); ps.setString(2, owner); ps.setTimestamp(3, Timestamp.valueOf(expiresAt)); ps.setString(4, key); @@ -337,7 +336,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin String insertSql = "INSERT INTO " + tableName + " (lock_key, status, owner, expires_at) VALUES (?, ?, ?, ?)"; try (PreparedStatement ins = conn.prepareStatement(insertSql)) { ins.setString(1, key); - ins.setString(2, LockStatus.LOCK_HELD.name()); + ins.setString(2, lockStatus); ins.setString(3, owner); ins.setTimestamp(4, Timestamp.valueOf(expiresAt)); ins.executeUpdate(); @@ -352,7 +351,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin try (PreparedStatement insert = conn.prepareStatement( "INSERT INTO " + tableName + " (lock_key, status, owner, expires_at) VALUES (?, ?, ?, ?)")) { insert.setString(1, key); - insert.setString(2, LockStatus.LOCK_HELD.name()); + insert.setString(2, lockStatus); insert.setString(3, owner); insert.setTimestamp(4, Timestamp.valueOf(expiresAt)); insert.executeUpdate(); @@ -364,7 +363,7 @@ public void upsertLockEntry(Connection conn, String tableName, String key, Strin // Default case for other dialects try (PreparedStatement ps = conn.prepareStatement(sql)) { ps.setString(1, key); - ps.setString(2, LockStatus.LOCK_HELD.name()); + ps.setString(2, lockStatus); ps.setString(3, owner); ps.setTimestamp(4, Timestamp.valueOf(expiresAt)); ps.executeUpdate();