# Interface: StorageProvider

Defined in: [packages/core/src/storage/storage-provider.ts:40](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L40)

## Methods

### addVersion()

```ts
addVersion(version): Promise<void>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:45](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L45)

Takes in a version of a record: it becomes current if it supersedes the
current one, and is kept or dropped otherwise. Idempotent.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `version` | [`Version`](https://minca.dev/api/core/interfaces/Version.md) |

#### Returns

`Promise`\<`void`\>

***

### close()

```ts
close(): Promise<void>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:78](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L78)

Close the storage adapter.

#### Returns

`Promise`\<`void`\>

***

### fingerprint()

```ts
fingerprint(): Promise<string>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:74](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L74)

One fingerprint of everything kept, hex. Equal fingerprints mean the
same versions kept — for status, and for tests.

#### Returns

`Promise`\<`string`\>

***

### getCurrent()

```ts
getCurrent(key): Promise<
  | Version<unknown>
| null>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:51](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L51)

The current version of a record — possibly a delete.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `key` | `string` |

#### Returns

`Promise`\<
  \| [`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>
  \| `null`\>

***

### getGenesis()

```ts
getGenesis(key): Promise<
  | Version<unknown>
| null>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:53](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L53)

The record's first version, when it has been edited and so is stored apart.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `key` | `string` |

#### Returns

`Promise`\<
  \| [`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>
  \| `null`\>

***

### getVersion()

```ts
getVersion(id): Promise<
  | Version<unknown>
| null>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:49](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L49)

A version by its id, current or not, if this store holds it.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `id` | `string` |

#### Returns

`Promise`\<
  \| [`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>
  \| `null`\>

***

### histories()

```ts
histories(prefix): Promise<Map<string, Version<unknown>[]>>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:57](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L57)

[history](#history) for every record whose key starts with `prefix`, reading only those entries.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `prefix` | `string` |

#### Returns

`Promise`\<`Map`\<`string`, [`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[]\>\>

***

### history()

```ts
history(key): Promise<Version<unknown>[]>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:55](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L55)

Every version of a record this store keeps: current, first, and retained. Newest first.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `key` | `string` |

#### Returns

`Promise`\<[`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[]\>

***

### invalidate()

```ts
invalidate(): void;
```

Defined in: [packages/core/src/storage/storage-provider.ts:76](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L76)

Forgets what was read into memory: another writer changed the store underneath.

#### Returns

`void`

***

### items()

```ts
items(collection): Promise<ItemSet>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:67](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L67)

The versions kept in one collection, as sync compares them: sorted, with sums.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `collection` | `string` |

#### Returns

`Promise`\<[`ItemSet`](https://minca.dev/api/core/classes/ItemSet.md)\>

***

### keptVersions()

```ts
keptVersions(collection): Promise<Version<unknown>[]>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:65](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L65)

Every version kept in one collection, current or not, superseded ones as their stubs.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `collection` | `string` |

#### Returns

`Promise`\<[`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[]\>

***

### listCurrent()

```ts
listCurrent(): Promise<Version<unknown>[]>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:59](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L59)

Current versions of every record, deletes included.

#### Returns

`Promise`\<[`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[]\>

***

### queryVersions()

```ts
queryVersions(collection): Promise<Version<unknown>[]>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:61](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L61)

Current versions in one collection, deletes included — found through the store's collection index.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `collection` | `string` |

#### Returns

`Promise`\<[`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[]\>

***

### removeVersion()

```ts
removeVersion(id): Promise<void>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:47](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L47)

Drops a version from the store and wherever it is indexed.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `id` | `string` |

#### Returns

`Promise`\<`void`\>

***

### sums()

```ts
sums(): Promise<ReadonlyMap<string, Sum>>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:69](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L69)

Every collection this store keeps anything in, and the sum of its version ids.

#### Returns

`Promise`\<`ReadonlyMap`\<`string`, [`Sum`](https://minca.dev/api/core/interfaces/Sum.md)\>\>

***

### versionIds()

```ts
versionIds(): Promise<string[]>;
```

Defined in: [packages/core/src/storage/storage-provider.ts:63](https://github.com/leifriksheim/minca/blob/main/core/src/storage/storage-provider.ts#L63)

The id of every version this store keeps — current, first and retained.

#### Returns

`Promise`\<`string`[]\>
