public String createInsertTriggerFunctionSql()

in persistence-commons/persistence-commons-reporting-parent/persistence-commons-reporting-postgresql-base/src/main/java/org/kie/kogito/persistence/postgresql/reporting/database/sqlbuilders/PostgresTriggerInsertSqlBuilder.java [88:138]


    public String createInsertTriggerFunctionSql(final PostgresContext context) {
        final StringBuilder fieldsSql = new StringBuilder();
        final String mappingId = context.getMappingId();
        final String sourceTableJsonFieldName = context.getSourceTableJsonFieldName();
        final String targetTableName = context.getTargetTableName();
        final List<PathSegment> mappingPaths = context.getMappingPaths();
        final List<PostgresField> simpleMappings = new ArrayList<>();
        simpleMappings.addAll(context.getSourceTableIdentityFields());
        simpleMappings.addAll(context
                .getSourceTablePartitionFields()
                .stream()
                .map(pf -> new PostgresField(pf.getFieldName()))
                .collect(Collectors.toList()));

        final List<PostgresTerminalPathSegment> fields = new ArrayList<>();
        walkMappingPathSegmentsForTerminals(mappingPaths, fields::add);
        if (!fields.isEmpty()) {
            fieldsSql.append(fields.stream()
                    .map(f -> buildTargetFieldMappingSql(f, sourceTableJsonFieldName))
                    .collect(Collectors.joining(", " + String.format("%n"))));
        }

        final List<JoinPathSegment> from = new ArrayList<>();
        for (PathSegment mappingPath : mappingPaths) {
            walkMappingPathSegmentsForJoins(mappingPath, from::add);
        }
        if (from.isEmpty()) {
            fieldsSql.append(";");
        } else {
            fieldsSql.append(String.format("%n  FROM %n%s;",
                    from
                            .stream()
                            .map(f -> buildJoinSql(f, sourceTableJsonFieldName))
                            .collect(Collectors.joining(", " + String.format("%n")))));
        }

        final StringBuilder sql = new StringBuilder();
        sql.append(String.format(CREATE_INSERT_TRIGGER_FUNCTION_TEMPLATE,
                mappingId,
                targetTableName,
                simpleMappings
                        .stream()
                        .map(PostgresTriggerInsertSqlBuilder::buildTargetIdentityFieldSql)
                        .collect(Collectors.joining(", " + String.format("%n"))),
                fieldsSql));

        if (LOGGER.isInfoEnabled()) {
            LOGGER.info(String.format("Create INSERT TRIGGER FUNCTION SQL:%n%s", sql));
        }
        return sql.toString();
    }