# Data Store

The `DataStore` class provides an in-memory data store with an array-like interface. It's designed to manage a collection of items (often objects) with a rich set of methods for adding, removing, updating, and retrieving data.

You must create an instance of the `DataStore` to use it.

***

#### create

Creates a new, empty data store instance.

Example

```yaml
# (No arguments needed)
```

***

#### push

Adds an item to the end of the data store.

Parameters

* `item`: The item to add.

Example

```yaml
# item
{
  "id": 1,
  "name": "First Item"
}
```

Output

The new length of the data store.

***

#### pop

Removes and returns the item from the end of the data store.

Output

The removed item.

***

#### pushFront

Adds an item to the front of the data store.

Parameters

* `item`: The item to add.

Output

The new length of the data store.

***

#### popFront

Removes and returns the item from the front of the data store.

Output

The removed item.

***

#### length

Gets the current number of items in the data store.

Output

An integer representing the number of items.

***

#### get

Gets the item at a specific index.

Parameters

* `index`: The zero-based index of the item to retrieve.

Output

The item at the specified index.

***

#### set

Sets or replaces the value of an item at a specific index.

Parameters

* `index`: The zero-based index of the item to update.
* `value`: The new value to set.

***

#### update

Updates an item in the data store by merging new data into it. The item to be updated is found either by a `where` condition or by a matching `id` property.

Parameters

* `data`: An object containing the new properties to set on the item.
* `where`: An optional object with a single key-value pair that acts as a condition to find the item.

Example: Update using a where clause

This finds the item where the email property is '<test@example.com>' and updates its status.

```yaml
# data
{
  "status": "archived"
}
# where
email: 'test@example.com'
```

Example: Update using an id

If no where clause is given, the function looks for an item with an id that matches the id in the data object.

```yaml
# data
{
  "id": 123,
  "status": "completed"
}
```

***

#### indexOf

Returns the index of the first occurrence of a specific item.

Parameters

* `item`: The item to search for.

Output

The index of the item, or -1 if not found.

***

#### removeAt

Removes the item at a specific index.

Parameters

* `index`: The index of the item to remove.

Output

An array containing the single removed item.

***

#### includes

Checks if the data store contains a specific item.

Parameters

* `item`: The item to search for.

Output

true if the item exists, otherwise false.

***

#### clear

Removes all items from the data store.

***

#### toArray

Returns a shallow copy of all items in the data store as a standard array.

Output

An array containing all the items.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.heisenware.com/app-builder/build-backend/function-explorer/storage/data-store.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
