39 lines
1.6 KiB
JavaScript
39 lines
1.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.default = tableReplicationTriggerSQLGen;
|
|
const trigger_sql_gen_1 = __importDefault(require("./trigger-sql-gen"));
|
|
function tableReplicationTriggerSQLGen({ type, dstDbSchema, dstTableSchema, srcDbSchema, srcTableSchema, userId, paradigm, }) {
|
|
let sql = `CREATE TRIGGER`;
|
|
const srcColumns = srcTableSchema.fields
|
|
.map((fld) => fld.fieldName)
|
|
.filter((fld) => typeof fld == "string");
|
|
const dstColumns = dstTableSchema.fields
|
|
.map((fld) => fld.fieldName)
|
|
.filter((fld) => typeof fld == "string");
|
|
if (type.name == "after_insert") {
|
|
sql += ` INSERT INTO ${dstDbSchema.dbFullName}.${dstTableSchema.tableName}`;
|
|
sql += ` (${dstColumns.join(",")})`;
|
|
sql += ` VALUES (${dstColumns.map((c) => `NEW.${c}`).join(",")})`;
|
|
}
|
|
else if (type.name == "after_update") {
|
|
sql += ` UPDATE ${dstDbSchema.dbFullName}.${dstTableSchema.tableName}`;
|
|
sql += ` SET ${dstColumns.map((c) => `${c}=NEW.${c}`).join(",")}`;
|
|
sql += ` WHERE id = NEW.id`;
|
|
}
|
|
else if (type.name == "after_delete") {
|
|
sql += ` DELETE FROM ${dstDbSchema.dbFullName}.${dstTableSchema.tableName}`;
|
|
sql += ` WHERE id = OLD.id`;
|
|
}
|
|
return (0, trigger_sql_gen_1.default)({
|
|
content: sql,
|
|
srcDbSchema,
|
|
srcTableSchema,
|
|
type,
|
|
paradigm,
|
|
userId,
|
|
});
|
|
}
|