datasquirel/package-shared/functions/dsql/triggers-and-stored-proceedures/trigger-sql-gen.ts
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

54 lines
1.2 KiB
TypeScript

import { DSQL_DatabaseSchemaType, DSQL_TableSchemaType } from "../../../types";
import grabTriggerName, { TriggerParadigms } from "./grab-trigger-name";
const TriggerTypes = [
{
name: "after_insert",
value: "INSERT",
},
{
name: "after_update",
value: "UPDATE",
},
{
name: "after_delete",
value: "DELETE",
},
] as const;
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) {
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;
}