# KvDriver

`interface` in `types` · v0.16.0

<https://seedcord.org/docs/packages/types/0.16.0/interfaces/kv-driver>

The backend behind `config.kv`. seedcord turns every value into JSON before it calls the driver, so
a driver only stores and returns strings. Each method may return its result directly or as a
promise.

`config.kv` also requires `Disposable` or `AsyncDisposable` on the driver. A node bot calls it
after the last shutdown phase to close the backend.

```ts
interface KvDriver
```

## Examples

```ts
class SqliteDriver implements KvDriver, Disposable { ... }
class RedisDriver implements KvDriver, AsyncDisposable { ... }
```

## Methods

### delete

```ts
delete(key: string): Promisable<void>
```

### entries

```ts
entries(
    prefix: string
): AsyncIterable<KvEntry> | Iterable<KvEntry>
```

Every key that starts with `prefix`, prefix included, with its value. Throw if the backend can't list its keys.

### get

```ts
get(
    key: string
): Promisable<string | undefined>
```

### set

```ts
set(
    key: string,
    value: string,
    ttlMs?: number
): Promisable<void>
```
