Updates
This commit is contained in:
+2
@@ -0,0 +1,2 @@
|
||||
type Params = {};
|
||||
declare function createDuplicateTablesTriggers({}: Params): void;
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
"use strict";
|
||||
function createDuplicateTablesTriggers({}) { }
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
export declare const TriggerParadigms: readonly ["sync_tables", "sync_dbs"];
|
||||
type Params = {
|
||||
userId?: string | number;
|
||||
paradigm: (typeof TriggerParadigms)[number];
|
||||
dbId?: string | number;
|
||||
tableName?: string;
|
||||
};
|
||||
export default function grabTriggerName({ userId, paradigm, dbId, tableName, }: Params): string;
|
||||
export {};
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
export const TriggerParadigms = ["sync_tables", "sync_dbs"];
|
||||
export default function grabTriggerName({ userId, paradigm, dbId, tableName, }) {
|
||||
let triggerName = `dsql_trig_${paradigm}`;
|
||||
if (userId)
|
||||
triggerName += `_${userId}`;
|
||||
if (dbId)
|
||||
triggerName += `_${dbId}`;
|
||||
if (tableName)
|
||||
triggerName += `_${tableName}`;
|
||||
return triggerName;
|
||||
}
|
||||
Vendored
+20
@@ -0,0 +1,20 @@
|
||||
import { DSQL_DatabaseSchemaType, DSQL_TableSchemaType } from "../../../types";
|
||||
declare const TriggerTypes: readonly [{
|
||||
readonly name: "after_insert";
|
||||
readonly value: "INSERT";
|
||||
}, {
|
||||
readonly name: "after_update";
|
||||
readonly value: "UPDATE";
|
||||
}, {
|
||||
readonly name: "after_delete";
|
||||
readonly value: "DELETE";
|
||||
}];
|
||||
export type TriggerSQLGenParams = {
|
||||
type: (typeof TriggerTypes)[number];
|
||||
srcDbSchema: DSQL_DatabaseSchemaType;
|
||||
srcTableSchema: DSQL_TableSchemaType;
|
||||
content: string;
|
||||
proceedureName: string;
|
||||
};
|
||||
export default function triggerSQLGen({ type, srcDbSchema, srcTableSchema, content, proceedureName, }: TriggerSQLGenParams): string;
|
||||
export {};
|
||||
Vendored
+23
@@ -0,0 +1,23 @@
|
||||
const TriggerTypes = [
|
||||
{
|
||||
name: "after_insert",
|
||||
value: "INSERT",
|
||||
},
|
||||
{
|
||||
name: "after_update",
|
||||
value: "UPDATE",
|
||||
},
|
||||
{
|
||||
name: "after_delete",
|
||||
value: "DELETE",
|
||||
},
|
||||
];
|
||||
export default function triggerSQLGen({ type, srcDbSchema, srcTableSchema, content, proceedureName, }) {
|
||||
let sql = `DELIMITER //\n`;
|
||||
sql += `CREATE PROCEDURE ${proceedureName}`;
|
||||
sql += `\nBEGIN`;
|
||||
sql += ` ${content}`;
|
||||
sql += `\nEND //`;
|
||||
sql += `\nDELIMITER\n`;
|
||||
return sql;
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
import { DSQL_DatabaseSchemaType, DSQL_TableSchemaType } from "../../../types";
|
||||
import { TriggerSQLGenParams } from "./trigger-sql-gen";
|
||||
type Params = TriggerSQLGenParams & {
|
||||
dstDbSchema: DSQL_DatabaseSchemaType;
|
||||
dstTableSchema: DSQL_TableSchemaType;
|
||||
};
|
||||
export default function tableReplicationTriggerSQLGen({ type, dstDbSchema, dstTableSchema, srcDbSchema, srcTableSchema, userId, paradigm, }: Params): string;
|
||||
export {};
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
import triggerSQLGen from "./trigger-sql-gen";
|
||||
export default 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 triggerSQLGen({
|
||||
content: sql,
|
||||
srcDbSchema,
|
||||
srcTableSchema,
|
||||
type,
|
||||
paradigm,
|
||||
userId,
|
||||
});
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
import { DSQL_DatabaseSchemaType, DSQL_TableSchemaType } from "../../../types";
|
||||
import { TriggerParadigms } from "./grab-trigger-name";
|
||||
declare const TriggerTypes: readonly [{
|
||||
readonly name: "after_insert";
|
||||
readonly value: "INSERT";
|
||||
}, {
|
||||
readonly name: "after_update";
|
||||
readonly value: "UPDATE";
|
||||
}, {
|
||||
readonly name: "after_delete";
|
||||
readonly value: "DELETE";
|
||||
}];
|
||||
export type TriggerSQLGenParams = {
|
||||
type: (typeof TriggerTypes)[number];
|
||||
srcDbSchema: DSQL_DatabaseSchemaType;
|
||||
srcTableSchema: DSQL_TableSchemaType;
|
||||
content: string;
|
||||
userId?: string | number;
|
||||
paradigm: (typeof TriggerParadigms)[number];
|
||||
};
|
||||
export default function triggerSQLGen({ type, srcDbSchema, srcTableSchema, content, userId, paradigm, }: TriggerSQLGenParams): string;
|
||||
export {};
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
import grabTriggerName from "./grab-trigger-name";
|
||||
const TriggerTypes = [
|
||||
{
|
||||
name: "after_insert",
|
||||
value: "INSERT",
|
||||
},
|
||||
{
|
||||
name: "after_update",
|
||||
value: "UPDATE",
|
||||
},
|
||||
{
|
||||
name: "after_delete",
|
||||
value: "DELETE",
|
||||
},
|
||||
];
|
||||
export default function triggerSQLGen({ type, srcDbSchema, srcTableSchema, content, userId, paradigm, }) {
|
||||
let sql = `CREATE TRIGGER`;
|
||||
let triggerName = grabTriggerName({
|
||||
paradigm,
|
||||
dbId: srcDbSchema.id,
|
||||
tableName: srcTableSchema.tableName,
|
||||
userId,
|
||||
});
|
||||
sql += ` ${triggerName}`;
|
||||
sql += ` AFTER ${type.value} ON ${srcTableSchema.tableName}`;
|
||||
sql += ` FOR EACH ROW BEGIN`;
|
||||
sql += ` ${content}`;
|
||||
sql += ` END`;
|
||||
return sql;
|
||||
}
|
||||
Reference in New Issue
Block a user