Skip to content

Commit

Permalink
feat: P4ADEV-1773 add PersonalDataDAO and Citizen DataSource (#4)
Browse files Browse the repository at this point in the history
Co-authored-by: antonio.torre <[email protected]>
  • Loading branch information
antocalo and antonioT90 authored Dec 23, 2024
1 parent 60f0be0 commit 9e30c5f
Show file tree
Hide file tree
Showing 6 changed files with 160 additions and 4 deletions.
4 changes: 4 additions & 0 deletions helm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ microservice-chart:
DEBT_POSITIONS_DB_USER: db-piattaforma-unitaria-login-username
DEBT_POSITIONS_DB_PASSWORD: db-piattaforma-unitaria-login-password

CITIZENDB_HOST: db-host
CITIZENDB_USER: db-mypay-login-username
CITIZENDB_PASSWORD: db-mypay-login-password

# nodeSelector: {}

# tolerations: []
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package it.gov.pagopa.pu.debtpositions.citizen.model;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class PersonalData {
@Id
private Long id;
private String type;
private byte[] data;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package it.gov.pagopa.pu.debtpositions.citizen.repository;

import it.gov.pagopa.pu.debtpositions.citizen.model.PersonalData;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface PersonalDataRepository extends JpaRepository<PersonalData, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package it.gov.pagopa.pu.debtpositions.config;

import jakarta.persistence.EntityManagerFactory;
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;

import javax.sql.DataSource;
import java.util.Map;

@Configuration
@EnableJpaRepositories(
entityManagerFactoryRef = "emfCitizen",
transactionManagerRef = "tmCitizen",
basePackages = {"it.gov.pagopa.pu.debtpositions.citizen.repository"}
)
public class CitizenDataSourceConfig {

@Bean(name="dsCitizen")
@ConfigurationProperties("spring.datasource.citizen")
public DataSource citizenDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "emfCitizen")
public LocalContainerEntityManagerFactoryBean citizenEntityManagerFactory(
@Qualifier("dsCitizen") DataSource dataSource,
EntityManagerFactoryBuilder builder) {

return builder.dataSource(dataSource)
.packages("it.gov.pagopa.pu.debtpositions.citizen.model")
.properties(Map.of(
"hibernate.physical_naming_strategy", CamelCaseToUnderscoresNamingStrategy.class.getName(),
"hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName()
))
.persistenceUnit("citizen")
.build();
}

@Bean(name = "tmCitizen")
public PlatformTransactionManager citizenTransactionManager(
@Qualifier("emfCitizen") EntityManagerFactory citizenEntityManagerFactory) {

return new JpaTransactionManager(citizenEntityManagerFactory);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package it.gov.pagopa.pu.debtpositions.config;

import jakarta.persistence.EntityManagerFactory;
import org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;
import java.util.Map;

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = "emfDebtPosition",
transactionManagerRef = "tmDebtPosition",
basePackages = {"it.gov.pagopa.pu.debtpositions.repository"}
)
public class DebtPositionDataSourceConfig {

@Primary
@Bean(name="dsDebtPosition")
@ConfigurationProperties("spring.datasource.debt-position")
public DataSource debtPositionDataSource() {
return DataSourceBuilder.create().build();
}

@Primary
@Bean(name = "emfDebtPosition")
public LocalContainerEntityManagerFactoryBean debtPositionEntityManagerFactory(
@Qualifier("dsDebtPosition") DataSource dataSource,
EntityManagerFactoryBuilder builder) {

return builder.dataSource(dataSource)
.packages("it.gov.pagopa.pu.debtpositions.model")
.properties(Map.of(
"hibernate.physical_naming_strategy", CamelCaseToUnderscoresNamingStrategy.class.getName(),
"hibernate.implicit_naming_strategy", SpringImplicitNamingStrategy.class.getName()
))
.persistenceUnit("debtPosition")
.build();
}

@Primary
@Bean(name = "tmDebtPosition")
public PlatformTransactionManager debtPositionTransactionManager(
@Qualifier("emfDebtPosition") EntityManagerFactory debtPositionEntityManagerFactory) {

return new JpaTransactionManager(debtPositionEntityManagerFactory);
}
}
14 changes: 10 additions & 4 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,16 @@ spring:
version: ${version}
jmx.enabled: true
datasource:
url: \${DEBT_POSITIONS_DB_URL:jdbc:postgresql://\${DEBT_POSITIONS_DB_HOST:localhost}:\${DEBT_POSITIONS_DB_PORT:5432}/\${DEBT_POSITIONS_DB_NAME:payhub}?currentSchema=debt_positions}
username: \${DEBT_POSITIONS_DB_USER}
password: \${DEBT_POSITIONS_DB_PASSWORD}
driverClassName: org.postgresql.Driver
debt-position:
jdbc-url: \${DEBT_POSITIONS_DB_URL:jdbc:postgresql://\${DEBT_POSITIONS_DB_HOST:localhost}:\${DEBT_POSITIONS_DB_PORT:5432}/\${DEBT_POSITIONS_DB_NAME:payhub}?currentSchema=debt_positions}
username: \${DEBT_POSITIONS_DB_USER}
password: \${DEBT_POSITIONS_DB_PASSWORD}
driverClassName: org.postgresql.Driver
citizen:
jdbc-url: \${CITIZENDB_URL:jdbc:postgresql://\${CITIZENDB_HOST:localhost}:${CITIZENDB_PORT:5432}/citizen}
username: \${CITIZENDB_USER}
password: \${CITIZENDB_PASSWORD}
driverClassName: org.postgresql.Driver
data:
rest:
basePath: crud
Expand Down

0 comments on commit 9e30c5f

Please sign in to comment.