<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <artifactId>messaging-impl</artifactId>
    <name>messaging-impl</name>
    <packaging>jar</packaging>

    <parent>
        <groupId>ru.i-novus.messaging</groupId>
        <artifactId>messaging-pom</artifactId>
        <version>6.1.3</version>
    </parent>

    <properties>
        <jacoco.skip>false</jacoco.skip>
        <activation.version>2.1.3</activation.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>ru.i-novus.messaging</groupId>
            <artifactId>messaging-api</artifactId>
        </dependency>

        <dependency>
            <groupId>ru.i-novus.messaging</groupId>
            <artifactId>messaging-support-kafka</artifactId>
        </dependency>

        <dependency>
            <groupId>ru.i-novus.messaging</groupId>
            <artifactId>messaging-channel-api</artifactId>
        </dependency>

        <dependency>
            <groupId>net.n2oapp.platform</groupId>
            <artifactId>n2o-platform-starter-feign-client</artifactId>
            <type>pom</type>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>net.n2oapp.framework.security</groupId>
            <artifactId>security-admin-rest-api</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
        </dependency>
    
        <dependency>
            <groupId>com.github.blagerweij</groupId>
            <artifactId>liquibase-sessionlock</artifactId>
            <version>1.6.9</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jooq</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
        </dependency>

        <dependency>
            <groupId>net.n2oapp.platform</groupId>
            <artifactId>n2o-platform-starter-quartz</artifactId>
            <type>pom</type>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-java-sdk-s3</artifactId>
            <version>${amazonaws.version}</version>
        </dependency>

        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>

        <dependency>
        <groupId>jakarta.xml.bind</groupId>
        <artifactId>jakarta.xml.bind-api</artifactId>
        <version>3.0.0</version>
        </dependency>

        <!--TEST-->
        <dependency>
            <groupId>net.n2oapp.platform</groupId>
            <artifactId>n2o-platform-starter-test</artifactId>
            <type>pom</type>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-websocket</artifactId>
        </dependency>

        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>jooq-generate-source</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jooq</groupId>
                        <artifactId>jooq-codegen-maven</artifactId>
                        <version>${jooq.version}</version>
                        <executions>
                            <execution>
                                <goals>
                                    <goal>generate</goal>
                                </goals>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.postgresql</groupId>
                                <artifactId>postgresql</artifactId>
                                <version>${postgresql.version}</version>
                            </dependency>
                        </dependencies>
                        <configuration>
                            <jdbc>
                                <driver>org.postgresql.Driver</driver>
                                <url>jdbc:postgresql://localhost/messaging</url>
                                <user>postgres</user>
                                <password>postgres</password>
                            </jdbc>
                            <generator>
                                <database>
                                    <name>org.jooq.meta.postgres.PostgresDatabase</name>
                                    <includes>.*</includes>
                                    <inputSchema>messaging</inputSchema>
                                    <forcedTypes>
                                        <forcedType>
                                            <userType>ru.inovus.messaging.api.model.enums.Severity</userType>
                                            <converter>ru.inovus.messaging.impl.util.SeverityConverter</converter>
                                            <expression>.*\.severity</expression>
                                            <types>.*</types>
                                        </forcedType>
                                        <forcedType>
                                            <userType>ru.inovus.messaging.api.model.enums.AlertType</userType>
                                            <converter>ru.inovus.messaging.impl.util.AlertTypeConverter</converter>
                                            <expression>.*\.alert_type</expression>
                                            <types>.*</types>
                                        </forcedType>
                                        <forcedType>
                                            <userType>ru.inovus.messaging.api.model.enums.RecipientType</userType>
                                            <converter>ru.inovus.messaging.impl.util.RecipientTypeConverter</converter>
                                            <expression>.*\.recipient_type</expression>
                                            <types>.*</types>
                                        </forcedType>
                                        <forcedType>
                                            <userType>ru.inovus.messaging.api.model.enums.MessageStatusType</userType>
                                            <converter>ru.inovus.messaging.impl.util.MessageStatusTypeConverter</converter>
                                            <expression>.*\.message_recipient\.status</expression>
                                            <types>.*</types>
                                        </forcedType>
                                        <forcedType>
                                            <userType>ru.inovus.messaging.api.model.enums.MessageType</userType>
                                            <converter>ru.inovus.messaging.impl.util.MessageTypeConverter</converter>
                                            <expression>.*\.message_type</expression>
                                            <types>.*</types>
                                        </forcedType>
                                    </forcedTypes>
                                </database>
                                <target>
                                    <packageName>ru.inovus.messaging.impl.jooq</packageName>
                                    <directory>src/main/java</directory>
                                </target>
                            </generator>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
