Skip to content

Commit 3166fc9

Browse files
wip
1 parent 66f9403 commit 3166fc9

20 files changed

+151
-7
lines changed

helm/values-dev.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ microservice-chart:
9595
OTEL_METRICS_EXPORTER: otlp
9696
OTEL_LOGS_EXPORTER: none
9797
OTEL_TRACES_SAMPLER: "always_on"
98+
RIVERSAMENTO_SOURCE: "pagopa-postgres"
99+
RIVERSAMENTO_TARGET: "nexi-oracle"
100+
CDI_PREFERENCES_TABLE: cdi_preferences_view_table
101+
ELENCO_SERVIZI_TABLE: elenco_servizi_view_table
98102
envSecret:
99103
# required
100104
APPLICATIONINSIGHTS_CONNECTION_STRING: 'azure-insight-connection-string'

src/main/java/it/gov/pagopa/node/cfgsync/client/ApiConfigCacheClient.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@Service
1010
public interface ApiConfigCacheClient {
1111

12-
@RequestLine("GET /cache")
12+
@RequestLine("GET /")
1313
@Headers({
1414
"Ocp-Apim-Subscription-Key: {subscriptionKey}"
1515
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package it.gov.pagopa.node.cfgsync.config;
2+
3+
import org.hibernate.boot.model.naming.Identifier;
4+
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
5+
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
6+
import org.springframework.stereotype.Component;
7+
8+
@Component
9+
public class ViewNamingStrategy implements PhysicalNamingStrategy {
10+
11+
@Override
12+
public Identifier toPhysicalCatalogName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
13+
return identifier;
14+
}
15+
16+
@Override
17+
public Identifier toPhysicalColumnName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
18+
return identifier;
19+
}
20+
21+
@Override
22+
public Identifier toPhysicalSchemaName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
23+
return identifier;
24+
}
25+
26+
@Override
27+
public Identifier toPhysicalSequenceName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
28+
return identifier;
29+
}
30+
31+
@Override
32+
public Identifier toPhysicalTableName(final Identifier identifier, final JdbcEnvironment jdbcEnv) {
33+
return convertToSnakeCase(identifier);
34+
}
35+
36+
private Identifier convertToSnakeCase(final Identifier identifier) {
37+
if(identifier.getText().equals("{cdi_preferences_target}")){
38+
String cdiPreferencesTable = System.getenv("CDI_PREFERENCES_TABLE");
39+
return Identifier.toIdentifier(cdiPreferencesTable);
40+
}
41+
if(identifier.getText().equals("{elenco_servizi_target}")){
42+
String elencoServiziTable = System.getenv("ELENCO_SERVIZI_TABLE");
43+
return Identifier.toIdentifier(elencoServiziTable);
44+
}
45+
return identifier;
46+
}
47+
}
48+

src/main/java/it/gov/pagopa/node/cfgsync/config/WebMvcConfiguration.java

+15
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import it.gov.pagopa.node.cfgsync.model.AppCorsConfiguration;
55
import lombok.SneakyThrows;
6+
import org.hibernate.boot.model.naming.ImplicitNamingStrategy;
7+
import org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl;
8+
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
9+
import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
10+
import org.springframework.beans.factory.annotation.Autowired;
611
import org.springframework.beans.factory.annotation.Value;
12+
import org.springframework.context.annotation.Bean;
713
import org.springframework.context.annotation.Configuration;
814
import org.springframework.web.servlet.config.annotation.CorsRegistry;
915
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@@ -15,6 +21,9 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
1521
@Value("${cors.configuration}")
1622
private String corsConfiguration;
1723

24+
@Autowired
25+
private ViewNamingStrategy viewNamingStrategy;
26+
1827

1928
@SneakyThrows
2029
@Override
@@ -25,6 +34,12 @@ public void addCorsMappings(CorsRegistry registry) {
2534
.allowedOrigins(appCorsConfiguration.getOrigins())
2635
.allowedMethods(appCorsConfiguration.getMethods());
2736
}
37+
38+
@Bean
39+
public ImplicitNamingStrategy implicit() {
40+
return new ImplicitNamingStrategyLegacyJpaImpl();
41+
}
42+
2843
}
2944

3045

src/main/java/it/gov/pagopa/node/cfgsync/repository/model/CDIPreferences.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
@NoArgsConstructor
1616
@AllArgsConstructor
1717
@Entity
18-
@Table(name = "cdi_preferences_view2")
18+
@Table(name = "{cdi_preferences_target}")
1919
@Setter
2020
@Getter
2121
public class CDIPreferences {

src/main/java/it/gov/pagopa/node/cfgsync/repository/nexioracle/NexiCdiPreferencesOracleRepository.java

+2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import it.gov.pagopa.node.cfgsync.repository.model.CDIPreferences;
44
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServizi;
5+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
56
import org.springframework.data.jpa.repository.JpaRepository;
67
import org.springframework.stereotype.Repository;
78

89
@Repository
10+
@ConditionalOnProperty(name = "riversamento.target",havingValue = "nexi-oracle")
911
public interface NexiCdiPreferencesOracleRepository extends JpaRepository<CDIPreferences, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.nexioracle;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.CDIPreferencesView;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.source",havingValue = "nexi-oracle")
810
public interface NexiCdiPreferencesViewOracleRepository extends JpaRepository<CDIPreferencesView, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.nexioracle;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServizi;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.target",havingValue = "nexi-oracle")
810
public interface NexiElencoServiziOracleRepository extends JpaRepository<ElencoServizi, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.nexioracle;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServiziView;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.source",havingValue = "nexi-oracle")
810
public interface NexiElencoServiziViewOracleRepository extends JpaRepository<ElencoServiziView, Long> { }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package it.gov.pagopa.node.cfgsync.repository.nexipostgres;
2+
3+
import it.gov.pagopa.node.cfgsync.repository.model.CDIPreferences;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
@Repository
9+
@ConditionalOnProperty(name = "riversamento.target",havingValue = "nexi-postgres")
10+
public interface NexiCdiPreferencesPostgresRepository extends JpaRepository<CDIPreferences, Long> { }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package it.gov.pagopa.node.cfgsync.repository.nexipostgres;
2+
3+
import it.gov.pagopa.node.cfgsync.repository.model.CDIPreferencesView;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
@Repository
9+
@ConditionalOnProperty(name = "riversamento.source",havingValue = "nexi-postgres")
10+
public interface NexiCdiPreferencesViewPostgresRepository extends JpaRepository<CDIPreferencesView, Long> { }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package it.gov.pagopa.node.cfgsync.repository.nexipostgres;
2+
3+
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServizi;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
@Repository
9+
@ConditionalOnProperty(name = "riversamento.target",havingValue = "nexi-postgres")
10+
public interface NexiElencoServiziPostgresRepository extends JpaRepository<ElencoServizi, Long> { }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package it.gov.pagopa.node.cfgsync.repository.nexipostgres;
2+
3+
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServiziView;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5+
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.stereotype.Repository;
7+
8+
@Repository
9+
@ConditionalOnProperty(name = "riversamento.source",havingValue = "nexi-postgres")
10+
public interface NexiElencoServiziViewPostgresRepository extends JpaRepository<ElencoServiziView, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.pagopa;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.CDIPreferences;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.target",havingValue = "pagopa-postgres")
810
public interface PagoPaCdiPreferencesPostgresRepository extends JpaRepository<CDIPreferences, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.pagopa;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.CDIPreferencesView;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.source",havingValue = "pagopa-postgres")
810
public interface PagoPaCdiPreferencesViewPostgresRepository extends JpaRepository<CDIPreferencesView, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.pagopa;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServizi;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.target",havingValue = "pagopa-postgres")
810
public interface PagoPaElencoServiziPostgresRepository extends JpaRepository<ElencoServizi, Long> { }
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package it.gov.pagopa.node.cfgsync.repository.pagopa;
22

33
import it.gov.pagopa.node.cfgsync.repository.model.ElencoServiziView;
4+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

78
@Repository
9+
@ConditionalOnProperty(name = "riversamento.source",havingValue = "pagopa-postgres")
810
public interface PagoPaElencoServiziViewPostgresRepository extends JpaRepository<ElencoServiziView, Long> { }

src/main/java/it/gov/pagopa/node/cfgsync/service/ApiConfigCacheService.java

+22-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import it.gov.pagopa.node.cfgsync.model.TargetRefreshEnum;
1212
import it.gov.pagopa.node.cfgsync.repository.model.*;
1313
import it.gov.pagopa.node.cfgsync.repository.nexioracle.*;
14-
import it.gov.pagopa.node.cfgsync.repository.nexipostgres.NexiCachePostgresRepository;
14+
import it.gov.pagopa.node.cfgsync.repository.nexipostgres.*;
1515
import it.gov.pagopa.node.cfgsync.repository.pagopa.*;
1616
import lombok.RequiredArgsConstructor;
1717
import lombok.Setter;
@@ -86,6 +86,10 @@ public class ApiConfigCacheService extends CommonCacheService {
8686
private NexiElencoServiziOracleRepository nexiElencoServiziOracleRepository;
8787
@Autowired(required = false)
8888
private NexiElencoServiziViewOracleRepository nexiElencoServiziViewOracleRepository;
89+
@Autowired(required = false)
90+
private NexiElencoServiziPostgresRepository nexiElencoServiziPostgresRepository;
91+
@Autowired(required = false)
92+
private NexiElencoServiziViewPostgresRepository nexiElencoServiziViewPostgresRepository;
8993

9094
@Autowired(required = false)
9195
private PagoPaCdiPreferencesPostgresRepository pagoPaCdiPreferencesPostgresRepository;
@@ -95,6 +99,10 @@ public class ApiConfigCacheService extends CommonCacheService {
9599
private NexiCdiPreferencesOracleRepository nexiCdiPreferencesOracleRepository;
96100
@Autowired(required = false)
97101
private NexiCdiPreferencesViewOracleRepository nexiCdiPreferencesViewOracleRepository;
102+
@Autowired(required = false)
103+
private NexiCdiPreferencesPostgresRepository nexiCdiPreferencesPostgresRepository;
104+
@Autowired(required = false)
105+
private NexiCdiPreferencesViewPostgresRepository nexiCdiPreferencesViewPostgresRepository;
98106

99107
@PostConstruct
100108
private void setStandInManagerClient() {
@@ -132,7 +140,7 @@ public Map<String, SyncStatusEnum> syncCache() {
132140
// saveNexiPostgres(syncStatusMap, configCache);
133141
// saveNexiOracle(syncStatusMap, configCache);
134142

135-
riversamentoElencoServizi();
143+
// riversamentoElencoServizi();
136144
riversamentoCdiPreferences();
137145

138146
return composeSyncStatusMapResult(TargetRefreshEnum.cache.label, syncStatusMap);
@@ -186,6 +194,9 @@ private void riversamentoElencoServizi() {
186194
case "nexi-oracle":
187195
sourceRepository = nexiElencoServiziViewOracleRepository;
188196
break;
197+
case "nexi-postgres":
198+
sourceRepository = nexiElencoServiziViewPostgresRepository;
199+
break;
189200
}
190201

191202
switch (riversamentoTarget){
@@ -195,6 +206,9 @@ private void riversamentoElencoServizi() {
195206
case "nexi-oracle":
196207
targetRepository = nexiElencoServiziOracleRepository;
197208
break;
209+
case "nexi-postgres":
210+
targetRepository = nexiElencoServiziPostgresRepository;
211+
break;
198212
}
199213
if(sourceRepository == null || targetRepository == null){
200214
log.error("riversamentoElencoServizi wrong riversamentoSource[{}] or riversamentoTarget[{}]",riversamentoSource,riversamentoTarget);
@@ -235,6 +249,9 @@ private void riversamentoCdiPreferences() {
235249
case "nexi-oracle":
236250
sourceRepository = nexiCdiPreferencesViewOracleRepository;
237251
break;
252+
case "nexi-postgres":
253+
sourceRepository = nexiCdiPreferencesViewPostgresRepository;
254+
break;
238255
}
239256

240257
switch (riversamentoTarget){
@@ -244,6 +261,9 @@ private void riversamentoCdiPreferences() {
244261
case "nexi-oracle":
245262
targetRepository = nexiCdiPreferencesOracleRepository;
246263
break;
264+
case "nexi-postgres":
265+
targetRepository = nexiCdiPreferencesPostgresRepository;
266+
break;
247267
}
248268
if(sourceRepository == null || targetRepository == null){
249269
log.error("riversamentoCdiPreferences wrong riversamentoSource[{}] or riversamentoTarget[{}]",riversamentoSource,riversamentoTarget);

src/main/resources/application-local.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ api-config-cache:
6969
rx-connection-string: ${API_CONFIG_CACHE_RX_CONNECTION_STRING}
7070
rx-name: nodo-dei-pagamenti-cache
7171
service:
72-
host: https://api.dev.platform.pagopa.it/api-config-cache/p/v1
72+
host: https://api.dev.platform.pagopa.it/api-config-cache/p/v1/stakeholders/node/cache/schemas/v1
7373
subscriptionKey: ${API_CONFIG_CACHE_SUBSCRIPTION_KEY}
7474
##permette di abilitare/disabilitare la chiamata al servizio tramite API
7575
enabled: 'true'

src/main/resources/application.yaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ spring:
7272
jpa:
7373
properties:
7474
hibernate:
75+
physical_naming_strategy: it.gov.pagopa.node.cfgsync.config.ViewNamingStrategy
7576
jdbc:
7677
batch_size: 100
7778
show-sql: 'false'
@@ -116,8 +117,8 @@ api-config-cache:
116117
nexi-postgres: 'false'
117118
nexi-oracle: 'true'
118119
riversamento:
119-
source: pagopa-postgres
120-
target: pagopa-postgres
120+
source: ${RIVERSAMENTO_SOURCE}
121+
target: ${RIVERSAMENTO_TARGET}
121122

122123
logging:
123124
level:

0 commit comments

Comments
 (0)