Skip to content

Commit

Permalink
FO-2607 Startet på å legge til database tester og refaktorerte db utils
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexGaard committed Nov 29, 2019
1 parent 7021b23 commit 29d3036
Show file tree
Hide file tree
Showing 21 changed files with 345 additions and 129 deletions.
16 changes: 8 additions & 8 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ workflows:
jobs:
- pus/test-backend:
context: pus
# - pus/bygg-og-deploy-backend:
# requires:
# - pus/test-backend
# context: pus
# filepath: nais-q0.yaml
# filters:
# branches:
# only: FO-2607
- pus/bygg-og-deploy-backend:
requires:
- pus/test-backend
context: pus
filepath: nais-q0.yaml
filters:
branches:
only: FO-2607
# - pus/bygg-og-deploy-backend:
# requires:
# - pus/test-backend
Expand Down
2 changes: 2 additions & 0 deletions nais-q0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,5 +48,7 @@ spec:
- APPDYNAMICS_AGENT_ACCOUNT_NAME
- APPDYNAMICS_CONTROLLER_PORT
- APPDYNAMICS_CONTROLLER_SSL_ENABLED
- name: VEILARBFILTER_DB_URL
value: jdbc:postgresql://b27dbvl008.preprod.local:5432/postgres
- name: "APP_ENVIRONMENT_NAME"
value: q0
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import no.nav.apiapp.ServletUtil;
import no.nav.apiapp.config.ApiAppConfigurator;
import no.nav.dialogarena.aktor.AktorConfig;
import no.nav.fo.veilarbvedtaksstotte.utils.DbRole;
import no.nav.fo.veilarbvedtaksstotte.utils.DbUtils;
import no.nav.sbl.featuretoggle.unleash.UnleashService;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -13,7 +14,10 @@
import org.springframework.transaction.annotation.Transactional;

import javax.servlet.ServletContext;
import javax.sql.DataSource;

import static no.nav.fo.veilarbvedtaksstotte.config.DatabaseConfig.VEILARBVEDTAKSSTOTTE_DB_URL_PROPERTY;
import static no.nav.fo.veilarbvedtaksstotte.utils.DbUtils.toDbRoleStr;
import static no.nav.sbl.util.EnvironmentUtils.getRequiredProperty;


@Configuration
Expand All @@ -38,6 +42,9 @@ public class ApplicationConfig implements ApiApplication {
public static final String KAFKA_BROKERS_URL_PROPERTY = "KAFKA_BROKERS_URL";
public static final String SECURITYTOKENSERVICE_URL = "SECURITYTOKENSERVICE_URL";

@Autowired
UnleashService unleashService;

@Override
public void configure(ApiAppConfigurator apiAppConfigurator) {
apiAppConfigurator
Expand All @@ -46,13 +53,11 @@ public void configure(ApiAppConfigurator apiAppConfigurator) {

}

@Autowired
UnleashService unleashService;

@Transactional
@Override
public void startup(ServletContext servletContext) {
DbUtils.migrateAndClose(DbUtils.createAdminDataSource());
String dbUrl = getRequiredProperty(VEILARBVEDTAKSSTOTTE_DB_URL_PROPERTY);
DbUtils.migrateAndClose(DbUtils.createAdminDataSource(dbUrl), DbRole.ADMIN);
ServletUtil.filterBuilder(new ToggleFilter(unleashService)).register(servletContext);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.nav.fo.veilarbvedtaksstotte.config;

import no.nav.fo.veilarbvedtaksstotte.utils.DbRole;
import no.nav.apiapp.selftest.HelsesjekkMetadata;
import no.nav.sbl.dialogarena.types.Pingable;
import no.nav.sbl.jdbc.Database;
import no.nav.sbl.jdbc.Transactor;
import org.springframework.context.annotation.Bean;
Expand All @@ -11,7 +12,7 @@

import javax.sql.DataSource;

import static no.nav.fo.veilarbvedtaksstotte.utils.DbUtils.createDataSource;
import static no.nav.fo.veilarbvedtaksstotte.utils.DbUtils.createUserDataSource;
import static no.nav.sbl.util.EnvironmentUtils.getRequiredProperty;

@Configuration
Expand All @@ -21,7 +22,7 @@ public class DatabaseConfig {
@Bean
public DataSource dataSource() {
String dbUrl = getRequiredProperty(VEILARBVEDTAKSSTOTTE_DB_URL_PROPERTY);
return createDataSource(DbRole.USER, dbUrl);
return createUserDataSource(dbUrl);
}

@Bean(name = "transactionManager")
Expand All @@ -44,24 +45,20 @@ public Transactor transactor(PlatformTransactionManager platformTransactionManag
return new Transactor(platformTransactionManager);
}

@Bean
public Pingable dbPinger(JdbcTemplate db) {
HelsesjekkMetadata metadata = new HelsesjekkMetadata("db",
"Database: " + getRequiredProperty(VEILARBVEDTAKSSTOTTE_DB_URL_PROPERTY),
"Database for veilarbvedtaksstotte",
true);

// TODO: Legg til helsesjekk for postgres

// @Bean
// public Pingable dbPinger(final DSLContext dslContext) {
// HelsesjekkMetadata metadata = new HelsesjekkMetadata("db",
// "Database: " + getRequiredProperty(VEILARBLEST_DB_URL_PROPERTY),
// "Database for veilarblest",
// true);
//
// return () -> {
// try {
// dslContext.selectOne().fetch();
// return Pingable.Ping.lyktes(metadata);
// } catch (Exception e) {
// return Pingable.Ping.feilet(metadata, e);
// }
// };
// }

return () -> {
try {
db.execute("SELECT 1");
return Pingable.Ping.lyktes(metadata);
} catch (Exception e) {
return Pingable.Ping.feilet(metadata, e);
}
};
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import lombok.extern.slf4j.Slf4j;
import no.nav.fo.veilarbvedtaksstotte.repository.KafkaRepository;
import no.nav.fo.veilarbvedtaksstotte.repository.OpplysningerRepository;
import no.nav.fo.veilarbvedtaksstotte.repository.KilderRepository;
import no.nav.fo.veilarbvedtaksstotte.repository.OyblikksbildeRepository;
import no.nav.fo.veilarbvedtaksstotte.repository.VedtaksstotteRepository;
import org.springframework.context.annotation.Configuration;
Expand All @@ -14,6 +14,6 @@
VedtaksstotteRepository.class,
KafkaRepository.class,
OyblikksbildeRepository.class,
OpplysningerRepository.class
KilderRepository.class
})
public class RepositoryConfig {}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

@Data
@Accessors(chain = true)
public class Opplysning {
public class Kilde {
long vedtakId;
String tekst;
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@
import java.sql.ResultSet;
import java.util.List;

import static no.nav.fo.veilarbvedtaksstotte.utils.DbUtils.nesteFraSekvens;
import static no.nav.fo.veilarbvedtaksstotte.utils.EnumUtils.getName;
import static no.nav.fo.veilarbvedtaksstotte.utils.EnumUtils.valueOf;

@Repository
public class KafkaRepository {

private final static String VEDTAK_SENDT_KAFKA_FEIL_TABLE = "VEDTAK_SENDT_KAFKA_FEIL";
private final static String VEDTAK_SENDT_SEQ = "VEDTAK_SENDT_SEQ";
private final static String VEDTAK_SENDT_ID = "VEDTAK_SENDT_ID";
public final static String VEDTAK_SENDT_KAFKA_FEIL_TABLE = "VEDTAK_SENDT_KAFKA_FEIL";
private final static String VEDTAK_ID = "VEDTAK_ID";
private final static String VEDTAK_SENDT = "VEDTAK_SENDT";
private final static String INNSATSGRUPPE = "INNSATSGRUPPE";
Expand All @@ -37,7 +34,6 @@ public KafkaRepository(JdbcTemplate db) {

public void lagreVedtakSendtKafkaFeil(KafkaVedtakSendt vedtakSendt) {
SqlUtils.insert(db, VEDTAK_SENDT_KAFKA_FEIL_TABLE)
.value(VEDTAK_SENDT_ID, nesteFraSekvens(db, VEDTAK_SENDT_SEQ))
.value(VEDTAK_ID, vedtakSendt.getId())
.value(INNSATSGRUPPE, getName(vedtakSendt.getInnsatsgruppe()))
.value(AKTOR_ID, vedtakSendt.getAktorId())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package no.nav.fo.veilarbvedtaksstotte.repository;

import lombok.SneakyThrows;
import no.nav.fo.veilarbvedtaksstotte.domain.Opplysning;
import no.nav.fo.veilarbvedtaksstotte.domain.Kilde;
import no.nav.fo.veilarbvedtaksstotte.domain.Vedtak;
import no.nav.sbl.sql.SqlUtils;
import no.nav.sbl.sql.where.WhereClause;
Expand All @@ -15,59 +15,58 @@
import java.util.stream.Collectors;

@Repository
public class OpplysningerRepository {
public class KilderRepository {

private final static String OPPLYSNING_TABLE = "OPPLYSNING";
public final static String KILDE_TABLE = "KILDE";
private final static String VEDTAK_ID = "VEDTAK_ID";
private final static String TEKST = "TEKST";

private final JdbcTemplate db;

@Inject
public OpplysningerRepository(JdbcTemplate db) {
public KilderRepository(JdbcTemplate db) {
this.db = db;
}

public void lagOpplysninger(List<String> opplysninger, long vedtakId) {
opplysninger.forEach((opplysning) -> insertOpplysning(opplysning, vedtakId));
public void lagKilder(List<String> kilder, long vedtakId) {
kilder.forEach((opplysning) -> insertKilde(opplysning, vedtakId));
}

public List<Opplysning> hentOpplysningerForVedtak(long vedtakId) {
return SqlUtils.select(db, OPPLYSNING_TABLE, OpplysningerRepository::mapOpplysninger)
public List<Kilde> hentKilderForVedtak(long vedtakId) {
return SqlUtils.select(db, KILDE_TABLE, KilderRepository::mapKilder)
.where(WhereClause.equals(VEDTAK_ID, vedtakId))
.column("*")
.executeToList();
}

public List<Opplysning> hentOpplysningerForAlleVedtak(List<Vedtak> vedtakListe) {

public List<Kilde> hentKilderForAlleVedtak(List<Vedtak> vedtakListe) {
if (vedtakListe.isEmpty()) {
return new ArrayList<>();
}

List<Long> vedtakIder = vedtakListe.stream().map(Vedtak::getId).collect(Collectors.toList());
return SqlUtils.select(db, OPPLYSNING_TABLE, OpplysningerRepository::mapOpplysninger)
return SqlUtils.select(db, KILDE_TABLE, KilderRepository::mapKilder)
.where(WhereClause.in(VEDTAK_ID, vedtakIder))
.column("*")
.executeToList();
}

public void slettOpplysninger(long vedtakId) {
SqlUtils.delete(db, OPPLYSNING_TABLE)
public void slettKilder(long vedtakId) {
SqlUtils.delete(db, KILDE_TABLE)
.where(WhereClause.equals(VEDTAK_ID, vedtakId))
.execute();
}

private void insertOpplysning(String tekst, long vedtakId) {
SqlUtils.insert(db, OPPLYSNING_TABLE)
private void insertKilde(String tekst, long vedtakId) {
SqlUtils.insert(db, KILDE_TABLE)
.value(VEDTAK_ID, vedtakId)
.value(TEKST, tekst)
.execute();
}

@SneakyThrows
private static Opplysning mapOpplysninger(ResultSet rs) {
return new Opplysning()
private static Kilde mapKilder(ResultSet rs) {
return new Kilde()
.setVedtakId(rs.getLong(VEDTAK_ID))
.setTekst(rs.getString(TEKST));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
@Repository
public class OyblikksbildeRepository {

private final static String OYBLIKKSBILDE_TABLE = "OYBLIKKSBILDE";
public final static String OYBLIKKSBILDE_TABLE = "OYBLIKKSBILDE";
private final static String VEDTAK_ID = "VEDTAK_ID";
private final static String KILDE = "KILDE";
private final static String JSON = "JSON";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import lombok.SneakyThrows;
import no.nav.fo.veilarbvedtaksstotte.domain.DokumentSendtDTO;
import no.nav.fo.veilarbvedtaksstotte.domain.Opplysning;
import no.nav.fo.veilarbvedtaksstotte.domain.Kilde;
import no.nav.fo.veilarbvedtaksstotte.domain.Vedtak;
import no.nav.fo.veilarbvedtaksstotte.domain.enums.Hovedmal;
import no.nav.fo.veilarbvedtaksstotte.domain.enums.Innsatsgruppe;
Expand All @@ -19,16 +19,14 @@
import java.util.List;
import java.util.stream.Collectors;

import static no.nav.fo.veilarbvedtaksstotte.utils.DbUtils.nesteFraSekvens;
import static no.nav.fo.veilarbvedtaksstotte.utils.EnumUtils.getName;
import static no.nav.fo.veilarbvedtaksstotte.utils.EnumUtils.valueOf;

@Repository
public class VedtaksstotteRepository {

private final static String VEDTAK_TABLE = "VEDTAK";
private final static String VEDTAK_SEQ = "VEDTAK_SEQ";
private final static String VEDTAK_ID = "VEDTAK_ID";
public final static String VEDTAK_TABLE = "VEDTAK";
private final static String VEDTAK_ID = "ID";
private final static String AKTOR_ID = "AKTOR_ID";
private final static String HOVEDMAL = "HOVEDMAL";
private final static String INNSATSGRUPPE = "INNSATSGRUPPE";
Expand All @@ -46,12 +44,12 @@ public class VedtaksstotteRepository {
private final static String SENDT_TIL_BESLUTTER = "SENDT_TIL_BESLUTTER";

private final JdbcTemplate db;
private OpplysningerRepository opplysningerRepository;
private KilderRepository kilderRepository;

@Inject
public VedtaksstotteRepository(JdbcTemplate db, OpplysningerRepository opplysningerRepository) {
public VedtaksstotteRepository(JdbcTemplate db, KilderRepository kilderRepository) {
this.db = db;
this.opplysningerRepository = opplysningerRepository;
this.kilderRepository = kilderRepository;
}


Expand All @@ -65,10 +63,10 @@ public Vedtak hentUtkast(String aktorId) {
return null;
}

final List<String> opplysninger = opplysningerRepository
.hentOpplysningerForVedtak(vedtakUtenOpplysninger.getId())
final List<String> opplysninger = kilderRepository
.hentKilderForVedtak(vedtakUtenOpplysninger.getId())
.stream()
.map(Opplysning::getTekst)
.map(Kilde::getTekst)
.collect(Collectors.toList());

return vedtakUtenOpplysninger.setOpplysninger(opplysninger);
Expand Down Expand Up @@ -96,12 +94,12 @@ public List<Vedtak> hentVedtak(String aktorId) {
.column("*")
.executeToList();

List<Opplysning> opplysninger = opplysningerRepository.hentOpplysningerForAlleVedtak(vedtakListe);
List<Kilde> opplysninger = kilderRepository.hentKilderForAlleVedtak(vedtakListe);

vedtakListe.forEach(vedtak -> {
List<String> vedtakOpplysninger = opplysninger.stream()
.filter(o -> o.getVedtakId() == vedtak.getId())
.map(Opplysning::getTekst)
.map(Kilde::getTekst)
.collect(Collectors.toList());
vedtak.setOpplysninger(vedtakOpplysninger);
});
Expand Down Expand Up @@ -162,7 +160,6 @@ public void oppdaterUtkast(long vedtakId, Vedtak vedtak) {

public void insertUtkast(String aktorId, String veilederIdent, String veilederEnhetId, String veilederEnhetNavn) {
SqlUtils.insert(db, VEDTAK_TABLE)
.value(VEDTAK_ID, nesteFraSekvens(db, VEDTAK_SEQ))
.value(AKTOR_ID, aktorId)
.value(VEILEDER_IDENT, veilederIdent)
.value(VEILEDER_ENHET_ID, veilederEnhetId)
Expand Down
Loading

0 comments on commit 29d3036

Please sign in to comment.