Added Liquibase DB Migration. Closes #17
nclazz/nclazz-mail-relay/pipeline/head This commit looks good Details

pull/21/head
Niclas Thobaben 2022-02-15 16:54:42 +01:00
parent 11bd724c8f
commit 5efb429bb8
7 changed files with 167 additions and 2 deletions

5
.gitignore vendored
View File

@ -35,4 +35,7 @@ build/
*.db
application-dev.properties
application-dev.yml
application-dev.yml
### generated by liuibase-hiernate5 https://github.com/liquibase/liquibase/issues/2196
derby.log

48
pom.xml
View File

@ -32,6 +32,7 @@
<spotbugs.version>4.2.0</spotbugs.version>
<jacoco.version>0.8.7</jacoco.version>
<checkstyle.version>3.1.2</checkstyle.version>
<liquibase.version>4.3.5</liquibase.version>
</properties>
<dependencies>
@ -69,6 +70,11 @@
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>${liquibase.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
@ -139,6 +145,48 @@
</excludeProperties>
</configuration>
</plugin>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.version}</version>
<dependencies>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate5</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
</dependencies>
<configuration>
<changeLogFile>src/main/resources/db/master.xml</changeLogFile>
<diffChangeLogFile>src/main/resources/db/changelogs/diff/_changelog.xml</diffChangeLogFile>
<driver>org.h2.Driver</driver>
<url>jdbc:h2:~/migration</url>
<username>sa</username>
<referenceUrl>
hibernate:spring:de.nclazz.service.mailrelay?dialect=org.hibernate.dialect.H2Dialect&amp;
hibernate.physical\_naming\_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&amp;
hibernate.implicit\_naming\_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
</referenceUrl>
</configuration>
</plugin>
</plugins>
<testResources>
<testResource>

View File

@ -17,6 +17,7 @@ import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.util.ArrayList;
@ -50,6 +51,7 @@ public class Account {
@JsonIgnore
@OneToMany
@JoinColumn(name = "message_guid", referencedColumnName = "guid")
private final List<Message> sentMessages = new ArrayList<>();
public static Account of(@NonNull String name, @NonNull List<String> receivers) {

View File

@ -13,4 +13,6 @@ spring.mail.host=smtp.nclazz.de
spring.mail.port=25
spring.mail.protocol=smtp
nclazz.auth.token=${AUTH_TOKEN}
nclazz.auth.token=${AUTH_TOKEN}
spring.liquibase.change-log=classpath:db/master.xml

View File

@ -0,0 +1,75 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-1">
<createTable tableName="accounts">
<column name="guid" type="CHAR(36)">
<constraints nullable="false" primaryKey="true" primaryKeyName="accountsPK"/>
</column>
<column name="name" type="VARCHAR(255)"/>
<column name="token" type="VARCHAR(16)"/>
</createTable>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-2">
<createTable tableName="accounts_receivers">
<column name="account_guid" type="CHAR(36)">
<constraints nullable="false"/>
</column>
<column name="receivers" type="VARCHAR(255)"/>
</createTable>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-3">
<createTable tableName="accounts_sent_messages">
<column name="account_guid" type="CHAR(36)">
<constraints nullable="false"/>
</column>
<column name="sent_messages_guid" type="CHAR(36)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-4">
<createTable tableName="messages">
<column name="guid" type="CHAR(36)">
<constraints nullable="false" primaryKey="true" primaryKeyName="messagesPK"/>
</column>
<column name="account_guid" type="CHAR(36)"/>
<column name="subject" type="VARCHAR(255)"/>
<column name="content" type="CLOB"/>
<column name="from_address" type="VARCHAR(255)"/>
<column name="created_at" type="TIMESTAMP"/>
</createTable>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-5">
<createTable tableName="messages_receivers">
<column name="message_guid" type="CHAR(36)">
<constraints nullable="false"/>
</column>
<column name="receivers" type="VARCHAR(255)"/>
</createTable>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-6">
<addUniqueConstraint columnNames="sent_messages_guid" constraintName="UK_p8yctc0geuhssv7ghdsq6rhmu" tableName="accounts_sent_messages"/>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-7">
<createIndex indexName="IDX8yxeow0t327h4pp39wl7lnali" tableName="accounts">
<column name="token"/>
</createIndex>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-8">
<addForeignKeyConstraint baseColumnNames="message_guid" baseTableName="messages_receivers" constraintName="FK9vooi7dir04p8we6gides1jdy" deferrable="false" initiallyDeferred="false" referencedColumnNames="guid" referencedTableName="messages" validate="true"/>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-9">
<addForeignKeyConstraint baseColumnNames="account_guid" baseTableName="accounts_receivers" constraintName="FKamxf2r0aqd1xkuumikjpeostp" deferrable="false" initiallyDeferred="false" referencedColumnNames="guid" referencedTableName="accounts" validate="true"/>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-10">
<addForeignKeyConstraint baseColumnNames="account_guid" baseTableName="messages" constraintName="FKasa6p4yvkebuk2u1nrwfm0lv2" deferrable="false" initiallyDeferred="false" referencedColumnNames="guid" referencedTableName="accounts" validate="true"/>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-11">
<addForeignKeyConstraint baseColumnNames="sent_messages_guid" baseTableName="accounts_sent_messages" constraintName="FKnd7gj59ljxgt338iijbdu3p22" deferrable="false" initiallyDeferred="false" referencedColumnNames="guid" referencedTableName="messages" validate="true"/>
</changeSet>
<changeSet author="Niclas Thobaben (generated)" id="1644939549744-12">
<addForeignKeyConstraint baseColumnNames="account_guid" baseTableName="accounts_sent_messages" constraintName="FKoxyn335xryw98elniqfjyqko5" deferrable="false" initiallyDeferred="false" referencedColumnNames="guid" referencedTableName="accounts" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@ -0,0 +1,25 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.1.xsd">
<changeSet author="NiclasThobabenDev (generated)" id="1644940187120-1">
<addColumn tableName="messages">
<column name="message_guid" type="char(36)"/>
</addColumn>
</changeSet>
<changeSet author="NiclasThobabenDev (generated)" id="1644940187120-2">
<addForeignKeyConstraint baseColumnNames="message_guid" baseTableName="messages" constraintName="FKih9hqr479lv79cxjf1r5heo6l" deferrable="false" initiallyDeferred="false" referencedColumnNames="guid" referencedTableName="accounts" validate="true"/>
</changeSet>
<changeSet author="NiclasThobabenDev (generated)" id="1644940187120-3">
<dropForeignKeyConstraint baseTableName="ACCOUNTS_SENT_MESSAGES" constraintName="FKND7GJ59LJXGT338IIJBDU3P22"/>
</changeSet>
<changeSet author="NiclasThobabenDev (generated)" id="1644940187120-4">
<dropForeignKeyConstraint baseTableName="ACCOUNTS_SENT_MESSAGES" constraintName="FKOXYN335XRYW98ELNIQFJYQKO5"/>
</changeSet>
<changeSet author="NiclasThobabenDev (generated)" id="1644940187120-5">
<dropUniqueConstraint constraintName="UK_P8YCTC0GEUHSSV7GHDSQ6RHMU" tableName="ACCOUNTS_SENT_MESSAGES"/>
</changeSet>
<changeSet author="NiclasThobabenDev (generated)" id="1644940187120-6">
<dropTable tableName="ACCOUNTS_SENT_MESSAGES"/>
</changeSet>
</databaseChangeLog>

View File

@ -0,0 +1,10 @@
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
<include file="changelogs/01-jpa-auto-ddl-schema.xml" relativeToChangelogFile="true"/>
<include file="changelogs/02-renamed-join-columns.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>