leds-spark-lib
Version:
Biblioteca de geração de código
42 lines (41 loc) • 1.85 kB
JavaScript
import path from 'path';
import fs from 'fs';
import { isLocalEntity, isModule } from '../../models/model.js';
import { createPath } from '../../models/model.js';
import { expandToStringWithNL, toString } from 'langium/generate';
export function generateDebezium(model, target_folder) {
if (model.configuration) {
const name = model.configuration?.name?.toLowerCase() ?? "nodefined";
// criando a pasta que salva o SQL
const SQL_PATH = createPath(target_folder, "sql");
fs.writeFileSync(path.join(SQL_PATH, 'debezium.sql'), toString(generateDebeziumSQL(model)));
const REGISTER_PATH = createPath(target_folder, "register");
fs.writeFileSync(path.join(REGISTER_PATH, name + '-register.json'), toString(generateDebeziumRegister(model.configuration)));
}
}
function generateDebeziumSQL(model) {
return expandToStringWithNL `
${model.abstractElements.filter(isModule).map(module => module.elements.filter(isLocalEntity).map(entity => !entity.is_abstract ? `ALTER TABLE public.${entity.name.toLowerCase()} REPLICA IDENTITY FULL;` : undefined).join('\n')).join('\n')}
`;
}
function generateDebeziumRegister(configuration) {
const name = configuration?.name?.toLowerCase() ?? "nodefined";
return expandToStringWithNL `
{
"name": "${name}-connector",
"config": {
"connector.class": "io.debezium.connector.postgresql.PostgresConnector",
"tasks.max": "1",
"database.hostname": "db-pg",
"database.port": "5432",
"database.user": "postgres",
"database.password": "postgres",
"database.dbname" : "${name}",
"topic.prefix": "databases.${name}",
"topic.partitions": 3,
"schema.include.list": "public"
}
}
`;
}
//# sourceMappingURL=debezium-generator.js.map