Introduce the concept of RDBMSActionStrategyInterface - to use strategy pattern for refinement of how different RDBMS sub-backends may need to behave (e.g., to support SQLite, and FULLTEXT INDEX in MySQL).

This commit is contained in:
2025-01-03 16:49:09 -06:00
parent aba5b9c5ec
commit dc6d37aad3
6 changed files with 1320 additions and 3 deletions

View File

@ -23,10 +23,13 @@ package com.kingsrook.qqq.backend.module.rdbms.actions;
import java.sql.Connection;
import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.module.rdbms.BaseTest;
import com.kingsrook.qqq.backend.module.rdbms.TestUtils;
import com.kingsrook.qqq.backend.module.rdbms.jdbc.ConnectionManager;
import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager;
import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSBackendMetaData;
import com.kingsrook.qqq.backend.module.rdbms.strategy.BaseRDBMSActionStrategy;
import org.junit.jupiter.api.AfterEach;
@ -42,9 +45,10 @@ public class RDBMSActionTest extends BaseTest
@AfterEach
void afterEachRDBMSActionTest()
{
QueryManager.resetPageSize();
QueryManager.resetStatistics();
QueryManager.setCollectStatistics(false);
BaseRDBMSActionStrategy actionStrategy = getBaseRDBMSActionStrategy();
actionStrategy.setPageSize(BaseRDBMSActionStrategy.DEFAULT_PAGE_SIZE);
actionStrategy.resetStatistics();
actionStrategy.setCollectStatistics(false);
}
@ -59,6 +63,31 @@ public class RDBMSActionTest extends BaseTest
/***************************************************************************
*
***************************************************************************/
protected static BaseRDBMSActionStrategy getBaseRDBMSActionStrategy()
{
RDBMSBackendMetaData backend = (RDBMSBackendMetaData) QContext.getQInstance().getBackend(TestUtils.DEFAULT_BACKEND_NAME);
BaseRDBMSActionStrategy actionStrategy = (BaseRDBMSActionStrategy) backend.getActionStrategy();
return actionStrategy;
}
/***************************************************************************
*
***************************************************************************/
protected static BaseRDBMSActionStrategy getBaseRDBMSActionStrategyAndActivateCollectingStatistics()
{
BaseRDBMSActionStrategy actionStrategy = getBaseRDBMSActionStrategy();
actionStrategy.setCollectStatistics(true);
actionStrategy.resetStatistics();
return actionStrategy;
}
/*******************************************************************************
**
*******************************************************************************/