From a5769645fa19dfb51e1a9f78db7b191496609f9d Mon Sep 17 00:00:00 2001 From: pranshi06 <85474619+pranshi06@users.noreply.github.com> Date: Fri, 20 Jan 2023 13:18:05 +0530 Subject: [PATCH] docs: update methods to remove event triggers PR-URL: https://github.com/hasura/graphql-engine-mono/pull/7518 Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Sean Park-Ross <94021366+seanparkross@users.noreply.github.com> GitOrigin-RevId: 42fce71de2349d8fcafcb4bcd66f343e7d58246f --- .../event-triggers/clean-up/_category_.json | 4 + .../event-triggers/remove-event-triggers.mdx | 124 +++++++++++++----- ...ent-triggers_delete-event-trigger_2-17.png | Bin 0 -> 27996 bytes 3 files changed, 96 insertions(+), 32 deletions(-) create mode 100644 docs/docs/event-triggers/clean-up/_category_.json create mode 100644 docs/static/img/event-triggers/event-triggers_delete-event-trigger_2-17.png diff --git a/docs/docs/event-triggers/clean-up/_category_.json b/docs/docs/event-triggers/clean-up/_category_.json new file mode 100644 index 00000000000..e27e96c9217 --- /dev/null +++ b/docs/docs/event-triggers/clean-up/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Clean up event data", + "position": 7 +} \ No newline at end of file diff --git a/docs/docs/event-triggers/remove-event-triggers.mdx b/docs/docs/event-triggers/remove-event-triggers.mdx index 17522eb2532..2a71d1c59ab 100644 --- a/docs/docs/event-triggers/remove-event-triggers.mdx +++ b/docs/docs/event-triggers/remove-event-triggers.mdx @@ -1,6 +1,6 @@ --- sidebar_label: Remove Event Triggers -sidebar_position: 1 +sidebar_position: 8 description: Remove Event Triggers keywords: - hasura @@ -16,35 +16,95 @@ import Thumbnail from '@site/src/components/Thumbnail'; # Remove Event Triggers -## Removing an Event Trigger via Metadata API +## Removing Event Triggers -An Event Trigger can be removed using the following Metadata API **only when the Metadata is consistent with the -database**. +Event Triggers can be removed using the Hasura Console, Hasura CLI, or Metadata APIs. -- **delete_event_trigger**: Refer to the - [pg_delete_event_trigger](/api-reference/metadata-api/event-triggers.mdx#metadata-pg-delete-event-trigger) API to - remove an Event Trigger in a Postgres source -- **untrack_table**: Refer to the - [pg_untrack_table](/api-reference/metadata-api/table-view.mdx/#metadata-pg-untrack-table) API to untrack a table - present in a Postgres source -- **drop_source**: Refer to the [pg_drop_source](/api-reference/metadata-api/source.mdx/#metadata-pg-drop-source) API to - drop a Postgres source + + -The following Metadata APIs can be used to remove an Event Trigger even with inconsistent metadata, although it may -leave a Hasura footprint in the database: +Open the Hasura Console, head to the `Events` tab, click on the Event Trigger you want to delete, and click on the +`Delete Event Trigger` button at the bottom of the page: -- **replace_metadata**: Refer to the - [replace_metadata](/api-reference/metadata-api/manage-metadata.mdx/#metadata-replace-metadata) API to replace an - existing Metadata with new metadata -- **clear_metadata**: Refer to the - [clear_metadata](/api-reference/metadata-api/manage-metadata.mdx/#metadata-clear-metadata) to clear the metadata + + + + + +You can remove an Event Trigger for a table by updating the `databases > [source-name] > tables > [table-name].yaml` file +inside the `metadata` directory and removing the event trigger from it: + +```yaml {4-12} +- table: + schema: public + name: author +event_triggers: + - name: author_trigger + definition: + enable_manual: false + insert: + columns: "*" + update: + columns: "*" + webhook: https://httpbin.org/post +``` + +Apply the Metadata by running: + +```bash +hasura metadata apply +``` + + + + +You can delete Event Triggers by using the appropriate Metadata API, either: +[pg_delete_event_trigger](/api-reference/metadata-api/event-triggers.mdx#metadata-pg-delete-event-trigger) or +[mssql_delete_event_trigger](/api-reference/metadata-api/event-triggers.mdx#metadata-mssql-delete-event-trigger). + +To delete an Event Trigger via the the Metadata API, replace `` with the following: + +- **Postgres**: `pg_delete_event_trigger` +- **MSSQL**: `mssql_delete_event_trigger` + +```http +POST /v1/metadata HTTP/1.1 +Content-Type: application/json +X-Hasura-Role: admin + +{ + "type" : "", + "args" : { + "name": "author_trigger", + "source": "default" + } +} +``` + + + + + +Event Triggers for a table or source will also get dropped if the corresponding +[table](/api-reference/metadata-api/table-view.mdx/#metadata-pg-untrack-table)/[source](/api-reference/metadata-api/source.mdx/#metadata-pg-drop-source) +is dropped. + +:::info Warning + +An Event Trigger can be removed using the above methods (Delete Event Trigger, Drop Table or Drop Source) only when the metadata is consistent. + +If the metadata is inconsistent, then an Event Trigger can be dropped using "[Replace Metadata](/api-reference/metadata-api/manage-metadata.mdx/#metadata-replace-metadata)" or "[Clear Metadata](/api-reference/metadata-api/manage-metadata.mdx/#metadata-clear-metadata)" +methods. This may leave some footprint in the source which can be cleaned manually as described in the following +section. + +::: -Refer to the following sections on cleaning up Hasura footprints manually from the database. ## Clean up Event Trigger footprints manually -When an Event Trigger is created, Hasura creates SQL triggers on the table corresponding to each operation mentioned in -the Event Trigger configuration (INSERT/UPDATE/DELETE). +When an Event Trigger is created, Hasura creates SQL triggers on the table corresponding to each database operation +(`INSERT`/`UPDATE`/`DELETE`) described in the Event Trigger configuration. When an inconsistent Table/Event Trigger is removed via the `replace_metadata` API, it may leave orphaned SQL triggers in the database. The following command can be used to manually delete SQL triggers corresponding to an Event Trigger on @@ -61,19 +121,19 @@ For example: to delete SQL triggers corresponding to an Event Trigger: `users_al DROP FUNCTION hdb_catalog."notify_hasura_users_all_INSERT" CASCADE; ``` -:::info Note +:::info Deleting all triggers The SQL trigger should be deleted for each operation mentioned in the Event Trigger configuration, i.e. -INSERT/UPDATE/DELETE +`INSERT`/`UPDATE`/`DELETE` ::: ## Clean up Hasura footprints from a source manually {#clean-footprints-manually} -When an inconsistent source is dropped, it may leave Hasura footprint in the database due to Event Triggers. The -following can be used to remove all footprint of Event Triggers present in a source from the database: +When a source in an inconsistent state is dropped, it may leave Hasura footprints in the database due to Event Triggers. +The following can be used to remove all footprints of Event Triggers present in a source from the database: -### Case 1: When using a different Metadata database from the source database +### Case 1: When using a different Metadata database to the source database In this case, `hdb_metadata` table is not present in `hdb_catalog` schema of the source. @@ -85,12 +145,12 @@ DROP SCHEMA IF EXISTS hdb_catalog; ### Case 2: When the Metadata database and source database are the same -In this case, a `hdb_metadata` table is present in `hdb_catalog` schema of the source. You may want to preserve the +In this case, a `hdb_metadata` table is present in the `hdb_catalog` schema of the source. You may want to preserve the Metadata but remove the remaining Hasura footprint of a few tables for Event Triggers and corresponding SQL triggers. -**Step 1:** In order to drop the SQL triggers corresponding to Event Triggers created, please refer to the [clean up -Event Trigger footprints manually](/event-triggers/remove-event-triggers.mdx/#clean-up-event-trigger-footprints-manually) section. -Alternatively, the following command can be used to drop all SQL triggers in the source: +**Step 1:** In order to drop the SQL triggers corresponding to Event Triggers created, please refer to the +[clean up Event Trigger footprints manually](/event-triggers/remove-event-triggers.mdx/#clean-up-event-trigger-footprints-manually) +section. Alternatively, the following command can be used to drop all SQL triggers in the source: ```sql do $$ @@ -116,7 +176,7 @@ DROP TABLE IF EXISTS hdb_catalog.event_log; DROP TABLE IF EXISTS hdb_catalog.hdb_event_log_cleanups; ``` -:::info Note +:::info Execute as single transaction It is recommended to perform the above steps in a single transaction. diff --git a/docs/static/img/event-triggers/event-triggers_delete-event-trigger_2-17.png b/docs/static/img/event-triggers/event-triggers_delete-event-trigger_2-17.png new file mode 100644 index 0000000000000000000000000000000000000000..112cf1919d39fc5f3194c114e249cc232b0cda22 GIT binary patch literal 27996 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 hk$?4#v(5WQsaL=+~t^QkK_{s|8ww{x2bRRB`|S literal 0 HcmV?d00001