diff --git a/pom.xml b/pom.xml index 5037c4f..b97fc4f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.2.6.RELEASE + 2.2.2.RELEASE me.bearns diff --git a/src/main/java/me/bearns/fias/FiasApplication.java b/src/main/java/me/bearns/fias/FiasApplication.java index f427340..c028a80 100644 --- a/src/main/java/me/bearns/fias/FiasApplication.java +++ b/src/main/java/me/bearns/fias/FiasApplication.java @@ -5,7 +5,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; @SpringBootApplication -@EnableJpaRepositories("me.bearns.fias.repository") public class FiasApplication { public static void main(String[] args) { diff --git a/src/main/java/me/bearns/fias/config/ApplicationConfig.java b/src/main/java/me/bearns/fias/config/ApplicationConfig.java index 758d0b7..66f6bd0 100644 --- a/src/main/java/me/bearns/fias/config/ApplicationConfig.java +++ b/src/main/java/me/bearns/fias/config/ApplicationConfig.java @@ -10,7 +10,6 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,7 +18,7 @@ import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; @Configuration -@EnableJpaRepositories +@EnableJpaRepositories("me.bearns.fias.repository") @EnableTransactionManagement @PropertySource("application.properties") class ApplicationConfig { @@ -31,10 +30,6 @@ class ApplicationConfig { //@Profile("test") public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); - /*dataSource.setDriverClassName("org.h2.Driver"); - dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1"); - dataSource.setUsername("sa"); - dataSource.setPassword("sa");*/ dataSource.setDriverClassName(env.getProperty("spring.datasource.driverClassName")); dataSource.setUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username")); @@ -47,15 +42,12 @@ class ApplicationConfig { public LocalContainerEntityManagerFactoryBean entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); - vendorAdapter.setGenerateDdl(true); - - //DefaultPersistenceUnitManager persistenceUnitManager = new DefaultPersistenceUnitManager(); - //persistenceUnitManager.setDefaultDataSource(dataSource()); + vendorAdapter.setGenerateDdl(false); //use liquibase + vendorAdapter.setShowSql(true); //TODO Debug LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan(new String[] {"me.bearns.fias.domain", "me.bearns.fias.repository"}); - //factory.setPersistenceUnitManager(persistenceUnitManager); factory.setDataSource(dataSource()); return factory; } diff --git a/src/main/java/me/bearns/fias/domain/FiasVersion.java b/src/main/java/me/bearns/fias/domain/FiasVersion.java index 683d2a4..76a0e70 100644 --- a/src/main/java/me/bearns/fias/domain/FiasVersion.java +++ b/src/main/java/me/bearns/fias/domain/FiasVersion.java @@ -2,20 +2,46 @@ package me.bearns.fias.domain; import javax.persistence.Column; import javax.persistence.Id; - import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name = "version") public class FiasVersion { + + public FiasVersion(Long versionId, String textVersion, String fiasCompleteXmlUrl, String fiasDeltaXmlUrl) { + this.versionId = versionId; + this.textVersion = textVersion; + this.fiasCompleteXmlUrl = fiasCompleteXmlUrl; + this.fiasDeltaXmlUrl = fiasDeltaXmlUrl; + } + @Id @Column(name = "version_id") protected Long versionId; + @Column(name = "version_txt") protected String textVersion; + @Column(name = "xml_url") protected String fiasCompleteXmlUrl; + @Column(name = "delta_xml_url") protected String fiasDeltaXmlUrl; + + public Long getVersionId() { + return versionId; + } + + public String getTextVersion() { + return textVersion; + } + + public String getFiasCompleteXmlUrl() { + return fiasCompleteXmlUrl; + } + + public String getFiasDeltaXmlUrl() { + return fiasDeltaXmlUrl; + } } diff --git a/src/main/resources/db/changelog/000_initial_schema.yaml b/src/main/resources/db/changelog/000_initial_schema.yaml new file mode 100644 index 0000000..1c61a7c --- /dev/null +++ b/src/main/resources/db/changelog/000_initial_schema.yaml @@ -0,0 +1,20 @@ +databaseChangeLog: + - changeSet: + id: 1 + author: alex@bearns.me + changes: + - createTable: + tableName: version + columns: + - column: + name: version_id + type: number + constraints: + primaryKey: true + nullable: false + - column: + name: version_txt + type: number + - column: + name: xml_url + type: varchar diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml index c98330b..3610a33 100644 --- a/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/src/main/resources/db/changelog/db.changelog-master.yaml @@ -1,4 +1,4 @@ databaseChangeLog: - - changeSet: - id: 1 - author: alex@bearns.me \ No newline at end of file + - include: + - file: "000_initial_schema.yaml" + - relativeToChangelogFile: "true" \ No newline at end of file diff --git a/src/test/java/me/bearns/fias/FiasApplicationTests.java b/src/test/java/me/bearns/fias/FiasApplicationTests.java deleted file mode 100644 index 5fa4cdb..0000000 --- a/src/test/java/me/bearns/fias/FiasApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package me.bearns.fias; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class FiasApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/src/test/java/me/bearns/fias/VersionRepositoryTests.java b/src/test/java/me/bearns/fias/VersionRepositoryTests.java new file mode 100644 index 0000000..c9da8d8 --- /dev/null +++ b/src/test/java/me/bearns/fias/VersionRepositoryTests.java @@ -0,0 +1,49 @@ +/* + * Copyright 2002-2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package me.bearns.fias; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Optional; + +import me.bearns.fias.domain.FiasVersion; +import me.bearns.fias.repository.FiasVersionRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager; + +@DataJpaTest +public class VersionRepositoryTests { + @Autowired + private TestEntityManager entityManager; + + @Autowired + private FiasVersionRepository repository; + + @Test + public void testFindByLastName() { + FiasVersion fiasVersion = new FiasVersion(1L, "last", "c", "d"); + entityManager.persist(fiasVersion); + + Optional byId = repository.findById(fiasVersion.getVersionId()); + + FiasVersion version = byId.get(); + + assertThat(version).extracting(FiasVersion::getVersionId).isEqualTo(fiasVersion.getVersionId()); + } +}