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();
}