Edits history of script submission #13963 for ' (windmill)'

  • bun
    export async function main(
      transaction_type: "insert" | "update" | "delete",
      schema_name: string,
      table_name: string,
      row: any,
      old_row?: any
    ) {
      console.log(`[Main] Transaction: ${transaction_type.toUpperCase()} on ${schema_name}.${table_name}`);
      console.log("[Main] New row data:", row);
    
      if (old_row) {
        console.log("[Main] Old row data (update/delete):", old_row);
      }
    
      // Example: specific action for "insert" on "users" table
      if (transaction_type === "insert" && table_name === "users" && row?.email) {
        console.log(`[Main] New user created: ${row.email}`);
        // sendWelcomeEmail(row.email);
      }
    
      // Example: log user email change
      if (transaction_type === "update" && table_name === "users" && old_row?.email !== row?.email) {
        console.log(`[Main] User updated email from ${old_row.email} to ${row.email}`);
        // notifyEmailChange(row.id);
      }
    }

    Submitted by dieriba.pro916 368 days ago

  • bun
    /**
     * General Trigger Preprocessor
     *
     * ⚠️ This function runs BEFORE the main function.
     *
     * It processes raw trigger data (e.g., MQTT, HTTP, SQS) before passing it to main().
     * Common tasks:
     * - Convert binary payloads to string/JSON
     * - Extract metadata
     * - Filter messages
     * - Add timestamps/context
     *
     * The returned object determines main() parameters:
     * - {a: 1, b: 2} → main(a, b)
     * - {msg} → main(msg)
     *
     * @param event - Trigger data (e.g., MQTT, HTTP, SQS)
     * @returns Processed data for main()
     */
    
    export async function preprocessor(
      event: {
        kind: 'postgres',
        transaction_type: "insert" | "update" | "delete",
        schema_name: string,
        table_name: string,
        row: any,
        old_row?: any
      },
    ) {
      if (event.kind === 'postgres') {
        console.log(`[Preprocessor] ${event.transaction_type.toUpperCase()} on ${event.schema_name}.${event.table_name}`);
    
        return {
          row: event.row,
          old_row: event.old_row
        };
      }
    
      throw new Error(`Expected postgres trigger kind, got: ${event.kind}`);
    }
    
    /**
     * Main Function - Handles processed trigger events
     *
     * ⚠️ Called AFTER preprocessor(), with its return values.
     *
     * @param row - New data inserted/updated
     * @param old_row - Previous data (for updates/deletes)
     */
    export async function main(
      row: any,
      old_row?: any
    ) {
      console.log("[Main] New row data:", row);
    
      if (old_row) {
        console.log("[Main] Old row data (update/delete):", old_row);
      }
    
      if (row && row.email) {
        console.log(`[Main] New user created: ${row.email}`);
        // sendWelcomeEmail(row.email)
      }
    }

    Submitted by dieriba.pro916 368 days ago