Deleting data from data sources

(Enterprise customers only) Hoverfly Cloud supports the use of CSV data sources so that you can do key value data lookups and simulate persistence within your simulations.

Deleting data from a CSV Data Source

You can delete data from a CSV data source on the fly within your simulation just as if your API were deleting data from a real data source. The data is removed for the duration that the service is running. When the service is restarted, the data will revert to what was in the original uploaded CSV.

There are two ways to delete data.

  1. Using the {{csvDeleteRows}} function which will delete rows where a specified column matches a specified value

  2. Using the {{csvSqlCommand}} function which allows you to use a SQL like syntax to issue a DELETE SQL command which allows more conditions to be matched than csvDeleteRows.

For illustration we will use this data source called "pets":

idcategorynamestatus

1000

birds

Archie

available

1001

dogs

Zipper

available

1002

dogs

Teddy

sold

Method 1: Delete data with {{csvDeleteRows}}

This method deletes data where a column matches a value that you specify. It can also optionally return the number of rows deleted into the template, or into another function wrapping it.

Syntax:

{{csvDeleteRows '(data-source-name)' '(column-name)' '(query-value)' (output-result)}}

Template Example: Delete all birds and don't return the count

{{ csvDeleteRows 'pets' 'category' 'birds' false }}

Result:

In this case there will be no output from csvDeleteRows but the data in memory for all subsequent calls to the API simulation will be modified as follows:

idcategorynamestatus

1001

dogs

Zipper

available

1002

dogs

Teddy

sold

If the output-result flag had been set to true, then the function would have had the following output:

1

Method 2: Delete data with {{csvSqlCommand}}

A simplified SQL like syntax can be used to delete the data in a csv data source. (This syntax can also be used to SELECT and UPDATE from the data source. You cannot insert using this syntax however there is a mechanism which can be read about here.)

You can read more about using this SQL like syntax here.

Syntax:

{{ csvSqlCommand '(sql-delete-statement)' }}

Template Example: Delete all dogs whose ids are greater than 1001

{{ csvSqlCommand "DELETE FROM pets WHERE category = 'dogs' AND id > '1001'" }}

Result:

There is no output from a SQL DELETE statement but the data in memory for all subsequent calls to the API simulation will be modified as follows:

idcategorynamestatus

1000

birds

Archie

sold

1001

dogs

Zipper

available

s

Last updated