Skip to content

Commit 612fafb

Browse files
authored
refactor!: derive SqlAuditStore directly from SqlTargetSystem (#749)
1 parent 15dd6ff commit 612fafb

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

cli/flamingock-cli/src/main/java/io/flamingock/cli/service/AuditService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import io.flamingock.internal.core.store.AuditStore;
4343
import io.flamingock.targetsystem.dynamodb.DynamoDBTargetSystem;
4444
import io.flamingock.targetsystem.couchbase.CouchbaseTargetSystem;
45+
import io.flamingock.targetsystem.sql.SqlTargetSystem;
4546
import io.flamingock.targetystem.mongodb.sync.MongoDBSyncTargetSystem;
4647
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
4748

@@ -191,7 +192,7 @@ private AuditStore<?> createSqlAuditStore(Context context) {
191192
// Create Couchbase cluster
192193
DataSource dataSource = SqlDataSourceFactory.createSqlDataSource(sqlConfig);
193194

194-
return new SqlAuditStore(dataSource)
195+
return SqlAuditStore.from(new SqlTargetSystem("sql", dataSource))
195196
.withAuditRepositoryName(sqlConfig.getTable());
196197
}
197198
}

community/flamingock-auditstore-sql/src/main/java/io/flamingock/community/sql/driver/SqlAuditStore.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import io.flamingock.internal.util.id.RunnerId;
2525
import io.flamingock.community.sql.internal.SqlAuditPersistence;
2626
import io.flamingock.community.sql.internal.SqlLockService;
27+
import io.flamingock.targetsystem.sql.SqlTargetSystem;
2728

2829
import javax.sql.DataSource;
2930

@@ -38,10 +39,24 @@ public class SqlAuditStore implements CommunityAuditStore {
3839
private String lockRepositoryName = CommunityPersistenceConstants.DEFAULT_LOCK_STORE_NAME;
3940
private boolean autoCreate = true;
4041

41-
public SqlAuditStore(DataSource dataSource) {
42+
private SqlAuditStore(DataSource dataSource) {
4243
this.dataSource = dataSource;
4344
}
4445

46+
/**
47+
* Creates a {@link SqlAuditStore} using the same SQL datasource
48+
* configured in the given {@link SqlTargetSystem}.
49+
* <p>
50+
* Only the underlying SQL datasource is reused.
51+
* No additional target-system configuration is carried over.
52+
*
53+
* @param targetSystem the target system from which to derive the datasource
54+
* @return a new audit store bound to the same SQL datasource as the target system
55+
*/
56+
public static SqlAuditStore from(SqlTargetSystem targetSystem) {
57+
return new SqlAuditStore(targetSystem.getDataSource());
58+
}
59+
4560
public SqlAuditStore withAuditRepositoryName(String auditRepositoryName) {
4661
this.auditRepositoryName = auditRepositoryName;
4762
return this;

community/flamingock-auditstore-sql/src/test/java/io/flamingock/community/sql/SqlAuditStoreTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,8 @@ void happyPathWithMockedPipeline(SqlDialect sqlDialect, String dialectName) thro
289289
new Trio<>(changeClasses[2], Collections.singletonList(Connection.class), null)
290290
));
291291

292-
SqlAuditStore auditStore = new SqlAuditStore(context.dataSource);
293292
SqlTargetSystem targetSystem = new SqlTargetSystem("sql", context.dataSource);
293+
SqlAuditStore auditStore = SqlAuditStore.from(targetSystem);
294294

295295
FlamingockFactory.getCommunityBuilder()
296296
.setAuditStore(auditStore)
@@ -363,8 +363,8 @@ void failedWithRollback(SqlDialect sqlDialect, String dialectName) throws Except
363363
new Trio<>(changeClasses[2], Collections.singletonList(Connection.class), Collections.singletonList(Connection.class))
364364
));
365365

366-
SqlAuditStore auditStore = new SqlAuditStore(context.dataSource);
367366
SqlTargetSystem targetSystem = new SqlTargetSystem("sql", context.dataSource);
367+
SqlAuditStore auditStore = SqlAuditStore.from(targetSystem);
368368

369369
assertThrows(PipelineExecutionException.class, () -> {
370370
FlamingockFactory.getCommunityBuilder()
@@ -450,8 +450,8 @@ void failedWithoutRollback(SqlDialect sqlDialect, String dialectName) throws Exc
450450
new Trio<>(changeClasses[2], Collections.singletonList(Connection.class), null)
451451
));
452452

453-
SqlAuditStore auditStore = new SqlAuditStore(context.dataSource);
454453
SqlTargetSystem targetSystem = new SqlTargetSystem("sql", context.dataSource);
454+
SqlAuditStore auditStore = SqlAuditStore.from(targetSystem);
455455

456456
assertThrows(PipelineExecutionException.class, () -> {
457457
FlamingockFactory.getCommunityBuilder()

core/target-systems/sql-target-system/src/main/java/io/flamingock/targetsystem/sql/SqlTargetSystem.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ public SqlTargetSystem(String id, DataSource dataSource) {
3737
this.dataSource = dataSource;
3838
}
3939

40+
public DataSource getDataSource() {
41+
return dataSource;
42+
}
43+
4044
@Override
4145
public void initialize(ContextResolver baseContext) {
4246
this.validate();

0 commit comments

Comments
 (0)