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; }