<?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">
    <parent>
        <groupId>org.qubership.atp.environments</groupId>
        <artifactId>parent-db-properties</artifactId>
        <version>2.0.2</version>
        <relativePath>../parent/parent-db-properties/pom.xml</relativePath>
    </parent>

    <modelVersion>4.0.0</modelVersion>

    <artifactId>env-q-classes-generation</artifactId>
    <name>env-q-classes-generation</name>
    <properties>
        <src.dir>src/main/java</src.dir>
        <src.dir.pg>${project.build.directory}/pg/java</src.dir.pg>
    </properties>
    <build>
        <!--Thru this definition we let know to IDE where from it must take generated sources.-->
        <sourceDirectory>${src.dir}</sourceDirectory>
    </build>
    <profiles>
        <profile>
            <id>db-postgresql</id>
            <activation>
                <property>
                    <name>stage</name>
                </property>
            </activation>
            <properties>
                <src.dir>${src.dir.pg}</src.dir>
            </properties>
        </profile>
        <profile>
            <id>migration-on-build-pg</id>
            <activation>
                <property>
                    <name>stage</name>
                    <value>test</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.querydsl</groupId>
                        <artifactId>querydsl-maven-plugin</artifactId>
                        <version>${querydsl.version}</version>
                        <executions>
                            <execution>
                                <phase>generate-sources</phase>
                                <id>generate-q-classes-postgresql</id>
                                <goals>
                                    <goal>export</goal>
                                </goals>
                                <configuration>
                                    <jdbcDriver>${pg.jdbc.Driver}</jdbcDriver>
                                    <jdbcUrl>${pg.jdbc.Url}</jdbcUrl>
                                    <jdbcUser>${pg.jdbc.User}</jdbcUser>
                                    <jdbcPassword>${pg.jdbc.Password}</jdbcPassword>
                                    <packageName>${querydslPackageName}</packageName>
                                    <targetFolder>${src.dir.pg}</targetFolder>
                                    <typeMappings>
                                        <typeMapping>
                                            <table>projects</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environments</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environments</table>
                                            <column>project_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environments</table>
                                            <column>category_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environments</table>
                                            <column>created_by</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environments</table>
                                            <column>modified_by</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environments</table>
                                            <column>source_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environment_categories</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>link_to_system_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>external_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>environment_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>category_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>created_by</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>modified_by</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>parent_system_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>systems</table>
                                            <column>source_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>system_categories</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>connections</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>connections</table>
                                            <column>system_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>connections</table>
                                            <column>created_by</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>connections</table>
                                            <column>modified_by</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>connections</table>
                                            <column>source_template_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>connections</table>
                                            <column>source_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>users</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>user_projects</table>
                                            <column>project_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>user_projects</table>
                                            <column>user_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>user_roles</table>
                                            <column>user_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>user_roles</table>
                                            <column>role_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>roles</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>roles</table>
                                            <column>parent_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>role_grands</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>role_grands</table>
                                            <column>entity_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>subscribers</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>subscriptions</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>subscriptions</table>
                                            <column>project_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>subscriptions</table>
                                            <column>environment_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>subscriptions</table>
                                            <column>system_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>subscriptions</table>
                                            <column>subscriber_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>update_events</table>
                                            <column>subscription_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>user_settings</table>
                                            <column>user_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>update_events</table>
                                            <column>entity_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>alerts</table>
                                            <column>id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>alerts</table>
                                            <column>subscriber_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>alert_events</table>
                                            <column>alert_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>alert_events</table>
                                            <column>entity_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environment_systems</table>
                                            <column>environment_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                        <typeMapping>
                                            <table>environment_systems</table>
                                            <column>system_id</column>
                                            <type>com.querydsl.sql.types.UtilUUIDType</type>
                                        </typeMapping>
                                    </typeMappings>
                                </configuration>
                            </execution>
                        </executions>
                        <dependencies>
                            <dependency>
                                <groupId>org.postgresql</groupId>
                                <artifactId>postgresql</artifactId>
                                <version>${postgresql.version}</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.15.0</version>
                        <executions>
                            <execution>
                                <id>pg-compile</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <compileSourceRoots>${src.dir.pg}</compileSourceRoots>
                                    <outputDirectory>${project.build.directory}/pg-classes/</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>pg-jar</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <finalName>${qclass.jar.name}</finalName>
                                    <outputDirectory>${project.build.directory}</outputDirectory>
                                    <descriptors>
                                        <descriptor>${project.basedir}/src/main/assembly-descriptors/pg.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

                </plugins>
            </build>
        </profile>
    </profiles>

    <dependencies>
        <dependency>
            <groupId>com.querydsl</groupId>
            <artifactId>querydsl-sql</artifactId>
        </dependency>
    </dependencies>
</project>
