UNPKG

leds-spark-lib

Version:

Biblioteca de geração de código

42 lines (41 loc) 1.85 kB
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