diff options
author | Vitaly Takmazov | 2024-01-31 16:50:01 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2024-02-01 19:18:13 +0300 |
commit | 5ef424120ed694b1f69daeafaa1454455d13dee2 (patch) | |
tree | 72c0e5cedcdb5420f2760856c6e762cedf31c6de /src/main/java/com/juick/service/BaseJdbcService.java | |
parent | 3cf580867600494615a7bdc9ab43ef0735d5aedb (diff) |
CI: enable SQLite
* SQLite JDBC driver does not support generated keys feature. So we implement `returningId` helper
* only one connection should be used from connection pooler
* changes made to prevent connection locking
Diffstat (limited to 'src/main/java/com/juick/service/BaseJdbcService.java')
-rw-r--r-- | src/main/java/com/juick/service/BaseJdbcService.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/main/java/com/juick/service/BaseJdbcService.java b/src/main/java/com/juick/service/BaseJdbcService.java index d16dadd2..b51cbdc7 100644 --- a/src/main/java/com/juick/service/BaseJdbcService.java +++ b/src/main/java/com/juick/service/BaseJdbcService.java @@ -52,6 +52,11 @@ public class BaseJdbcService { @Value("#{new Boolean('${spring.sql.init.platform}' == 'mysql')}") private boolean haveNoOffsetDateTime; + @Value("#{new Boolean('${spring.sql.init.platform}' == 'sqlserver')}") + private boolean haveOutput; + @Value("#{new Boolean('${spring.sql.init.platform}' == 'h2')}") + private boolean haveDeltaTables; + public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() { return namedParameterJdbcTemplate; } @@ -124,4 +129,13 @@ public class BaseJdbcService { } return Types.TIMESTAMP_WITH_TIMEZONE; } + public String returningId(String insertClause, String valuesClause, String idColumn) { + if (haveOutput) { + return insertClause + " OUTPUT inserted."+ idColumn + " " + valuesClause; + } + if (haveDeltaTables) { + return "SELECT " + idColumn + " FROM FINAL TABLE (" + insertClause + " " + valuesClause + ")"; + } + return insertClause + " " + valuesClause + " RETURNING " + idColumn; + } } |