# KeyValueStorageManager\<T>

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:9](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L9)

Simple `IStorageManager` adapter built on top of any `IKeyValueStorage` backend.

This is intended for chain-storage style data where values are accessed by id and no in-memory indexes are required.

## Type Parameters

| Type Parameter                                                                                                             | Default type                                                                                                 |
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `T` *extends* [`StorageObject`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/StorageObject.md) | [`StorageObject`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/StorageObject.md) |

## Implements

* [`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md)<`T`>

## Constructors

### Constructor

```
new KeyValueStorageManager<T>(storageBackend): KeyValueStorageManager<T>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:20](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L20)

#### Parameters

| Parameter        | Type                                                                                                                                                |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `storageBackend` | [`IKeyValueStorage`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-storage-memory-indexed-kv/src/interfaces/IKeyValueStorage.md)<`boolean`> |

#### Returns

`KeyValueStorageManager`<`T`>

## Properties

### data

```
data: object = {};
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:13](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L13)

In-memory cache of stored objects, keyed by hash

#### Index Signature

```
[hash: string]: T
```

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`data`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#data)

***

### removeDataArr()?

```
optional removeDataArr: (keys) => Promise<void>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:18](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L18)

Removes multiple objects from storage (optional batch operation)

#### Parameters

| Parameter | Type        | Description                    |
| --------- | ----------- | ------------------------------ |
| `keys`    | `string`\[] | Array of identifiers to remove |

#### Returns

`Promise`<`void`>

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`removeDataArr`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#removedataarr)

***

### saveDataArr()?

```
optional saveDataArr: (values) => Promise<void>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:17](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L17)

Saves multiple objects to storage (optional batch operation)

#### Parameters

| Parameter | Type        | Description                      |
| --------- | ----------- | -------------------------------- |
| `values`  | `object`\[] | Array of id-object pairs to save |

#### Returns

`Promise`<`void`>

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`saveDataArr`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#savedataarr)

***

### storageBackend

```
storageBackend: IKeyValueStorage<boolean>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:11](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L11)

## Methods

### init()

```
init(): Promise<void>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:43](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L43)

Initializes the storage backend

#### Returns

`Promise`<`void`>

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`init`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#init)

***

### loadData()

```
loadData(type): Promise<T[]>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:57](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L57)

Loads all stored objects and deserializes them using the provided constructor

#### Parameters

| Parameter | Type            | Description                                     |
| --------- | --------------- | ----------------------------------------------- |
| `type`    | (`data`) => `T` | Constructor function to instantiate each object |

#### Returns

`Promise`<`T`\[]>

Array of deserialized objects

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`loadData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#loaddata)

***

### removeData()

```
removeData(hash): Promise<void>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:52](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L52)

Removes an object from storage

#### Parameters

| Parameter | Type     | Description                        |
| --------- | -------- | ---------------------------------- |
| `hash`    | `string` | Identifier of the object to remove |

#### Returns

`Promise`<`void`>

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`removeData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#removedata)

***

### saveData()

```
saveData(hash, object): Promise<void>;
```

Defined in: [atomiq-storage-memory-indexed-kv/src/KeyValueStorageManager.ts:47](https://github.com/atomiqlabs/atomiq-storage-memory-indexed-kv/blob/e65067d59b4e9456247363a9f25e09e57be9f4c1/src/KeyValueStorageManager.ts#L47)

Saves an object to storage

#### Parameters

| Parameter | Type     | Description                      |
| --------- | -------- | -------------------------------- |
| `hash`    | `string` | Unique identifier for the object |
| `object`  | `T`      | Object to save                   |

#### Returns

`Promise`<`void`>

#### Implementation of

[`IStorageManager`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md).[`saveData`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/interfaces/IStorageManager.md#savedata)
